.net core如何利用ConcurrentTest組件對方法進行壓力測試詳解
前言
工欲善其事,必先利其器!在編寫服務(wù)中首先要有一個好的測試工具,在dontecore下性能測試有BenchmarkDotNet,只需要簡單的配置一下就可以對方法的性能進行詳細的測試。但有時候需要對不同并發(fā)下看其處理效率和延時統(tǒng)計查看,如HTTP服務(wù)對應(yīng)著大量的測試工具如ab,bombardier等等。由于找不到類似于測試HTTP服務(wù)的工具來測試代碼用例,于時就有了ConcurrentTest這個組件的實現(xiàn).通過ConcurrentTest組件可以運行不同的測試用例,并可以實時查看具體的并發(fā)情況和延時分布數(shù)據(jù)。
以下介紹一下如何使用ConcurrentTest運行測試用例并統(tǒng)計運行結(jié)果,話不多說了,來一起看看詳細的介紹吧
引用組件
Install-Package BeetleX.ConcurrentTest -Version 0.2.8
WebAPI服務(wù)
[Route("api/[controller]")]
[ApiController]
public class EmployeeController : ControllerBase
{
[HttpGet("{count}")]
public JsonResult Get(int count)
{
return new JsonResult(Employee.GetEmployees(count));
}
[HttpPost]
public JsonResult Post([FromBody]Employee value)
{
return new JsonResult(value);
}
}
以上是一個簡單的dotnet core WebApi服務(wù),主要是提供了雇員獲取和添加功能。
測試用例
public class FastHttpClientTest
{
public FastHttpClientTest()
{
httpApiClient = new HttpApiClient(Host);
clientApi = httpApiClient.CreateWebapi<IHttpClientApi>();
}
private string Host = "http://localhost:8007";
private BeetleX.FastHttpApi.HttpApiClient httpApiClient;
private IHttpClientApi clientApi;
[CTestCase]
public void AddEmployee()
{
clientApi.AddEmployee(Employee.GetEmployee());
}
[CTestCase]
public void ListEmployees()
{
clientApi.ListEmployees(2);
}
[JsonFormater]
public interface IHttpClientApi
{
[Get(Route = "api/employee/{count}")]
List<Employee> ListEmployees(int count);
[Post(Route = "api/employee")]
Employee AddEmployee(Employee item);
}
}
組件使用起來和BenchmarkDotNet差不多,通過CTestCase來標(biāo)記,具體測試方法通過接口定義。使用接口來描述WebApi請求是FastHttpApi,在這里就不過多說明。
使用ConcurrentTest進行壓力測試
當(dāng)測試用例編寫完成后,就可以使用ConcurrentTest對測試用例進行一個多線程并發(fā)測試;只需要簡單運行以下代碼即可
CTester.RunTest<FastHttpClientTest>(10, 500000);
以上代碼是對FastHttpClientTest的所有測試方法進行一個測試,測試數(shù)據(jù)是使用10個線程,進行500000萬次調(diào)用測試。
測試報表
在運行過程中組件會實時顯示并發(fā)情況和區(qū)間響應(yīng)數(shù)量,最終會針對每個測試用例形成一個簡要的測試結(jié)果;具體結(jié)果如下:
***********************************************************************
* https://github.com/IKende/ConcurrentTest.git
* Copyright ? ikende.com 2018 email:henryfan@msn.com
* ServerGC:True
***********************************************************************
* AddEmployee test prepping completed
-----------------------------------------------------------------------
* [500000/500000]|threads:[10]
* Success:[ 0/s]|total:[ 500000][min:23448/s max:24561/s]
* Error:[ 0/s]|total:[ 0][min:0/s max:0/s]
-----------------------------------------------------------------------
* 0ms-0.1ms:[ ] 0.1ms-0.5ms:[ 435,604]
* 0.5ms-1ms:[ 59,863] 1ms-5ms:[ 4,356]
* 5ms-10ms:[ 142] 10ms-50ms:[ 35]
* 50ms-100ms:[ ] 100ms-1000ms:[ ]
* 1000ms-5000ms:[ ] 5000ms-10000ms:[ ]
**********************************************************************************************************************************************
* ListEmployees test prepping completed
-----------------------------------------------------------------------
* [500000/500000]|threads:[10]
* Success:[ 0/s]|total:[ 500000][min:28105/s max:28829/s]
* Error:[ 0/s]|total:[ 0][min:0/s max:0/s]
-----------------------------------------------------------------------
* 0ms-0.1ms:[ ] 0.1ms-0.5ms:[ 476,342]
* 0.5ms-1ms:[ 20,641] 1ms-5ms:[ 2,922]
* 5ms-10ms:[ 80] 10ms-50ms:[ 15]
* 50ms-100ms:[ ] 100ms-1000ms:[ ]
* 1000ms-5000ms:[ ] 5000ms-10000ms:[ ]
***********************************************************************
組件還具備什么功能
現(xiàn)有的ConcurrentTest的功能還相對簡陋,不過應(yīng)用者還是可以根據(jù)實際的需要來制定統(tǒng)計標(biāo)簽,延時區(qū)間等相關(guān)統(tǒng)計;由于組件的代碼也非常少只有幾個類,你也根據(jù)根據(jù)自己的需要來擴展它或在https://github.com/IKende/ConcurrentTest提上相應(yīng)issues
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- vue3.0搭配.net core實現(xiàn)文件上傳組件
- ASP.NET Core MVC學(xué)習(xí)之視圖組件(View Component)
- .NET Core 3.0之創(chuàng)建基于Consul的Configuration擴展組件
- .net core高吞吐遠程方法如何調(diào)用組件XRPC詳解
- 詳解.NET Core中的數(shù)據(jù)保護組件
- 詳解.Net Core中的日志組件(Logging)
- 詳解.Net core2.0日志組件Log4net、Nlog簡單性能測試
- .Net Core學(xué)習(xí)教程之在Mvc中簡單的使用日志組件
- 基于.net的分布式系統(tǒng)限流組件示例詳解
- .NET程序集引用COM組件MSScriptControl遇到問題的解決方法
- .NET 開源配置組件 AgileConfig的使用簡介
相關(guān)文章
如何使用簽名保證ASP.NET MVC OR WEBAPI的接口安全
這篇文章主要介紹了如何使用簽名保證ASP.NET MVC OR WEBAPI的接口安全,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
ASP.NET中GridView和Repeater重復(fù)數(shù)據(jù)如何合并
這篇文章主要介紹了ASP.NET中GridView和Repeater重復(fù)數(shù)據(jù)合并的方法,感興趣的小伙伴們可以參考一下2016-08-08
ASP.NET MVC @Helper輔助方法和@functons自定義函數(shù)的使用方法
本文主要介紹ASP.NET MVC中使用@Helper和@functons自定義一些代碼片段,方便視圖調(diào)用,從而達到減少重復(fù)代碼,快速開發(fā)的目的,希望對大家有所幫助。2016-04-04
ASP.NET(C#) String, StringBuilder 與 StringWriter性能比較
ASP.NET(C#) String, StringBuilder 與 StringWriter性能比較...2007-08-08
Asp.net中使用DapperExtensions和反射來實現(xiàn)一個通用搜索
這篇文章主要介紹了Asp.net中使用DapperExtensions和反射來實現(xiàn)一個通用搜索功能,非常不錯,具有參考解決價值,需要的朋友可以參考下2017-03-03
ASP.NET中為TextBox中添加calendar.js示例代碼
為TextBox中添加calendar.js對于一些新手朋友確實有點難度,下面為大家介紹下ASP.NET中具體的實現(xiàn)方法2013-11-11

