目录
概念
关于JMeter的Properties/Variables,我们先看看JMeter的配置文件$JMETER_HOME/bin/jmeter.properties文件。
该文件定义了JMeter的默认系统参数。比如JMeter GUI的样式,XMLParser解析规则,SSL相关配置,很多取样器(Simpler)的默认行为,HttpClient的默认参数等等。
官方不建议直接修改该配置文件,而是修改$JMETER_HOME/bin/user.properties或者复制一份jmeter.properties并在用CLI模式下用-p去指定修改的jmeter.properties。
默认情况下,当JMeter启动时,自动加载$JMETER_HOME/bin/user.properties和$JMETER_HOME/bin/system.properties文件,当然也可以修改这一行为,即修改jmeter.properties中的user.properties和system.properties配置项即可。
Properties定义全局的变量,是线程共享,可以通过${__P()} 或是 ${__Properties()}函数获取到对应的值,而Variables是线程独享的变量,可以使用${}函数获取到对应的值。
因为Variables是线程独享的,如果需要线程间共享变量,则需要使用Properties
JMeter内置变量有哪些
- 打开JMeter -> 新建测试计划(TestPlan)
- 选中新建的测试计划(TestPlan) -> 右击 -> Add -> Threads(Users) -> ThreadGroup 创建线程组
- 选中新建的线程组(ThreadGroup) -> 右击 -> Add -> Simpler -> Debug Simpler
- 修改Debug Simpler
- JMeter properties -> True ====> 获取JMeter内置properties
- JMeter variables -> True ====> 获取JMeter运行的线程的内置variables
- System properties -> True ====> 获取JMeter System内置properties
- 选中新建的测试计划(TestPlan) -> 右击 -> Add -> Listener -> View Results Tree 添加结果树
- 执行测试计划,查看结果
- 增加ThreadCount,观察JMeter variables
- 修改user.properties,新增自定义的配置,查看自定义变量是否在结果中出现
- 修改system.properties,新增自定义的配置,查看自定义变量是否在结果中出现
- 修改jmeter.properties,新增自定义的配置,查看自定义变量是否在结果中出现
最佳实践
- 实际工作中,编写测试计划脚本是使用GUI模式,用于简单验证测试脚本的准确性。但是实际运行是CLI模式。CLI模式下,可以通过命令行给测试计划脚本传递不同的参数值。如
### 通过-J 给测试脚本设置或是覆盖默认的JMeter的Property,这样测试脚本中可以使用${__P()}或是${__Properties()}等获取参数值
### -D 可以设置或是覆盖默认的System的Properties
### -G 当分布式模式下,可以给remote server传递参数
$ jmeter -n -t my_test.jmx -l my_test.jtl -JLocal_Property1 Value1 -JLocal_Property2 Value2 -Duser.dir=xxxxx -GRemote_Property3 Value3
- 通过配置元件(CSV DataSet Config/User Defined Variables/Random Variables/....)或是前置处理器给即将执行的取样器提供“动态Variables”
- 通过后置处理器,处理当前取样器的结果,为下一个取样器提供“动态Variables”
试试吧
修改$JMETER_HOME/bin/user.properties,新增配置 user_property_key = user_property_value
修改$JMETER_HOME/bin/system.properties,新增配置 system_property_key = system_property_value