Beanshell预处理器在JMeter中的参数化使用

时间:2014-07-27 15:53:37

标签: jmeter load-testing beanshell jmeter-plugins parameterization

我正在尝试使用beanshell预处理器在JMeter脚本中进行参数化。我的JMeter脚本结构如下所述。测试计划 - >线程组 - >事务控制器 - >请求。我想知道我应该遵循哪个程序来动态地将值传递给请求。

屏幕截图和示例说明会更有帮助。

提前致谢。

2 个答案:

答案 0 :(得分:18)

尝试以下测试结构:

  • 线程组(所有默认值)1个用户,1秒加速,1个循环)
    • HTTP请求(参见下面的参数)

http request details

  • Beanshell预处理器作为HTTP请求的子项,代码如下:

    int min = Integer.parseInt(bsh.args[0]); // get first parameter
    int max = Integer.parseInt(bsh.args[1]); // get second parameter
    int random =  min + (int) (Math.random() * ((max - min) + 1)); // calculate random number within parameters range
    vars.put("RANDOM_NUMBER", String.valueOf(random)); // save result into RANDOM_NUMBER variable
    
    “参数:部分

  • 中的

    100 300

Beanshell Pre Processor

因此,在Beanshell预处理器中,我们定义了我们在HTTP Request Sampler中引用的RANDOM_NUMBER变量值。预处理器正在执行之前请求,因此填充了变量。如果您添加View Results Tree侦听器,您会看到请求包含100-300范围内随机生成的数字

SERP

因此,您需要添加Beanshell Pre Processor作为您要进行参数化的请求的子项。

有关Beanshell脚本和小食谱的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。

答案 1 :(得分:-1)

生成随机字符串:

import java.util.Random;

chars = "1234567890abcdefghiklmnopqrstuvwxyz-";
int string_length = 36;
randomstring ="";

for (int i=0; i < string_length; i++) {
  Random randomGenerator = new Random();
  int randomInt = randomGenerator.nextInt(chars.length());
  randomstring += chars.substring(randomInt,randomInt+1);
}
print(randomstring);
vars.put("RANDOM_STRING",randomstring);