几个线程中的Jmeter随机变量

时间:2013-05-22 14:20:09

标签: random jmeter

我有一个Jmeter线程组,它在整个过程中多次使用变量uuid

uuid定义为12345678-1234-4444-a123-${__Random(111111111111,999999999999)}

换句话说,它以固定系列12345678-1234-4444-a123-开头,然后随机化最后十二个字符。

我想同时运行多个线程,这会产生以下问题。

当我将uuid定义为线程组内的用户定义变量时,它会随机化一次,然后将该值用于我的所有线程。 如果我将它设置为全球,则会发生同样的事情。

当我完成后,我将同时运行数千个线程,因此我无法手动解决方案或读取/写入磁盘。

有没有人有这方面的经验? 我已经通过文档和谷歌了很长一段时间,但似乎无法找到解决方案。

简而言之:我需要随机化一个变量,在整个线程组中使用该变量,并在几个同时线程中运行该线程组。变量在每个不同的线程中应该有不同的随机值。

2 个答案:

答案 0 :(得分:20)

假设您只需使用Random Variable配置元素:

Variable Name:     uuid
Output Format:     12345678-1234-4444-a123-000000000000
Minimum Value:     111111111111
Maximum Value:     999999999999
Per Thread (User): True

生成的值

  • 可以${uuid};
  • 的形式访问
  • 每个帖子都是唯一的;
  • 保留在不同采样器之间的
  • 调用每个线程的流(在每次引用期间不重新生成);
  • 在线程组的每次迭代期间生成。
Test Plan
    Thread Group
        Random Variable
        ...
        Sampler 1
        Sampler 2
        ...

e.g。


iteration: 1
    thread: 1
        sampler 1: VALUE_1-1
        sampler 2: VALUE_1-1
        ...
    thread: 2
        sampler 1: VALUE_2-1
        sampler 2: VALUE_2-1
        ...
    ...
iteration: 2
    thread: 1
        sampler 1: VALUE_1-2
        sampler 2: VALUE_1-2
        ...
    thread: 2
        sampler 1: VALUE_2-2
        sampler 2: VALUE_2-2
        ...
    ...

为上面给出的模式实现的示例脚本:rnd-var.jmx


根据Random VariableRandom Seed字段说明:

  

默认值是当前时间(以毫秒为单位)。如果你使用相同的种子   将Per Thread设置为true的值,您将获得相同的值   按照随机类进行线程。

     

如果使用相同的种子创建了两个Random实例,那么   为每个方法调用相同的方法调用,它们将生成和   返回相同的数字序列。

请记住实现具有高并发性的方案(如下面的注释中所述)。 要解决此问题,您可以使用随机化种子,例如: ${__Random(MIN,MAX)}作为Seed for Random function字段的值。

答案 1 :(得分:0)

只需放

12345678-1234-4444-a123-${__Random(111111111111,999999999999)}

在需要的地方内联。

如果将其放在UDV组件中,则甚至在启动线程之前,仅分配一次值。 根据jmeter文档,该行为还可以。请仔细阅读。