首页 > 编程 > .NET > 正文

.net core如何利用ConcurrentTest组件对方法进行压力测试详解

2024-07-10 12:48:39
字体:
来源:转载
供稿:网友

前言

工欲善其事,必先利其器!在编写服务中首先要有一个好的测试工具,在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<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万次调用测试。

测试报表

在运行过程中组件会实时显示并发情况和区间响应数量,最终会针对每个测试用例形成一个简要的测试结果;具体结果如下:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表