【问题标题】:Multiple unique random values in a single request in JMeterJMeter中单个请求中的多个唯一随机值
【发布时间】:2017-02-07 18:04:47
【问题描述】:

我正在尝试在 JMeter 中发出一个 HTTP 请求,其中包含固定范围(特别是 0-50)内的多个随机数。对于每个请求,我需要发送大约 45 个不同的整数,因此对于任何给定的请求,所述范围内有六个整数不包括在内。显然 {__Random()} 不起作用,因为它不可避免地会产生一些相等的值。我的想法,请多多包涵,因为我对此很陌生,是用整数创建一个数组,例如:

String line = "0, 1, 2, 3, 4, 5....."; String[] numbers = line.split(",");

然后为它们分配固定变量名称以包含在请求中。我可以使用带有 CSV 数据的计数器来执行此操作,但我不确定如何使用数组执行此操作。

vars.put("VAR_" + counter, line); VAR_1 = 1 VAR_2 = 2 and so on...

然后打乱数组(我不知道如何在 Beanshell 中执行)并生成如下内容:

VAR_1 = 16 VAR_2 = 27 ...

与下一个请求一起发送。

如果有人可以帮助我,或者提出更简单的方法,我将不胜感激。谢谢。

【问题讨论】:

    标签: jmeter beanshell


    【解决方案1】:
    1. 要随机播放列表,只需使用Collections.shuffle() 方法
    2. 考虑使用JSR223 Test ElementsGroovy language 而不是原来的Beanshell:

      • 更符合 Java 标准
      • 具有更好的性能
      • 内置对 JSON、XML 和一些“语法糖”的支持,可最大限度地减少和简化代码

      查看Groovy Is the New Black文章了解更多详情

    【讨论】:

    • 感谢您的评论,我已切换到 JSR223 + Groovy,但仍然遇到问题。我看到您在回应有人做类似事情时发表的评论,您建议使用 Secure.Random 类。我尝试了类似Random rand = new SecureRandom() int number = rand.nextInt(50); 的方法,但没有奏效。同样,我试图为任何给定的请求生成大约 50 个唯一整数中的 45 个。
    • 你为什么不直接使用Counter test element or __counter()函数并获取序列号呢? 50 个随机数中的 45 个对我来说意义不大。
    • 我知道这听起来很奇怪,但这是我需要做的。这是一个相对简单的概念;在任何给定的请求中,都会有 5 个整数不在该范围内。我正在测试一个依赖选择数字的游戏。这个解决方案会很好用,只要我能在每次请求后洗牌。 'BufferedReader br = new BufferedReader(new FileReader("myfile.csv"));字符串线;整数计数器 = 1; while ((line = br.readLine()) != null) { vars.put("VAR_" + counter, line);计数器++; } br.close();'
    【解决方案2】:

    我想通了。它有点丑陋和麻烦,但相当简单,并且完全符合我的需要。在 JSR223 PreProcessor 中,我的代码是

    def list = [0,1,2,3,4,5,.....];
    Collections.shuffle(list);
    String VAR_1 = Integer.toString(list.getAt(0));
    vars.put("VAR_1", VAR_1);
    String VAR_2 = Integer.toString(list.getAt(1));
    vars.put("VAR_2", VAR_2);
    String VAR_3 = Integer.toString(list.getAt(2));
    and so on.....
    

    我必须手动输入 50 个变量。我敢肯定有一个更简单的方法,但我很满意。感谢您的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多