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 employeeson orders.EmployeeID = employees.EmployeeID innerjoin customerson 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 Productson [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
WebBenchmark动态测试Webapi相关推荐
- 使用WebBenchmark对webapi进行管理和性能测试
WebBenchmark是基于beetlex开发的webapi管理和性能测试软件,最新版本1.0.3可以独立运行在linux/windows中,并不再需要安装.net core运行环境. 部署 可以通 ...
- Webapi管理和性能测试工具WebBenchmark
WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能压测的缺少管理功能:WebBenchmark的设计目标 ...
- linux webapi测试,Webapi管理和性能测试工具WebBenchmark
WebBenchmark是一款基于开源通讯组件Beetlex扩展的Webapi管理和性能测试工具,在传统工具中一般管理工具缺乏性能压测能力或有性能测试的缺少管理功能:WebBenchmark的设计目标 ...
- Windows电脑上使用WebBenchmark工具对WebApi接口进行性能测试
一.需求描述 部署完成WebApi内容后,我们需要对WebApi接口的性能进行测试,方便我们对当前服务器上运行的WebApi承受能力有一个良好认知,方便我们进行后续的调优操作,能够让我们的Web接口更 ...
- Webapi测试工具WebBenchmark v1.3发布
这个版本更新的内容是统一使用BeetleX的Web SPA 插件作为服务的基础支持功能方便后期功能扩展,修复线程池配置太小引起的测试问题,修复统计显示的BUG. 安装 工具提供win64和linux6 ...
- WebBenchmark之动态数据测试
对于很多WebApi管理工具来说,针对接口的性能测试都拿固定的数据进行一个循环式的测试:这种测试只能确保当前数据下的有效性,但在性能测试中往往需要压测不同的数据分布,这样能够更准确地反映在不同数据下系 ...
- 开源组件websocket-sharp中基于webapi的httpserver使用体验
一.背景 因为需要做金蝶ERP的二次开发,金蝶ERP的开放性真是不错,但是二次开发金蝶一般使用引用BOS.dll的方式,这个dll对newtonsoft.json.dll这个库是强引用,必须要用4.0 ...
- ASP.NET WebAPI 11 参数验证
在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性. ModelState 在ApiController中一个ModelState属性用来获取参 ...
- php webapi验签,Asp.netCore3.0 WebApi从0到1手摸手教你写【5】增加接口参数签名验证...
通过前几个教程的学习,对webapi的编写基本上就可以入门了,可以做项目了,今天我们再给接口加个参数签名认证,之前的接口相当于赤果果的暴露在了网络上,只要知道接口地址.接口调用方式和传参就可以畅所欲为 ...
最新文章
- libgstreamer-1.0.so.0: cannot open shared object file: No such file or directory
- java分析日志文件_java程序如何对监控软件的日志文件进行如下分析?
- print python 如何加锁_深度解密Python单例模式
- Linux wildcard
- java arp 攻击_用JAVA代码实现ARP攻击 | 学步园
- 用ul li实现边框重合并附带鼠标经过效果
- Php公钥加密data是空,php 生成加密公钥加密私钥实例详解
- 热门话题“看第一学历招人公平吗?”数据告诉你,网友们都是如何想的
- 批处理启动myeclipse
- npm login 登录失败,报E500 Internal Server Error - PUT https://registry.npm.taobao.org/-/user/org.couchdb
- Thor HTTP 抓包嗅探分析接口调试网络协议
- 109 个实用 shell 脚本
- 20个BT下载网站,BT种子网站
- 项目管理必知项,做项目经理必须知道的几个事情
- as的断点调试与高级断点调试
- 二维数组 Arrays
- 神级工具 PrimoCache v4.1(无限试用),电脑磁盘读写速度最高可提升70倍
- ubuntu18安装Nvidia显卡驱动(亲测有效)
- 3.12 杭电复试题2014
- C语言有参数有返回值的函数
热门文章
- labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable
- 程序员必须知道的HTML常用代码有哪些?
- Oracle-逻辑体系结构
- mooc- 基本程序设计方法week1,week2
- ZooKeeper的工作原理
- Codeforces Round #260 (Div. 2)
- SQL调优:带函数的谓词导致CBO Cardinality计算误差
- 高级SQL注入拿shell,一般黑客不知道。哈客
- Teams App设备的地理位置能力
- 应用环境下的TIME_WAIT和CLOSE_WAIT