背景:最近读了一篇09年介绍JMeter 2.9 non-GUI运行的文章(Link),然而目前最新的JMeter 2.12版本已经对non-GUI做了改进。因此我写下这篇博文,算作更新吧。
==============华丽的分割线==============
JMeter有简单易用的界面,在准备性能测试脚本过程中,对elements的增删改都很容易。然而在test plan文件准备好之后,为了降低资源消耗,最好在non-GUI(命令行)模式下运行JMeter。
JMeter -n -t MyTestPlan.jmx
-n 表明是non-GUI模式下;-t 表明后面紧跟test plan文件名
此时,我们在GUI界面下定义的Listeners(监听)对象都无法访问。为了更好地显示non-GUI下的测试结果,我们需要了解以下两部分内容:
1. 使用JMeter SummariserSummariser也可以说是一种Listener,但它是唯一适用于non-GUI的。我们用JMeter properties(属性)来配置它。配置JMeter properties的方式有:
- 编辑JMeter.properties文件(默认在bin目录下) - 创建一个新的properties文件,在JMeter命令行下定义-p参数 - 创建任意数量的properties文件,在JMeter命令行下使用-J或-D参数(参考“JMeter -help”)籽藤注:在09年的文章中,貌似默认的JMeter.properties是没有Summariser相关内容的,但是在2014年JMeter 2.12版本中,尽管JMeter.properties有Summariser配置信息,但默认是commented状态。
以下是summariser在properties文件中的相关信息:
# Define the following property to automatically start a summariser # with that name(applies to non-GUI mode ony) summariser.name=summary # # interval between summaries (in seconds) default 3 minutes summariser.interval=180 # # Write messages to log file summariser.log=true # # Write messages to System.out summariser.out=true在上述配置启用之后,每隔180秒都会在命令行窗口和log文件(bin/JMeter.log)这两处输出测试结果。
籽藤注:下图是我本机上的结果,与上述配置无关。
2. 输出.jtl文件,在JMeter GUI界面打开命令:-l ‘jtl文件名’
比如,在bin目录下生成firstJTL.jtl文件:
D:\01-TestSkill[JMeter]\apache-jmeter-2.12\bin>jmeter.bat -n -t "D:\01-TestSkil l[JMeter]\apache-jmeter-2.12\printable_docs\demos\SimpleTestPlan.jmx" -l firstJTL.jtl
在jtl文件生成之后,打开JMeter GUI界面,随意添加你想要的监听器类型,通过“浏览”按钮导入jtl文件。这样,就可以得到你想要的图形化的结果了。