這篇文章主要介紹如何使用CodeBenchmark對邏輯代碼進(jìn)行并發(fā)測試,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
站在用戶的角度思考問題,與客戶深入溝通,找到淶源網(wǎng)站設(shè)計與淶源網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋淶源地區(qū)。
CodeBenchmark
是基于netstandard2.0
開發(fā),適用于支持這一版本的.net core
和.net framework
環(huán)境;運(yùn)行系統(tǒng)則看情況需要可部署到linux
或windows
,開發(fā)語言c#
.
可以通過vs
或vscode
構(gòu)建一個控制臺項目然后引用組件(引用最新版本的BeetleX.CodeBenchmark
)
Install-Package BeetleX.CodeBenchmark -Version 0.6.2
引用組件后就可以編寫具體的測試用例,測試用例編寫必須符合組件測試要求,所以需要實現(xiàn)一個接口來編寫測試代碼,接口描述如下:
public interface IExample:IDisposable { void Initialize(Benchmark benchmark); Task Execute(); }
Initialize
方法用于描述并發(fā)實例創(chuàng)建時初始化信息執(zhí)行
Execute
并發(fā)實例每次執(zhí)行的代碼邏輯
測試代碼可以針對自己的業(yè)務(wù)情況來編寫,具體的業(yè)務(wù)邏輯可以是http,數(shù)據(jù)庫訪問等操作.
[System.ComponentModel.Category("TCP")] public class WebsocketJson : IExample { public async Task Execute() { var request = new { url = "/json" }; var result = await jsonClient.ReceiveFrom(request); } private BeetleX.Http.WebSockets.JsonClient jsonClient; public void Initialize(Benchmark benchmark) { jsonClient = new BeetleX.Http.WebSockets.JsonClient("ws://192.168.2.19:8080"); } public void Dispose() { jsonClient.Dispose(); } }
[System.ComponentModel.Category("TCP")] public class TcpTextLine : IExample { public async Task Execute() { var data = $"henryfan@{DateTime.Now}"; var stream = await mClient.ReceiveFrom(s => s.WriteLine(data)); stream.ReadLine(); } private BeetleX.Clients.AsyncTcpClient mClient; public void Initialize(Benchmark benchmark) { mClient = BeetleX.SocketFactory.CreateClient("192.168.2.19", 9012); } public void Dispose() { mClient.Dispose(); } }
[System.ComponentModel.Category("TCP")] class HttpGet : IExample { public void Dispose() { } public async Task Execute() { var result = await _httpHandler.json(); } public void Initialize(Benchmark benchmark) { if (_httpApi == null) { _httpApi = new BeetleX.Http.Clients.HttpClusterApi(); _httpApi.DefaultNode.Add("http://192.168.2.19:8080"); _httpHandler = _httpApi.Create(); } } static BeetleX.Http.Clients.HttpClusterApi _httpApi; static IHttpHandler _httpHandler; [BeetleX.Http.Clients.FormUrlFormater] public interface IHttpHandler { // http://host/json Task json(); } }
以上基礎(chǔ)的測試用例都可以從https://github.com/IKende/CodeBenchmarkDoc 獲取得到.
組件在運(yùn)行用例的時候并不需要配置,只需要構(gòu)建測試對象并把有測試用例的程序集注冊進(jìn)去即可完成.
Benchmark benchmark = new Benchmark(); benchmark.Register(typeof(Program).Assembly); benchmark.Start();
以上代碼是加載本項的程序集,并啟動一個測試管理界面.默認(rèn)開啟的服務(wù)端口是9090
,可以在Start
方法指定服務(wù)的端口.啟動日志如下:
通過日志可以查看到服務(wù)啟動情況,運(yùn)行成功后就可以通過瀏覽器訪問并進(jìn)行測試
也可以運(yùn)行多個測試用例,并對比它們的性能.
以上是“如何使用CodeBenchmark對邏輯代碼進(jìn)行并發(fā)測試”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!