今天就跟大家聊聊有关如何在.net core中使用ConcurrentTest组件实现一个压力测试功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
引用组件
Install-Package BeetleX.ConcurrentTest -Version 0.2.8
WebAPI服务
[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服务,主要是提供了雇员获取和添加功能。
测试用例
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来标记,具体测试方法通过接口定义。使用接口来描述WebApi请求是FastHttpApi,在这里就不过多说明。
使用ConcurrentTest进行压力测试
当测试用例编写完成后,就可以使用ConcurrentTest对测试用例进行一个多线程并发测试;只需要简单运行以下代码即可
CTester.RunTest<FastHttpClientTest>(10, 500000);
以上代码是对FastHttpClientTest的所有测试方法进行一个测试,测试数据是使用10个线程,进行500000万次调用测试。
测试报表
在运行过程中组件会实时显示并发情况和区间响应数量,最终会针对每个测试用例形成一个简要的测试结果;具体结果如下:
***********************************************************************
* 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:[ ]
***********************************************************************
看完上述内容,你们对如何在.net core中使用ConcurrentTest组件实现一个压力测试功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。