jmeter 随机变量为所有采样器请求创建相同的数字
jmeter random variable creates same number for all sampler requests
在一个线程组中,有多个http请求采样器。我需要为每个请求发送一个号码。对于这些请求中的每一个,这个数字应该不同。当我每次使用 Jmeter Random 变量为每个请求获取一个随机数时。我在想的是,在一个线程中,当我在 n 个请求中调用此变量 n 次时,它每次都会给出一个不同的数字,但是它在每次调用中都给出相同的数字。
请帮助建议每次在不同采样器的单个线程中需要时获取随机数的方法。
如果您需要在线程内为每个采样器生成随机数,请使用Random
函数。
${__Random(1,100)}
- 将生成一个介于 1 和 100 之间的随机数。
选项如下:
- __counter() 函数 - returns 每次调用时都会增加值。
- __time() 函数 - returns 当前日期作为从
开始的以毫秒为单位的时间戳
- __UUID() function - returns unique GUID 值
有时 JMeter 的 __Random() 函数无法产生真实的 "random" 值,就好像它在同一时刻被多次调用(使用相同的种子)一样 - 参见第 2 点 - 它将产生 2 个相等的值。解决方法是:
- 使用JSR223 Test Elements + Groovy scripting language + SecureRandomclass
- 使用__RandomString()函数生成定义数量的随机数的字符串表示
就您个人而言,我会使用 UUID 函数。
您可以在采样器中使用 {__BeanShell(UUID.randomUUID())} 进行尝试。
{__BeanShell(UUID.randomUUID())}
祝你好运,让我们知道你过得怎么样。
谢谢
您必须在一个线程组中应用了单个随机生成器,如果您想要针对不同的采样器进行不同的触发,则必须为每个请求添加单独的随机生成器。
使用“添加”>“配置元素”>“随机变量”创建随机数时遇到类似问题。它被这样使用 -
log.info("******RandomNumber******");
log.info vars.get("p_randomNumber");
//20%
if(${p_randomNumber} <= 20){
vars.put("prof_cnt", "010DB");
vars.put("p_username","${p_prof10}");
//30%
}else if(${p_randomNumber} <= 50){
vars.put("prof_cnt", "015DB");
vars.put("p_username","${p_prof15}");
我们发现 JSR223 PreProcessor 复选框 "Cache compiled script if available" 被选中,这导致我们每次通过都获得相同的用户。取消选中该框,事情按计划进行(每次通过都有一个新用户)。
在一个线程组中,有多个http请求采样器。我需要为每个请求发送一个号码。对于这些请求中的每一个,这个数字应该不同。当我每次使用 Jmeter Random 变量为每个请求获取一个随机数时。我在想的是,在一个线程中,当我在 n 个请求中调用此变量 n 次时,它每次都会给出一个不同的数字,但是它在每次调用中都给出相同的数字。
请帮助建议每次在不同采样器的单个线程中需要时获取随机数的方法。
如果您需要在线程内为每个采样器生成随机数,请使用Random
函数。
${__Random(1,100)}
- 将生成一个介于 1 和 100 之间的随机数。
选项如下:
- __counter() 函数 - returns 每次调用时都会增加值。
- __time() 函数 - returns 当前日期作为从 开始的以毫秒为单位的时间戳
- __UUID() function - returns unique GUID 值
有时 JMeter 的 __Random() 函数无法产生真实的 "random" 值,就好像它在同一时刻被多次调用(使用相同的种子)一样 - 参见第 2 点 - 它将产生 2 个相等的值。解决方法是:
- 使用JSR223 Test Elements + Groovy scripting language + SecureRandomclass
- 使用__RandomString()函数生成定义数量的随机数的字符串表示
就您个人而言,我会使用 UUID 函数。
您可以在采样器中使用 {__BeanShell(UUID.randomUUID())} 进行尝试。
{__BeanShell(UUID.randomUUID())}
祝你好运,让我们知道你过得怎么样。
谢谢
您必须在一个线程组中应用了单个随机生成器,如果您想要针对不同的采样器进行不同的触发,则必须为每个请求添加单独的随机生成器。
使用“添加”>“配置元素”>“随机变量”创建随机数时遇到类似问题。它被这样使用 -
log.info("******RandomNumber******");
log.info vars.get("p_randomNumber");
//20%
if(${p_randomNumber} <= 20){
vars.put("prof_cnt", "010DB");
vars.put("p_username","${p_prof10}");
//30%
}else if(${p_randomNumber} <= 50){
vars.put("prof_cnt", "015DB");
vars.put("p_username","${p_prof15}");
我们发现 JSR223 PreProcessor 复选框 "Cache compiled script if available" 被选中,这导致我们每次通过都获得相同的用户。取消选中该框,事情按计划进行(每次通过都有一个新用户)。