您现在的位置是:网站首页> 编程资料编程资料
.net core如何利用ConcurrentTest组件对方法进行压力测试详解_实用技巧_
2023-05-24
290人已围观
简介 .net core如何利用ConcurrentTest组件对方法进行压力测试详解_实用技巧_
前言
工欲善其事,必先利其器!在编写服务中首先要有一个好的测试工具,在dontecore下性能测试有BenchmarkDotNet,只需要简单的配置一下就可以对方法的性能进行详细的测试。但有时候需要对不同并发下看其处理效率和延时统计查看,如HTTP服务对应着大量的测试工具如ab,bombardier等等。由于找不到类似于测试HTTP服务的工具来测试代码用例,于时就有了ConcurrentTest这个组件的实现.通过ConcurrentTest组件可以运行不同的测试用例,并可以实时查看具体的并发情况和延时分布数据。
以下介绍一下如何使用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(); } 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 ListEmployees(int count); [Post(Route = "api/employee")] Employee AddEmployee(Employee item); } } 组件使用起来和BenchmarkDotNet差不多,通过CTestCase来标记,具体测试方法通过接口定义。使用接口来描述WebApi请求是FastHttpApi,在这里就不过多说明。
使用ConcurrentTest进行压力测试
当测试用例编写完成后,就可以使用ConcurrentTest对测试用例进行一个多线程并发测试;只需要简单运行以下代码即可
CTester.RunTest(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:[ ]
***********************************************************************
组件还具备什么功能
现有的ConcurrentTest的功能还相对简陋,不过应用者还是可以根据实际的需要来制定统计标签,延时区间等相关统计;由于组件的代码也非常少只有几个类,你也根据根据自己的需要来扩展它或在https://github.com/IKende/ConcurrentTest提上相应issues
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
- vue3.0搭配.net core实现文件上传组件
- ASP.NET Core MVC学习之视图组件(View Component)
- .NET Core 3.0之创建基于Consul的Configuration扩展组件
- .net core高吞吐远程方法如何调用组件XRPC详解
- 详解.NET Core中的数据保护组件
- 详解.Net Core中的日志组件(Logging)
- 详解.Net core2.0日志组件Log4net、Nlog简单性能测试
- .Net Core学习教程之在Mvc中简单的使用日志组件
- 基于.net的分布式系统限流组件示例详解
- .NET程序集引用COM组件MSScriptControl遇到问题的解决方法
- .NET 开源配置组件 AgileConfig的使用简介
相关内容
- .Net Core库类项目跨项目读取配置文件的方法_实用技巧_
- ASP.NET Core中预压缩静态文件的方法步骤_实用技巧_
- Asp.net core中实现自动更新的Option的方法示例_实用技巧_
- 记Asp.Net Core Swagger使用并带域接口处理的方法_实用技巧_
- .net core中Quartz的使用方法_实用技巧_
- Asp.Net Core基于JWT认证的数据接口网关实例代码_实用技巧_
- 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法_实用技巧_
- asp.net上传Excel文件并读取数据的实现方法_实用技巧_
- 详解.NET Core 使用HttpClient SSL请求出错的解决办法_实用技巧_
- .Net Core自定义配置源从配置中心读取配置的方法_实用技巧_
