Ant+Jmeter自动化接口测试的部署 及 部署过程中的坑
一、环境准备:
1、Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html 配置环境变量-系统变量 JAVA_HOME C:\Program Files (x86)\Java\jdk1.8.0_111 Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点) 命令行输入:java -version,出现如下提示说明安装成功3、Jmeter下载:http://jmeter.apache.org/download_jmeter.cgi
4、将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
5、修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
二、准备Jmeter脚本: 1、脚本目录:D:\apache-jmeter-3.0\bin 三、修改D:\apache-jmeter-3.0\extras 目录下的 build.xml代码:<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> tstamp> <property name="jmeter.home" value="D:\apache-jmeter-3.0"/> <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.0\report"/> <property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.0\report"/> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> <target name="all"> <antcall target="test" /> <antcall target="report" /> target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <testplans dir="D:\apache-jmeter-3.0\bin" includes="APP服务接口.jmx" /> jmeter> target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> path> <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> xslt> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> fileset> copy> target> project>
四、运行脚本:
1、cmd进入extras 目录:D:\apache-jmeter-3.0\extras 输入ant 执行结果: 2、测试报告目录:D:\apache-jmeter-3.0\report\ ,查看其中的html报告 五、解决生成的报告中的问题 1、Date report这里的时间没有正确显示出来 2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。 修改build.xml中的如下代码:1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="ant-jmeter-test" default="all" basedir="."> 3 <tstamp> 4 <format property="time" pattern="yyyyMMddhhmm" /> 5 tstamp> 6 7 <property name="jmeter.home" value="D:\apache-jmeter-3.0"/> 8 9 <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-3.0\report"/> 10 11 <property name="jmeter.result.html.dir" value="D:\apache-jmeter-3.0\report"/> 12 13 <property name="ReportName" value="TestReport" /> 14 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 15 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 16 <target name="all"> 17 <antcall target="test" /> 18 <antcall target="report" /> 19 target> 20 <target name="test"> 21 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 22 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 23 24 <testplans dir="D:\apache-jmeter-3.0\bin" includes="APP服务接口.jmx" /> 25 26 27 jmeter> 28 target> 29 30 <path id="xslt.classpath"> 31 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 32 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 33 path> 34 35 36 <target name="report"> 37 <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" />tstamp> 38 <xslt 39 classpathref="xslt.classpath" 40 force="true" 41 in="${jmeter.result.jtlName}" 42 out="${jmeter.result.htmlName}" 43 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> 44 <param name="dateReport" expression="${report.datestamp}"/> 45 xslt> 46 47 <copy todir="${jmeter.result.html.dir}"> 48 <fileset dir="${jmeter.home}/extras"> 49 <include name="collapse.png" /> 50 <include name="expand.png" /> 51 fileset> 52 copy> 53 target> 54 project>
2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间的第二种解决方法。
解决方法: 从Jmeter的lib包里把xalan-2.7.2.jar和serializer-2.7.2.jar copy到Ant的lib包里;
六、测试过程中遇到的其他问题
1、使用Jmeter3.0版本,产生的html测试报告中是没有数据的,原因是3.0中的 jmeter-results-detail-report.xsl 有一些错误,从github中下载2.X版本中的 jmeter-results-detail-report_21.xsl放置在D:\apache-jmeter-3.0\extras 目录下,并修改build-xml:
2、报错如下:
taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
using the classloader AntClassLoader[]
原因:Ant 的ant-jmeter-1.1.1.jar这个文件缺失
解决方法:将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
参考地址:
http://www.cnblogs.com/puresoul/p/4808416.html
http://www.cnblogs.com/puresoul/p/5053035.html
http://www.jianshu.com/p/b606b27b7155