博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebBenchmark动态测试Webapi
阅读量:4033 次
发布时间:2019-05-24

本文共 2224 字,大约阅读时间需要 7 分钟。

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

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

数据函数

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

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

  • date

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

  • number

    返回一个随机数值

  • guid

    创建一个guid值

  • nextlist

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

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

订单查询

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

public object Orders(EFCoreDB
 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
(e => e.EmployeeID == employee); if (!string.IsNullOrEmpty(customer)) sql.And().Where
(c => c.CustomerID == customer); if (product > 0) { sql += " and orders.OrderID in(select orderid from 'Order Details' where ProductID=@p1)"; sql += ("@p1", product); } DBRegionData
result = new DBRegionData
(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
(db.DBContext); } return result;}

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

雇员和客户定义

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

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

构建测试用例

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

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

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

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

压力测试

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

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

软件安装使用

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

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

开源跨平台通讯框架(支持TLS)

轻松实现高性能:tcp、http、websocket、redis、rpc和网关等服务应用

https://beetlex.io

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

henryfan@msn.com|admin@beetlex.io

转载地址:http://aakdi.baihongyu.com/

你可能感兴趣的文章
No.147 - LeetCode1108
查看>>
No.148 - LeetCode771
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
mac:移动python包路径
查看>>
mysql:sql create database新建utf8mb4 数据库
查看>>
mysql:sql alter database修改数据库字符集
查看>>
mysql:sql drop table (删除表)
查看>>
mysql:sql truncate (清除表数据)
查看>>
scrapy:xpath string(.)非常注意问题
查看>>
yuv to rgb 转换失败呀。天呀。谁来帮帮我呀。
查看>>
yuv420 format
查看>>
YUV420只绘制Y通道
查看>>
yuv420 还原为RGB图像
查看>>
LED恒流驱动芯片
查看>>
驱动TFT要SDRAM做为显示缓存
查看>>
使用file查看可执行文件的平台性,x86 or arm ?
查看>>
qt5 everywhere 编译summary
查看>>