JMeter执行方式有2种,一种是GUI模式,一种是NO-GUI模式。GUI模式就是界面模式,NO-GUI模式就是命令行模式。界面模式主要用来编写和调试脚本用的,项目的真正执行最好是采用命令行模式,因为采用命令行模式可以和持续集成或者其它框架进行对接,做成自动化回归测试平台。我们可以拿jmeter界面当做学习工具或者当做脚本开发和调试工具,如果采用界面模式做正式执行,那么这样的过程一定不是自动化的过程,是半手工半自动化的过程,这样我们就成为不了一个真正的接口自动化测试人员。命令行执行模式,具有更加灵活和强大的功能,能完成更多的高级用法。在真正的项目执行过程中,无论是接口自动化测试,还是接口性能测试,我个人采用的全都是命令行执行模式。
今天要讲的是如何将一个用界面编写好的脚本,使用命令行去执行,然后再使用命令行将生成的执行日志文件转化为html报告。这些功能,都是JMeter3.0及更高版本自带的功能,使用起来特别方便,而且报告也非常直观,图形化报表也很美观。
个人建议:我们在学习工具的时候,从简单入手、从界面入手没有错误,但是学完了简单的用法,依然需要向更高级的功能拓展,否则达不到真正理解和精通一款工具的目的。是否会灵活熟练使用命令行模式去执行jmeter任务,是用来判断你熟悉jmeter的考核点之一,也是用来判断你使用jmeter所处的阶段:个人学习式、小作坊式、正规项目级模式。
命令行详解:
以下操作是在windows上演示的,windows和linux上唯一的区别在于,windows的执行入口为jmeter.bat,linux上的执行入口为jmeter.sh,命令行本身的属性和参数都是一致的,并没有其它任何差异,因为jmeter本身是一个100%纯java编写的程序,是跨平台的。
下面是我保存脚本的目录结构,大家可以参考我前面编写的《JMeter工具基础知识篇-工程目录结构及命名规范》,如何创建规范点的工程目录名称。
接下来,我使用命令行,分两步将报告生成出来。第一步是使用命令行执行脚本并生成日志文件,第二步是使用命令行将生成的日志文件转化为html报告。
【jmeter命令行执行】
执行命令如下:
jmeter -n -t D:\SvnProject\test01\firstJmeterProject\script\baidu_test.jmx -l D:\SvnProject\test01\firstJmeterProject\result\jtl\baidu_test-debug-2-0-10-001.jtl -j D:\SvnProject\test01\firstJmeterProject\result\jtl\baidu_test-debug-2-0-10-001.log
执行过程如下:
执行后生成的日志文件如下:
【jmeter命令行生成报告】
报告生成命令如下:
jmeter -g D:\SvnProject\test01\firstJmeterProject\result\jtl\baidu_test-debug-2-0-10-001.jtl -o D:\SvnProject\test01\firstJmeterProject\result\html\
执行过程如下:
执行后生成的报告如下:
打开index.html就可以查看报告了:
【命令行使用特别说明】
1、 命令行执行时生成的日志文件的格式一定要设置为csv格式,请参考jmeter.properties文件中的属性:jmeter.save.saveservice.output_format=csv
如果执行的日志不是csv格式,如果被设置为了xml格式,转化报告的时候,会报以下错误:
2、 报告生成命令行设置的输出路径是一个空目录
我碰到很多人在这儿掉坑里了,这句话包含两层意思:
1)、这个路径是一个目录的全路径,注意,是目录的路径,不是文件路径;
2)、这个目录是个空目录,也就是说不包括任何文件和子目录。如果此目录不为空,生成的时候会报以下错误:
查看日志文件可以清楚的知道错误提示信息:
总结:IT是一门实践性很强的学科,看完了文章,一定要多动手练练,否则看似很简单的内容,当你真正去实践的时候会遇到各种坑,只要在实践的过程中,理论结合实践,让自己的工作效率越来越高,解决问题的能力越来越强,经验也越来越丰富。
备注:只讲干货,将知识的本质和原理辅以例子,让你学起来知其然并且知其所以然,让你一次的学习解决一类知识点!让我们一起学习并快乐着。如果觉得好,请动动手指转发吧,做一个知识的传播者,share knowledge with the world!