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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux开发需要学习什么,linux开发需要掌握哪些知识?

原标题&#xff1a;linux开发需要掌握哪些知识&#xff1f;嵌入式linux开发的应用是非常广泛的。而且linux是开源的&#xff0c;各种技术也是非常成熟的。不过很多初学者在学习linux开发过程中感觉非常难&#xff0c;那么对于linux开发需要掌握哪些知识呢&#xff1f;1.Linux是…

csv 字符串_python3从零学习-5.5.1、CSV 文件读写

源代码&#xff1a; Lib/csv.py模块内容csv 模块定义了以下函数&#xff1a;csv.reader(csvfile, dialectexcel, **fmtparams)返回一个 reader 对象&#xff0c;该对象将逐行遍历 csvfile。csvfile 可以是任何对象&#xff0c;只要这个对象支持 iterator 协议并在每次调用 __ne…

持续交付三:动手自动化“开发”—“测试”

前两篇博文中提到Development,QA,Staging,Production四个环境&#xff0c;也说明了源代码的分支和四个环境的对应关系&#xff0c;本篇博文聊一下&#xff0c;怎么把源码自动化发布到对应的环境中。市面上主流的DevOpt工具都支持这些功能&#xff0c;github,gitlab&#xff0c;…

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

WebBenchmark是基于beetlex开发的webapi管理和性能测试软件&#xff0c;最新版本1.0.3可以独立运行在linux/windows中&#xff0c;并不再需要安装.net core运行环境。部署可以通过以下地址下载最新版本:https://github.com/IKende/WebBenchmark可以根据需要下载linux64或win64运…

三维叉乘怎么算_奇技淫巧系列:向量叉乘

​一般我们在解决立体几何题目时会选择建立坐标系&#xff0c;因为这样做比较保险也有固定套路。很多时候这些题目要求你计算某一个面的法向量&#xff08;normal vector&#xff09;&#xff0c;这在高中阶段也是有固定方法的&#xff0c;我们这里想要介绍的是一种更高级也更迅…

g++ linux intel 汇编,g++ linux

目标&#xff1a;运行C代码example&#xff1a;有func.h,func.cpp, main.cpp- .h无需编译&#xff0c;但.h中函数实现的地方需要编译(func.cpp)- 逻辑&#xff1a;cpp各自生成可执行文件(.o),再进行链接g -c func.cppg -c main.cppg main.o func.o -o test或者直接&#xff1a;…

听说容器正在吃掉整个软件世界?

过去几年&#xff0c;以 docker、kubernetes 为代表的容器技术已发展为一项通用技术&#xff0c;BAT、滴滴、京东、头条等大厂&#xff0c;都争相把容器和 k8s 项目作为技术重心&#xff0c;试图“放长线钓大鱼”。就说腾讯吧&#xff0c;目前基本所有业务都跑在云上&#xff0…

linux 短信功能,Android调用系统短信功能发送短信

Android调用系统短信功能发送短信有两种方法:第一种&#xff0c;设定发送的号码&#xff0c;和内容&#xff0c;界面没有联系人&#xff0c;群组组等按钮&#xff0c;如下图所示&#xff1a;代码如下&#xff1a;Uri smsToUri Uri.parse("smsto:114");// 联系人地址…

bcm943602cs蓝牙用不了_原来手机的蓝牙功能这么强大!除了连接耳机,还有这六大实用功能...

蓝牙是手机上的一个普通功能&#xff0c;基本上所有的手机里都有它&#xff0c;原先它的作用很有限&#xff0c;只是用来传输数据&#xff0c;但由于速度太慢&#xff0c;最后也是被软件所淘汰&#xff0c;慢慢的可以用来连接耳机&#xff0c;这也是博主用的比较多的一个功能&a…

数据结构——表达式求值(中序)

表达式求值&#xff08;中序&#xff09; 实验二 基于栈的中缀算术表达式求值 【实验目的】 1.掌握栈的基本操作算法的实现,包括栈初始化、进栈、出栈、取栈顶元素等。 2.掌握利用栈实现中缀表达式求值的算法。 【实验内容】 问题描述 输入一个中缀算术表达式,求解表达式的值。…

