是否可以使用表达式在JMeter中创建用户定义变量?

时间:2013-12-17 04:54:18

标签: performance testing jenkins jmeter

我一直在尝试使用JMeter创建一些自动化的性能测试,我正在Jenkins中设置一个工作,以便人们可以运行它并在那里查看结果。

我正在尝试向作业中添加一些与线程组中可用选项相对应的参数。他们是:

  • 用户数
  • 加速期
  • 循环次数

有些人不太了解'Ramp-up Period'的概念,所以我想把它称为'Delay'并用它来控制每个线程在开始测试之前等待多长时间。这意味着'加速期'应该等于(用户数x延迟)。

我用来运行测试的命令如下:

jmeter -n -t <myscript>.jmx -l results.jtl -j jmeter.log -JUSERS=10 -JDELAY=1 -JLOOPS=1

并且变量看起来像这样:

USERS = ${__P(USERS)}
RAMPUP = ${USERS}*${__P(DELAY)}
LOOPS = ${__P(LOOPS)}

但遗憾的是,RAMPUP变量的值并非我的预期。它最终成为“$ {USERS} * 1”

有没有办法在JMeter中执行此操作?

2 个答案:

答案 0 :(得分:0)

JMeter变量和属性是字符串,您不能对它们应用算术运算。你得到的行为绝对是预料之中的。此外,在运行期间无法动态更改属性,您必须在将其传递给JMeter之前计算加速。

答案 1 :(得分:0)

您可以在测试计划之前添加BSF PreProcessor,计算用户定义变量的值并使用putObject(String key,Object value)将值放入变量