作者:windfall
背景:
Jmeter是基于Java开发的性能测试工具,也可以用于接口测试,对比LR来说,jmeter的操作简单并且是一款开源软件;
Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台方便快速打包与编译,就像是蚂蚁搬家一样,Jenkins是持续集成工具;
将这三者结合起来可以搭建一套Web HTTP接口测试的持续构建环境,实现接口自动化测试,搭建环境是Windows。
一、环境配置
1、Java环境配置
1.1、下载安装包(我使用的是jdk1.8版本,自行下载)
1.2、配置环境变量
2、jmeter环境配置
2.1、下载安装包(过程略过,自己找安装包,随便装在哪个目录下)
2.2、配置环境变量
3、ant环境配置
3.1、安装包下载
下载地址 ,下载后解压到指定位置即可
3.2、配置环境变量
二、jmeter+ant生成测试报告
1、事先准备好jmeter的测试脚本,f放置在一个新的文件夹里;
2、apache-jmeter-5.0extras目录下的ant-jmeter-1.1.1.jar文件复制到apache-ant-1.10.9-binapache-ant-1.10.9lib目录下;
3、找到jmeter.properties文档,在jmeter/bin目录下,打开该文档并编辑,修改jmeter报告输出格式为xml:
改jmeter.save.saveservice.output_format=csv 为jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#
4、 刚刚放置jmeter脚本的文件夹中新建一个build.xml文件,build.xml文件内代码如下,可自行复制
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="ant-jmeter-test" default="run" basedir="."> 3 4 <property name="jmeter.home" value="E:veri_report_ora_dmapache-jmeter-5.0apache-jmeter-5.0" /> 5 <property name="report.title" value="JMeter测试报告"/> 6 7 <property name="jmeter.result.jtl.dir" value="E:ant_study eportjtl" /> 8 9 <property name="jmeter.result.html.dir" value="E:ant_study eporthtml" /> 10 11 <property name="ReportName" value="APITestReport" /> 12 <tstamp> <format property="time" pattern="YYYYMMDD HHmmss" /></tstamp> 13 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName} ${time}.jtl" /> 14 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName} ${time}.html" /> 15 16 <target name="run"> 17 <antcall target="test" /> 18 <antcall target="report" /> 19 </target> 20 21 <target name="test"> 22 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 23 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 24 25 <testplans dir="E:ant_study" includes="*.jmx" /> 26 27 <property name="jmeter.save.saveservice.output_format" value="xml"/> 28 </jmeter> 29 </target> 30 31 <path id="xslt.classpath"> 32 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 33 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 34 </path> 35 36 37 <target name="report"> 38 <tstamp> <format property="report.datestamp" pattern="YYYY/MM/DD HH:mm" /></tstamp> 39 <xslt 40 classpathref="xslt.classpath" 41 force="true" 42 in="${jmeter.result.jtlName}" 43 out="${jmeter.result.htmlName}" 44 style="${jmeter.home}/extras/test.xsl"> 45 <param name="dateReport" expression="${report.datestamp}"/> 46 <param name="titleReport" expression="${report.title}:${report.datestamp}"/> 47 48 </xslt> 49 50 51 <copy todir="${jmeter.result.html.dir}"> 52 <fileset dir="${jmeter.home}/extras"> 53 <include name="collapse.png" /> 54 <include name="expand.png" /> 55 </fileset> 56 </copy> 57 </target> 58 59 </project>
以上代码有四处需要根据实际情况进行修改,
(其中第4点是一个报告模板,原始的是jmeter-results-detail-report_21.xsl,可以从网上下载新模板,然后直接在xml里面改名即可)
如下图所示:
5、运行ant命令
直接在命令行中进入build.xml所在文件夹中输入ant,即可运行脚本,看到success代表运行成功
6、查看报告
在刚刚i配置好的放置报告的文件夹里可以直接查看html格式的报告,简易版报告如下:
三、结合jenkins进行接口自动化测试
1、配置jenkins和salve负载机的教程请参考https://www.cnblogs.com/big-white/p/12307607.html
2、新建job任务:
首先配置Java/ant工作路径:打开jenkins,进入系统管理-全局工具管理
然后创建一个job任务,在general中勾选已经连接好的运行节点,然后在构建中选择invoke ant,填写对应的ant版本,build file中填写build.xml所在路径;
最后直接一键启动任务,点击build now,运行完成之后,可以在控制台中查看运行结果。