【发布时间】:2014-07-27 15:53:36
【问题描述】:
我正在尝试在 JMeter 脚本中使用 beanshell 预处理器进行参数化。我的 JMeter 脚本结构如下所述。测试计划->线程组->事务控制器->请求。我想知道我应该遵循哪个过程来动态地将值传递给请求。
带有屏幕截图和示例的说明会更有帮助。
提前致谢。
【问题讨论】:
标签: jmeter load-testing beanshell jmeter-plugins parameterization
我正在尝试在 JMeter 脚本中使用 beanshell 预处理器进行参数化。我的 JMeter 脚本结构如下所述。测试计划->线程组->事务控制器->请求。我想知道我应该遵循哪个过程来动态地将值传递给请求。
带有屏幕截图和示例的说明会更有帮助。
提前致谢。
【问题讨论】:
标签: jmeter load-testing beanshell jmeter-plugins parameterization
试试下面的测试结构:
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 预处理器中,我们定义了 RANDOM_NUMBER 变量值,我们在 HTTP 请求采样器中引用了该变量值。预处理器正在在请求之前执行,因此变量被填充。如果添加 View Results Tree 监听器,您会看到请求包含 100-300 范围内随机生成的数字
因此,您需要将 Beanshell 预处理器添加为要参数化的请求的子项。
有关 Beanshell 脚本和小食谱的更多信息,请参阅 How to use BeanShell: JMeter's favorite built-in component 指南。
【讨论】:
生成随机字符串:
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);
【讨论】: