我有Jmeter测试,有以下场景:
Thread (5 in number)
-> counter X (X value 0, increment by 1 till 10)
-> req1 uses X
-> req2 uses X
现在我想要实现的是,对于每个用户和每个请求,X的值应该增加而不重叠/重复,即如果我为5个用户运行它* 2个运行= 10个请求,而不是每个请求的X值应该从1到10不重复。
但是上面的方法不起作用,每个用户计数器从0开始,所以我在请求中得到了重复的X,比如
user1 -> req1 X = 0,
user1 -> req2 X = 1
user2 -> req1 X = 0
user2 -> req2 X = 1
我尝试使用用户定义的变量: bean shell预处理仍然是同样的问题。 甚至$ {__ intSum($ {X},1,X)}都没有解决问题。 即使尝试过$ {__ counter(TRUE,X)}也无法解决问题。
答案 0 :(得分:8)
默认情况下,JMeter Counter
不会给出重复值 - 每个用户自动递增#&每次迭代。
取消选中“为每个用户独立跟踪计数器”复选框。
编辑:
如果您的要求是增加线程组内每个请求的计数器,则无法使用计数器。您可以使用JMeter属性来执行此操作。
点击此处 - http://jmeter.apache.org/usermanual/best-practices.html - 分享变量。
答案 1 :(得分:0)
解决方案是使用BeanShell预处理器。 我使用了低于值的bean shell,并在我的所有请求中使用变量“transactionId”,每个线程(用户)为每个调用获取不同的值。
import java.util.Random;
long x = 1000000L;
long y = 9999999L;
Random r = new Random();
long number = x+((long)(r.nextDouble()*(y-x)));
vars.put("transactionId",number );
log.info(" transactionId : " + number );
注意:您可以使用任何逻辑根据您的要求生成值。