Jmeter:增加n个用户(线程)和n个请求的用户变量计数

时间:2015-03-31 17:51:19

标签: jmeter counter increment

我有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)}也无法解决问题。

2 个答案:

答案 0 :(得分:8)

默认情况下,JMeter Counter不会给出重复值 - 每个用户自动递增#&每次迭代。

取消选中“为每个用户独立跟踪计数器”复选框。

enter image description here

编辑:

如果您的要求是增加线程组内每个请求的计数器,则无法使用计数器。您可以使用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 );

注意:您可以使用任何逻辑根据您的要求生成值。