一、在linux中,使用非gui的方式执行jmeter。若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦。因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置
二、参数 -J 和 -G
1、格式:-J变量名=值 -G变量名=值
2、相同之处:设置jmeter属性,例如线程数、循环次数、ramp up-time等
3、不同之处:-J是设置本地jmeter属性;-G是设置server的jmeter属性(只有设置了远程机,开启了远程服务,才需要用到-G)
三、以设置本地jmeter属性为例,先在windows下编辑脚本,将线程数、循环次数、ramp up-time等参数化
1、添加用户自定义变量(添加变量的具体方法请参考Jmeter添加变量的四种方法)
定义三个变量和变量对应的默认值,例如${__P(threadNum,1)},表示变量threadNum的默认值为1
2、引用用户自定义变量,将线程属性和用户自定义变量关联起来
3、运行脚本,验证变量是否设置成功
两个样本请求的线程数都为1,说明设置成功(自定义变量中,变量的默认值都为1)
四、保存脚本,上传到linux中
1)执行命令:jmeter -n -t httptest.jmx -l log_httptest.jtl -JthreadNum=100 -JloopNum=10 -JrampupTime=10
其中-JloopNum为-1时,代表永远执行。
2)将log_httptest.jtl文件传到windows下,查看结果
3)再次运行脚本时,无需编辑脚本,只需要在执行命令中更改threadNum、loopNum和rampupTime的值,即可修改线程属性
例子:RGS="-Xms512m -Xmx3072m" ../jmeter.sh -n -t XXXX.jmx -JthreadNum=20 -JrampupNum=5 -JloopNum=-1 -Jduration=300 -JstartupDelay=1 -l result_20_repli12.jtl
RGS="-Xms512m -Xmx3072m":设置jemter运行内存,最大为3072m,最小为512m
../jmeter.sh -n -t XXXXX.jmx:通过命令行模式执行XXXXX.jmx脚本,-n是通过命令行的意思,-t是指定的脚本
-JthreadNum=20:设置并发用户数为20
-JrampupNum=5:设置5秒内启动20个并发用户
-JloopNum=-1:永远循环
-Jduration=300:持续运行300s
-JstartupDelay=1:延迟1s后启动
-l result_20_repli12.jtl:指定生成result_20_repli12.jtl文件,-l是指定生成测试结果的保存文件(.jtl格式)
另一种使用函数方式: