我有一个Jmeter线程组,它在整个过程中多次使用变量uuid
。
uuid
定义为12345678-1234-4444-a123-${__Random(111111111111,999999999999)}
换句话说,它以固定系列12345678-1234-4444-a123-
开头,然后随机化最后十二个字符。
我想同时运行多个线程,这会产生以下问题。
当我将uuid
定义为线程组内的用户定义变量时,它会随机化一次,然后将该值用于我的所有线程。
如果我将它设置为全球,则会发生同样的事情。
当我完成后,我将同时运行数千个线程,因此我无法手动解决方案或读取/写入磁盘。
有没有人有这方面的经验? 我已经通过文档和谷歌了很长一段时间,但似乎无法找到解决方案。
简而言之:我需要随机化一个变量,在整个线程组中使用该变量,并在几个同时线程中运行该线程组。变量在每个不同的线程中应该有不同的随机值。
答案 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 Variable的Random Seed
字段说明:
默认值是当前时间(以毫秒为单位)。如果你使用相同的种子 将Per Thread设置为true的值,您将获得相同的值 按照随机类进行线程。
如果使用相同的种子创建了两个Random实例,那么 为每个方法调用相同的方法调用,它们将生成和 返回相同的数字序列。
请记住实现具有高并发性的方案(如下面的注释中所述)。
要解决此问题,您可以使用随机化种子,例如: ${__Random(MIN,MAX)}
作为Seed for Random function
字段的值。
答案 1 :(得分:0)
只需放
12345678-1234-4444-a123-${__Random(111111111111,999999999999)}
在需要的地方内联。
如果将其放在UDV组件中,则甚至在启动线程之前,仅分配一次值。 根据jmeter文档,该行为还可以。请仔细阅读。