最近项目中遇见了这么一个场景:
100个并发,20个人登录,80个人浏览。
 

这实际上就是一个比例控制的问题。
在网上浏览了一些资料,大概有这么几种方式,这里做一个归纳。

1.利用counter函数。

jmeter并发时比例控制的四种方法。

 

 

 

一个线程就理解成一个用户。
2个用户,每个用户迭代3次。
一共迭代6次

1.${__counter(true,i)}:只统计该用户的迭代次数,

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

 

2.${__counter(false,i)}:统计所有用户的迭代次数

jmeter并发时比例控制的四种方法。

 

jmeter并发时比例控制的四种方法。

 

 

如要求比例为2:8。
1,2,3,4,5,6,7,8,9,10。
这10个数中,能被5整除的有5,10;不能被5整除的有余下8个。所以比例为2:8。
写成数学式:
比例为20%,则${__counter(false,)}%5 ==0,
比例为80%,则${__counter(false,)}%5 !=0

若比例为3:7,
${__counter(false,)}%2 =1,则有1,3,5,7,9
${__counter(false,)}%4 =0,则有4,8
${__counter(false,)}%2 =1||${__counter(false,)}%4 =0的集合则为:1,3,4,5,7,8,9
${__counter(false,)}%2 ==0&&${__counter(false,)}%4=2的集合则有2,6,10
则结果为3:7.

说到底是一个数学问题。

这里以2:8为例。

jmeter并发时比例控制的四种方法。
 

jmeter并发时比例控制的四种方法。

 

jmeter并发时比例控制的四种方法。

 ${__counter(false,)}%2 =1 这种写法,等价于${__Random(1,10,)}%2==1

jmeter并发时比例控制的四种方法。
方法二:
有些童鞋若觉得通过数学的方法计算比例的方法比较绕,那么可以采用以下的方法。
思路:
取1-10的随机数randNo,
若randNo<=2,执行请求A;randNo>2,执行请求B;

 

这样A:B=2:8

 

若randNo<=3,执行请求A;randNo>3,执行请求B;
这样A:B=3:7

 

这样可以随心所欲的控制比例。

先在前置处理器中生成随机数,用于if控制器中作为条件,进行判断;

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。


jmeter并发时比例控制的四种方法。

但是这种方法每次都要生成随机数,该请求也会对服务器造成一定的压力。

方法三:
思路和方法二一样,只有一点小区别;

 

是用的配置元件中Random Variable来生成随机数,取代了方法二中在beanshell中生成随机数。
这样就不用增加一个请求,用于生成随机数了,个人认为方法三是优于方法二的。

 

jmeter并发时比例控制的四种方法。

 

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

 

方法四:

利用switch controller来实现;

比例2:8,则0,0,1,1,1,1,1,1,1,1

switch的值等于0,执行请求2,switch的值为1执行请求8;

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。

jmeter并发时比例控制的四种方法。
这种方法和方法二一样,需要先生成一个值作为参数传入;

优先考虑方法一和方法三,方法二、方法四了解下就可以了,拓展下思路~

练习资料传送门:
点击打开链接

相关文章: