WebBenchmark动态测试Webapi

        在编写Webapi测试用例的时候都是定义固定的测试数据,但这样的测试只能针对单一数据。为了更好的模拟实际情况,往往需要进行动态数据测试;通过动态数据测试可以更好的测出服务在不同数据情况下的处理能力。

        WebBenchmark支持动态数据函数,通过动态数据函数可以让测试用例在每次测试所提交的数据都可以动态产生,从而达到更符合现实应用的压力测试。

数据函数

        进入WebBenchmark后可以通过配置的变量配置里查看软件默认提供的值和函数

值以@开头的是数据函数,软件提供了数据函数有

  • date

        根据当前日志返回一个日期格式

  • number

    返回一个随机数值

  • guid

    创建一个guid值

  • nextlist

    从一个字符列表中随机返回一个字符项

软件提供的函数不多,但基于这几个函数即可方便地完成动态数据构建并进行测试。

订单查询

        接下来针对一个订单查询功能进行一个动态数据测试。

public object Orders(EFCoreDB<NorthwindContext> db, int index, int product, int employee, string customer)
{
    Console.WriteLine($"jwt_info:{jwt_user}/{jwt_role}");
    SQL sql = @"select orders.*,(employees.FirstName || ' ' || employees.LastName) Employee,
                customers.CompanyName Customer from orders inner join employees
                on orders.EmployeeID = employees.EmployeeID inner
                        join customers
                on orders.CustomerID = customers.CustomerID where 1=1";
    if (employee > 0)
        sql.And().Where<Employee>(e => e.EmployeeID == employee);
    if (!string.IsNullOrEmpty(customer))
        sql.And().Where<Customer>(c => c.CustomerID == customer);
    if (product > 0)
    {
        sql += " and orders.OrderID in(select orderid from 'Order Details' where ProductID=@p1)";
        sql += ("@p1", product);
    }
    DBRegionData<ExpandoObject> result = new DBRegionData<ExpandoObject>(index, 10);
    result.Execute(db.DBContext, sql);
    foreach (dynamic item in result.Items)
    {
        sql = @"select [Order Details].*, Products.ProductName from [Order Details] inner join Products
            on [Order Details].ProductID= Products.ProductID Where [Order Details].OrderID=" + item.OrderID;
        item.Details = sql.List<ExpandoObject>(db.DBContext);
    }
    return result;
}

以上是一个订单查询webapi接口,提供的参数有查询的页数,客户,和雇员等。

雇员和客户定义

        为了可以动态构建这两个查询项,需要针对这两个数据定义一个列表变量。

针对这两个参数构建对应的列表变量,后面就可以通过使用nextstr函数对这两个列表随机获取数据用于测试。

构建测试用例

以上先定义了一个随机在1-10的index参数,可以多次测试看对应的结果

接下来可以加入客户端查询参数

加入客户参数后的测试结果

接下来以同样的方式添加雇员参数

压力测试

        测试用例定义完成后就可以对它进行压力测试,针对该用例定义一个性能测试用例 

以上是针对sqlite上订单查询的压力测试结果。

软件安装使用

使用WebBenchmark对webapi进行管理和性能测试

(注意:以上功能在免费版本并不提供)

【BeetleX通讯框架代码详解】
【WebApi示例扩展】
BeetleX

开源跨平台通讯框架(支持TLS)
轻松实现高性能:tcp、http、websocket、redis、rpc和网关等服务应用

https://beetlex.io

如果你想了解某方面的知识或文章可以把想法发送到

henryfan@msn.com|admin@beetlex.io

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值