JMeter中单个请求中的多个唯一随机值

JMeter中单个请求中的多个唯一随机值,jmeter,beanshell,Jmeter,Beanshell,我试图在JMeter中发出一个HTTP请求,该请求包含固定范围(特别是0-50)内的多个随机数。对于每个请求,我需要发送大约45个不同的整数,所以对于任何给定的请求,在所述范围内有六个整数不包括在内。显然{uuu Random()}不起作用,因为它将不可避免地生成一些相等的值。我的想法是创建一个包含整数的数组,请记住,因为我对这一点非常陌生,比如: String line=“0,1,2,3,4,5…”; 字符串[]数字=行。拆分(“,”) 然后为它们分配固定的变量名以包含在请求中。我可以用CSV

我试图在JMeter中发出一个HTTP请求,该请求包含固定范围(特别是0-50)内的多个随机数。对于每个请求,我需要发送大约45个不同的整数,所以对于任何给定的请求,在所述范围内有六个整数不包括在内。显然{uuu Random()}不起作用,因为它将不可避免地生成一些相等的值。我的想法是创建一个包含整数的数组,请记住,因为我对这一点非常陌生,比如:

String line=“0,1,2,3,4,5…”;
字符串[]数字=行。拆分(“,”)

然后为它们分配固定的变量名以包含在请求中。我可以用CSV数据的计数器来实现这一点,但我不确定如何用数组来实现这一点

vars.put(“变量”+计数器,行);
VAR_1=1
VAR_2=2
等等…

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

VAR_1=16
VAR_2=27
…

与下一个请求一起发送

如果有人能在这方面帮助我,或者建议一个更简单的方法,我将不胜感激。谢谢

  • 要洗牌列表,只需使用方法
  • 考虑使用和而不是Beanshell,因为它是:

    • 更符合Java
    • 有更好的表现
    • 内置了对JSON、XML和一些“语法糖”的支持,可以最小化和简化代码
    查看文章了解更多详细信息


  • 我想出来了。它有点难看和笨重,但相当简单,并且完全符合我的需要。在JSR223预处理器中,我的代码是

    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个变量。我相信有一个更简单的方法,但我很满意。谢谢你的建议。

    谢谢你的评论,我已切换到JSR223+Groovy,但仍然有问题。我看到一条评论,你是回应某人做了类似的事情,你建议使用一个安全的随机类。我试过这样的方法:rand=newsecurerandom()int number=rand.nextInt(50)但它不起作用。同样,对于任何给定的请求,我试图从50个整数中生成大约45个唯一的整数。为什么不使用这个函数并获取序列号呢?50个随机数中的45个对我来说没有多大意义。我知道这听起来很奇怪,但这正是我需要做的。这是一个相对简单的概念;在任何给定的请求中,将有5个整数不包括在范围内。我正在测试一个依赖于选择数字的游戏。如果我能在每次请求后重新排列数字,这个解决方案将非常有效。”BufferedReader br=新的BufferedReader(新文件阅读器(“myfile.csv”);弦线;int计数器=1;while((line=br.readLine())!=null){vars.put(“VAR_”+counter,line);counter++;}br.close();'