几个线程中的Jmeter随机变量

Jon*_*edt 9 random jmeter

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

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

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

我想同时运行多个线程,这给出了以下问题.

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

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

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

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

Ali*_*lik 21

假设您可以简单地使用随机变量配置元素:

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

生成的价值

  • 可以访问${uuid};
  • 每个线程都是唯一的;
  • 保存在不同的采样器之间调用每个线程的流量(在每次引用期间不再生);
  • 在线程组的每次迭代期间生成.
Test Plan
    Thread Group
        Random Variable
        ...
        Sampler 1
        Sampler 2
        ...
Run Code Online (Sandbox Code Playgroud)

例如


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
        ...
    ...
Run Code Online (Sandbox Code Playgroud)

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


根据随机变量的Random Seed字段描述:

默认值是当前时间(以毫秒为单位).如果在Per Thread设置为true时使用相同的种子值,则将根据Random类获得earch Thread的相同值.

如果使用相同的种子创建两个Random实例,并且对每个实例都进行相同的方法调用序列,则它们将生成并返回相同的数字序列.

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