msdn画圆弧函数_画直线不简单!python-matplotlib告诉你为什么

1 说明&#xff1a;1.1 python的matplotlib画直线&#xff0c;看似简单&#xff0c;其实很难&#xff0c;从简单到复杂&#xff0c;逐步深入&#xff0c;小白秒懂。1.2 内容&#xff1a;画直线&#xff0c;画圆&#xff0c;画圆点&#xff0c;动画的单摆和圆套圆&#xff0c;好…

Wifi6网络

2020年是Wifi6设备全面爆发的一年&#xff0c;华为、小米、华硕、腾达、TP-LINK、360等多家厂商相继发布了Wifi6路由产品&#xff0c;掀起了一股更换路由器的热潮。首先&#xff0c;我们先来看几个常识1、Wifi6和IPv6两个没有必然联系&#xff0c;Wifi6是一种支持802.11ax的Wif…

数据结构——用栈解决回文字符问题

回文 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文&#xff0c;但“good”不是回文。试写一个算法判定给定的字符序列是否为回文。&#xff08;提示&#xff1a;将一半字符入栈。&#xff09; 所需的知识前提&#xff1a;栈 以下是顺序栈的基本算法 结构…

aspose excel中文文档_除了VBA,还有哪些编程语言可以操作Excel文件?

Excel(Microsoft office)是现在最常用的办公软件&#xff0c;主要涉及电子表格制作、数据处理、报表输出展示以及更高端的还有金融建模等&#xff1b;我们知道&#xff0c;在需要批处理多个Excel工作表以及工作簿的时候&#xff0c;需要用到一个自动化的利器&#xff1a;VBAVBA…

关于.NET5在IIS中部署的几个问题总结

本来我的系列教程已经慢慢剥离开IIS了&#xff0c;毕竟有了Docker容器以后&#xff0c;配合Nginx使用真的很不错。但是还是有很多同学使用IIS的&#xff0c;这个不可否认IIS的重要性。随着.NET的发布&#xff0c;很多小伙伴已经开始升级了&#xff0c;我也就陆陆续续收到了一些…

数据结构——括号匹配问题

括号匹配 给定一个字符串&#xff0c;其中的字符只包含三种括号&#xff1a;花括号{ }、中括号[ ]、圆括号( )&#xff0c;即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法&#xff0c;判断该字符串是否有效&#xff0c;即字符串中括号是否匹配。括号匹配要求括号必须以正…

wordpress多站点主站调用分站最新文章_企业网站SEO最新的7个优化步骤!

如果你是一个企业主&#xff0c;你有建立企业官方网站的经验&#xff0c;在2-3年的运作中&#xff0c;我相信你至少修改了一个网站&#xff0c;甚至做了一个重大的SEO策略调整。当我们开始建立一个公司的时候&#xff0c;很多时候就是认为只要我们有一个公司的网站&#xff0c;…

Azure 静态 web 应用集成 Azure 函数 API

前几次我们演示了如何通过Azure静态web应用功能发布vue跟blazor的项目(使用 Azure静态web应用Github全自动部署VUE站点、使用Azure静态Web应用部署Blazor Webassembly应用)。但是一个真正的web应用&#xff0c;总是免不了需要后台api服务为前端提供数据或者处理数据的能力。同样…

c++ new一个结构体_C语言结构体,又一个纸老虎,纯干货讲解(附代码)

来源&#xff1a;网络&#xff0c;排版整理&#xff1a;晓宇微信公众号&#xff1a;芯片之家(ID&#xff1a;chiphome-dy)结构体的定义结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合&#xff0c;也叫结构。结构体和其他类型基础数据类型一样&#xff0c…

c语言next的用法,C语言strchr使用之Next查找和截断想要的字符串

#include #include #include #include #include #include #include #include static char pstring[] "Hello\n"; // 这里不能是char*int main(){char tmp ;char* pstr strchr(pstring,‘l‘);printf("pstr is %s %p\n",pstr,pstr);#if 0// 搜后面的pstr …