JMeter配置元件之随机变量(Random Variable)
一、背景
在接口测试时,经常会存在构造测试数据的情况,比如构造年龄、电话号码等等,所以一般会用到随机变量(Random Variable)配置元件。
组件的位置:测试计划或者线程组右键,Add->Config Element-> Random Variable
二、随机变量(Random Variable)
1、界面介绍
- Name(控件名称):控件名称
- Variable Name(引用变量名称):引用变量名称
- Output Format(输出格式):输出格式。例如,“000”将生成至少3位数的数字,或“USER_000”将生成USER_nnn形式的输出。如果未指定,则默认使用Long.toString()生成数字。
- Minimum Value(最小值):设置最小值
- Maximum Value(最大值):设置最大值
- Seed for Random function (随机种子):随机数生成器的种子。如果将每线程设置为true使用相同的种子值,则每个线程将获得与每个Random类相同的值。如果未设置种子,则将使用Random的默认构造函数。
- Per Thread(User)(每个线程或用户):是否给每个用户设置。如果为False,则生成器在线程组中的所有线程之间共享。如果为True,则每个线程都有自己的随机生成器。
2、独享随机数生成器(常用)
这里每个线程独享各自的随机数生成器,最终生成的随机数,在每个线程组中都不相同。
- 线程组内配置:这里将线程组内取样器循环3次,每秒生成2个用户
- 取样器:打印线程组号,以及随机数字
log.warn("线程组号:"+ctx.getThreadNum()+",计数器的值:"+vars.get("var1"));
- 随机变量配置元件
- Seed for Random function (随机种子):空
- Per Thread(User)(每个线程或用户): False
查看结果,执行两次后,发现每次的随机数都不同。
3、共享随机数生成器(不常用)
这里每个线程共享各自的随机数生成器,最终生成的随机数,在每个线程组中都相同。
-
线程组内配置:这里将线程组内取样器循环3次,每秒生成2个用户
-
随机变量配置元件
- Seed for Random function (随机种子):10
- Per Thread(User)(每个线程或用户): True
执行两次后,发现每次执行时,每个线程组的随机数都相同。
-
线程组内配置:这里将线程组内取样器循环3次,每秒生成2个用户
-
随机变量配置元件
- Seed for Random function (随机种子):10
- Per Thread(User)(每个线程或用户): False
执行两次后,发现每次执行时,每个线程组的随机数是不相同,但每次执行时的随机数与之前生成的随机数是相同的。
三、总结
序号 | Seed for Random function (随机种子) | Per Thread(User)(每个线程或用户) | 运行结果 | 说明 |
---|---|---|---|---|
1 | 空 | False | 运行2次,每次生成的随机数都不同 | 那么每个线程独享各自的随机数生成器 |
2 | 10 | True | 运行2次,发现每次执行时,每个线程生成的随机数都相同。 | 随机种子相同,所有线程或用户共享同一个随机数生成器 |
3 | 10 | False | 运行2次,发现每次执行时,每个线程生成的随机数是不相同,但每次执行时的随机数与之前运行时生成的随机数是相同的。 | 随机种子相同,所有线程或用户不共享随机数生成器 |