Ant+jmeter 实现自动化性能测试
一、前言
性能测试首选的工具是JMeter,在此不多做介绍,但是不得不说JMeter也是一款非常好的接口测试工具。性能测试过程中手工重复的活动非常多,为了给客户提供一个性能测试报告,我用了一周时间进行并发测试、数据整理、数据分析、最后生成测试报告,真的是手工重复到怀疑人生;于是萌生了实现性能测试自动化的想法。之前用Robot framework框架做过WEB自动化、安卓端自动化、接口自动化,但是始终未正真明白自动化的意义或是价值,现在突然顿悟,测试工作中最大的痛点就是重复,减少工作中的痛点才是自动化最大的价值。所以自动化的第一步不是选用什么语言或是框架,而是能真正分析出自己工作中的痛点。
二、框架介绍
大体逻辑如下:
(1)Ant通过XML文件进行构建,所有的构建信息配置在build.xml文件中,通过调用target树来执行各种任务;如执行测试脚本(jmx文件),输出测试结果(jtl文件);
(2)Ant通过测试结果(jtl文件)构建生成html测试报告,输出在制定路径下;
(3)根据build.xml文件中配置的邮件信息,将html测试报告自动发送到制定的邮箱;
三、环境搭建
Java安装
1、Java下载地址:https://www.java.com/zh_CN/
2、Java 环境变量配置
(1)设置路径:我的电脑->属性->高级->环境变量;
(2)在【系统变量】新增JAVA_HOME,变量为JDK的路径;
(3)在【系统变量】新增CLASSPATH,变量为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
(3)PATH中添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
3、检验是否配置成功
(1)cmd进入命令行,输入:java -version,显示出java 的版本信息即配置成功;
JMeter安装
1、JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
2、JMeter 环境变量配置
(1)设置路径:我的电脑->属性->高级->环境变量:
(2)在【系统变量】新增JMETER_HOME,变量为jmeter的路径
(3)PATH中添加 %JMETER_HOME%\bin;
3、检验是否配置成功
(1)cmd进入命令行,输入:jmeter -v,显示出JMETER的版本信息即配置成功;
Ant安装
1、Ant下载地址:http://ant.apache.org/bindownload.cgi
2、Ant 环境变量配置
(1) 设置路径:我的电脑->属性->高级->环境变量:
(2)在【系统变量】新增ANT_HOME,变量为ANT的路径
(3)PATH中添加%ANT_HOME%\bin;
3、检验是否配置成功
(1)cmd进入命令行输入:ant -version,显示出Ant的版本信息即配置成功;
四、构建步骤
1、测试准备
(1)JMeter脚本按测试计划选中进行保存,如果按线程进行保存,构建时会报错,后面问题汇总模块会提到,例如保存为TestPlan.jmx。
(2)新增构建文件的文件夹,分别存放测试脚本testcase目录和存放报告的report目录,其中report目录中再创建运行结果jtl目录和展示的html目录
(3)修改配置文件:jmeter.properties:
文件路径:%JMETER_HOME%\bin\jmeter.properties
将jmeter.save.saveservice.output_format=csv改为jmeter.save.saveservice.output_format=xml,去掉前面备注的#号。
2.Ant构建
(1) 找到JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar这个文件,将其复制到Ant所在目录lib子目录之下。
(2)编辑build.xml(重点)
新建一个xml文件,里面内容为:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="ant-jmeter-test" default="run" basedir="."> 3 <tstamp> 4 <format property="time" pattern="yyyyMMddhhmm" /> 5 </tstamp> 6 <!-- 需要改成自己本地的 Jmeter 目录--> 7 <property name="jmeter.home" value="C:\Users\payegis\Downloads\apache-jmeter-5.0" /> 8 <property name="report.title" value="性能测试"/> 9 <!-- jmeter生成jtl格式的结果报告的路径--> 10 <property name="jmeter.result.jtl.dir" value="C:\Users\payegis\Downloads\apache-jmeter-5.0\report\jtl" /> 11 <!-- jmeter生成html格式的结果报告的路径--> 12 <property name="jmeter.result.html.dir" value="C:\Users\payegis\Downloads\apache-jmeter-5.0\report\html" /> 13 <!-- 生成的报告的前缀--> 14 <property name="ReportName" value="TestReport" /> 15 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 16 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 17 18 <target name="run"> 19 <antcall target="test" /> 20 <antcall target="report" /> 21 </target> 22 23 <target name="test"> 24 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 25 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 26 <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--> 27 <testplans dir="C:\Users\payegis\Downloads\apache-jmeter-5.0\testcase" includes="*.jmx" /> 28 29 <property name="jmeter.save.saveservice.output_format" value="xml"/> 30 </jmeter> 31 </target> 32 33 <path id="xslt.classpath"> 34 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 35 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 36 </path> 37 38 39 <target name="report"> 40 <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> 41 <xslt 42 classpathref="xslt.classpath" 43 force="true" 44 in="${jmeter.result.jtlName}" 45 out="${jmeter.result.htmlName}" 46 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> 47 <param name="dateReport" expression="${report.datestamp}"/> 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>
根据注释中的内容修改,基本格式没有问题,运行根据报错查找相关错误,在保存的时候记得保存utf-8编码的格式。将这个build.xml文件放在ant的bin目录下。
(3)build.xml中构建活动定义完成后,cmd进入命令行,进入build.xml的目录下输入ant,回车执行,如下图提示BUILD SUCCESSFUL即可成功。
(3)本地目录下C:\Users\payegis\Downloads\apache-jmeter-5.0\report\htmlL,可查看到测试报告,如下截图: