【问题标题】:Use of Beanshell Preprocessor for Parameterization in JMeter在 JMeter 中使用 Beanshell 预处理器进行参数化
【发布时间】:2014-07-27 15:53:36
【问题描述】:

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

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    试试下面的测试结构:

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

    • 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 指南。

    【讨论】:

    • 感谢 Dmitri T 的帮助。真的很有帮助。
    【解决方案2】:

    生成随机字符串:

    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);
    

    【讨论】:

    • 这与所提出的问题无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多