Jmeter测试中如何控制业务比例

在进行多业务混合场景测试中,需要分配每个场景占比。

具体有两种方式:

1.多线程组方式;

2.逻辑控制器控制;

 

第一种:

jmeter一个测试计划可以添加多个线程组,我们把不同的业务放在不同的线程组中,通过控制线程数来控制业务占比。线程组A触发线程数90,

线程组B触发线程数60;

 

 这样就可以粗略的控制业务占比近似3:2。但是如果两个事务响应时间不一样,最终完成的业务数也会有所差异。假设当前线程数的响应时间是完全一致的,才会有3:2的业务占比,当然这个是理想状态。

 

第二种方式:

jmeter的函数对话框中${__counter(True,)}函数获取当前迭代的次数。迭代次数也能获取到,那如何保持3:2的比例呢?这就是一个数学问题了。不卖观子,直接上代码:${__counter(true,)}%2==1||${__counter(true,)}%3==0上面__counter(true,)是获取当前迭代次数,%是取余,也就是除2余1与3整除时执行开新帖。以9次迭代为例,回帖9次,1,3,5,6,7,9 次迭代时都会开新帖,回刚好是6次。9:6=3:2基本上保护了3:2的比例。

 

 

方案二:采用jmeter本身自带的计算器,倒不失为一个好的方法。但是针对一些复杂的场景,这个计算式有点难写,

  比如:3:2这个比例,我看到网上的实现都是${__counter(true,)}%2==1||${__counter(true,)}%3==0,

  这种计算方式就比较复杂了,那有没有简单一点实现方式呢?

  其实是有的。

   当参数为true时,每个用户有自己的计数器,比如10个线程组,100个loop,这是计数器的值为1-100.

   当选择false,全局计算器,10个线程组,100个loop,计数器值为1-10000

 

 比如下面场景:

  

 

那么表达式应该怎么写呢?

 上面有3的倍数,5的倍数,那么取其最小公倍数15,按照15分割。

均使用If控制器,表达式分别为:

a:  ${__counter(false,)}%15 <=5

b:  ${__counter(false,)}%15 >5

c:   ${__counter(false,)}%15==1

d:   ${__counter(false,)}%15>1&& ${__counter(false,)}%15<=5

总结规律:

按照最小的公倍数分割,每个控制器取他们应占的份数。

上面的3:2的实现手段,就更容易了,一个占2/5,一个占3/5,完全不需要写那么复杂的数学表达式~~~

 

转载于:https://www.cnblogs.com/ymany/p/9767312.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值