【Jmeter】配置不同业务请求比例,应对综合场景压测

目录

背景

Jmeter实现(Random)

[在测试计划下,我们右键"添加"------配置原件------Random Variable](#在测试计划下,我们右键“添加”——配置原件——Random Variable)

设置随机数的变量名称为num,设置取值范围0到100

右键线程组添加"逻辑控制器"------如果(if)控制器

当随机数num取值在20和100之间;调用获取图形获取验证码;

添加判断条件,如果当随机数num取值在1和20之间,调用登录接口

添加聚合报告,查看结果

Jmeter实现(计数器)

资料获取方法


背景

在进行综合场景压测时,遇到了如何实现不同的请求所占比例不同的问题。

  • 有人说将这些请求分别放到单独的线程组下,然后将线程组的线程数按照比例进行配置。

这种方法不是很好,因为服务器对不同的请求处理能力不同,有的处理快,有的处理慢。若采取上述方案的话,并不会按照我们预期的比例进行并发。

那么如何真实模拟按比例进行并发呢?此前使用LR进行过类似场景的测试时的思路如下:

  • 每次向服务器发出请求时,先生成一个随机数,我们对随机数的取值划分若干个范围(对应若干个业务请求),然后对随机数进行判断,当随机数落在某个范围内,就可以执行对应的请求。
  • 比如,我们压测的过程中,要访问百度和besttest官网,并且请求比例是2:8,那么可以规定随机数取值1<=random<=100,然后再划分2个范围:当随机数的取值在0到20之间,则访问百度;当随机数取值在20和100之间,则访问besttest官网;根据概率论,当取样量足够大的话,访问百度和besttest官网的请求比例会比较接近2:8。

Jmeter也能这样实现吗?答案是肯定的,下面我们使用Jmeter结合刚才的例子进行分解

Jmeter实现(Random)

首先,我们需要一个能够生成随机数的函数,刚好jmeter提供了这个函数

在测试计划下,我们右键"添加"------配置原件------Random Variable

设置随机数的变量名称为num,设置取值范围0到100

添加两个如果(if)控制器,添加控制条件,控制执行请求。

右键线程组添加"逻辑控制器"------如果(if)控制器

然后在两个控制器下,分别添加1个http请求。

当随机数num取值在20和100之间;调用获取图形获取验证码;

添加判断条件,如果当随机数num取值在1和20之间,调用登录接口

添加聚合报告,查看结果

运行jmeter验证,取值是否按照比例请求,我们设置一个线程数,让其循环100次,结果如下,获取图形获取验证码78次,登录接口22次,基本满足我们想要的比例。

可以预见的是当数据量达到一定程度之后,会无限接近设置的2比8的比例。

Jmeter实现(计数器)

计数器可以通过如下方式添加,其他的实现思路一样

后话:

其实在LR中也可以在场景设计里设置不同的请求的比例来实现。但是本文主要是讨论Jmeter的实现思路,所以在前文中没有提及。


资料获取方法

【留言777】

各位想获取源码等教程资料的朋友请 点赞 + 评论 + 收藏 ,三连!

三连之后我会在评论区挨个私信发给你们~

相关推荐
虹科数字化与AR8 小时前
电力巡检AR眼镜怎么选?重量、防护、续航、摄像头与佩戴方式
经验分享·增强现实·电力巡检
2601_967212729 小时前
安全型电源轨道系统合规选型技术指标与行业技术路线分析
大数据·经验分享·安全
光视界10 小时前
机器人慧眼:Ensenso 3D相机在汽车装配与物流分拣中的应用
经验分享·3d相机
qiushijin9611 小时前
【2026.12】日语能力考试N1、N2、N3、N4、N5历年真题及答案合集PDF(2010-2026年)
经验分享·pdf
思陌Ai算法定制13 小时前
医疗大模型怎么微调?EpiScreen微调开源LLM读临床笔记早筛癫痫,AUC最高0.98、医生协作提升14.3%
经验分享
我命由我1234513 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
hgfsjk17 小时前
Temu Y2 利润计算器:从定价公式到店铺利润落地
大数据·经验分享·笔记·其他
qiushijin9617 小时前
【2026】考研政治历年真题及答案解析合集PDF(2003-2026年)
经验分享·pdf
尚云第三方软件测试17 小时前
第三方软件测试公司怎么做接口测试?用例设计、工具链与常见漏测场景
软件测试·软件验收测试·第三方软件测试公司
川石课堂软件测试18 小时前
自动化测试|持续集成Git使用详解
git·python·jmeter·mysql·ci/cd·容器·kubernetes