一、JMeter使用技巧
1、JMeter属性和变量
JMeter属性通过 jmeter.properties文件定义(在 $JMETER_HOME/bin目录下),是全局特性,用于定义一些默认的JMeter用法。
前面提到的remote_hosts属性是一个非常好的例子。属性可以在测试计划内部指定,但是因为它们的全局特性(被所有线程共享)无法用于线程指定的值。
与JMeter属性不同的是,JMeter变量则属于每个线程。不同线程间的变量值可以一样,也可以不一样。如果一个变量被一个线程更新,只有这个变量的线程副本变化了,因此其他运行中的线程是无法访问这个变量的。
一个比较好的例子是我们在之前用到的正则表达式提取器。提取出的值仅用于正在运行的线程的样本的上下文中。提取的变量是用户定义的,且在启动时可用于整个测试计划。如果多个用户定义的变量元素定义了相同的变量,以最后一个为准。
JMeter属性和变量看起来都比较简单,但是使用JMeter变量往往可以节约不少时间,比如,当从一个环境切换到另外一个环境时,如果这两套环境的架构类似,可以使用相同的录制脚本,而不用切换环境就重新设计脚本。例如,针对用户验收测试(User Acceptance Test,UAT)环境录制的测试脚本也可以在生产环境中运行。当然,前提是两套环境在架构上相似。为了达到这个目标,或者在测试计划根级上定义用户定义变量(User Defined Variable,UDV),或者替换HTTP请求取样器私有的URL。例如,可以在测试计划的根级上定义UDV,如下表所示。
在测试计划的根级上定义的UDV: