我们知道怎么利用Jmeter去编写接口自动化脚本,但是接口自动化测试单有脚本是不够的,我们还需要从git上拉取脚本,批量跑指定接口,生成接口运行报告,定位报错接口,接口定时任务,邮件通知等功能。
jmeter-results-detail-report_21.xsl
样式文件,可根据项目实际需求做修改;目前项目中使用了两个模板,一个作为邮件正文,一个作为邮件附件。
邮件通知:使用Jenkins的Extended E-mail Notification插件,顺序从Jmeter-》Jmeter+ant-》Jmeter+ant+git+Jenkins穿插原理,逐渐过渡。
二、Jmeter+ant+git+Jenkins接口自动化框架搭建
1、脚本testChimeInterface.jmx
/Users/renren/software/apache-jmeter-3.3/extras/InterfaceTest/testChimeInterface.jmx
2、添加jmeter环境变量
open -t ~/.bash_profile
cd /Users/renren/software/apache-jmeter-3.3/extras/InterfaceTest
jmeter -n -t testChimeInterface.jmx -l log.jtl
-n 这是指定JMeter在非用户界面模式运行
-t 包含测试计划的JMX文件的名字
-l 记录取样结果的JTL文件的名字
这里要讲两句,我们做接口自动化还好,要是用Jmeter做负载测试时,建议写好性能脚本后,用NON GUI模式进行负载测试,即非图形化界面,也就是建议使用命令行运行!因为图形化界面会消耗资源,导致负载测试结果不精确,特别是用图形化界面时还把查看结果树给打开,查看结果树输出的结果很多,所以,写完负载测试脚本后尽量把查看结果树等调试插件给禁掉。
我们启动Jmeter3.0以上版本,也有建议不要使用图形化界面进行负载测试的提示:
1、下载ant后设置ant环境变量:
方法同上面的jmeter
环境变量配置成功验证-》终端中输入ant,提示:Buildfile: build.xml does not exist2、将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本
3、主要逻辑思路:
/Users/renren/software/apache-jmeter-3.3/extras
下有build.xml文件/Users/renren/software/apache-jmeter-3.3/extras/InterfaceTest
下面的.jmx脚本,生成.jtl文件放入/Users/renren/software/apache-jmeter-3.3/extras/result/jtl中
然后ant再利用指定的.xsl文件去解析.jtl文件,生成对应的html文件放入/Users/renren/software/apache-jmeter-3.3/extras/result/html中。
简写就是:跑完结果后,.xsl文件把.jtl文件转化成直观的html报告。PS:XSL是什么
XSL是可扩展样式表语言(eXtensible Stylesheet Language)的外语缩写,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言。
易懂一点的说法:XSL可描述如何来显示 XML 文档,XSL 之于XML,就像CSS之于HTML。
build.xml文件中的内容如下:
切换到build.xml目录下
cd /Users/renren/software/apache-jmeter-3.3/extras
ant -f build.xml
BUILD SUCCESSFUL
Total time: 10 seconds
/Users/renren/software/apache-jmeter-3.3/extras/result目录下会生成.jtl和.html文件
这里不在详细讲解,因为前一篇UI自动化框架中 git email已写的很详细,这里只列举差异
1.所需插件:
2.Global Tool onfiguration中配置JDK、Git、Ant 我这块选择本地的安装位置
接下来“构建环境”中添加with Ant中的ant和JDK
3.在构建中增加构建步骤
4.构建后操作
5、设置定时任务,这里是设置每周一到周五的8点30分运行次JOB。
定时构建语法:
- * * * * *(五颗星,中间用空格隔开)
第一颗*
表示分钟,取值0~59
第二颗*
表示小时,取值0~23
第三颗*
表示一个月的第几天,取值1~31
第四颗*
表示第几月,取值1~12
第五颗*
表示一周中的第几天,取值0~7,其中0和7代表的都是周日
我这里是生成两个,一个简单的汇总报告,一个详细的报告(用于定位接口报错)
改为
PS:
使用jmeter-results.......xsl的一些前置操作
1、下载或修改style修改文件:jmeter.results.xsl
2、把下载的文件放到jmeter的extras目录下。
3、修改jmeter.properties文件如下部分,我这里大部分都修改成true,这样执行完脚本后就会保存这些结果到.jtl文件里面,重启jmeter生效:
其实XSL语法跟XML挺像的,多看看我们可以进行定制,如定义接口排序,扩展性能指标,那样我们性能测试也能利用这个生成报告,响应时间超过3秒的接口标黄显示,直观显示接口响应的性能状态,主要还是看公司的业务需求,目前我们没有涉及到性能,主要是业务功能的接口测试,所以我这块以事物作为用例来,一个用例下面会包含一个或多个接口。