标签:
源博文来自于 http://my.oschina.net/hellotest/blog/517518
主要应用于接口的回归或者性能的简单查看功能。操作为先在jmeter中写好测试计划,保存为jmx文件,在cmd窗口对应路径下执行ant命令,会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。后续可扩展为接入jenkins集成,并邮件发送。
一 安装ant
下载apache-ant,放到对应路径下,然后进行环境变量配置。系统变量的CLASSPATH添加E:\Installation Pack\eclipse\apache-ant-1.9.6\lib;用户变量的PATH添加:E:\Installation Pack\eclipse\apache-ant-1.9.6\bin。打开cmd,执行 ant,提示"Buildfile:build.xml does not exist! Build failed"则配置成功,ant命令可用。如下图所示。
二 编写一个测试计划:见jmeter的http请求。如baidu.jmx.
三 编写build.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="all" basedir=".">
<!--为生成的jtl和html文件加时间戳--> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp>
<!--更改为自己的jmeter路径--> <property name="jmeter.home" value="E:\Installation Pack\jmeter" />
<!--更改为自己的jtl文件结果存放路径--> <property name="jmeter.result.jtl.dir" value="E:\Installation Pack\JmeterTest\resultLog\jtl" />
<!--更改为自己的html文件结果存放路径--> <property name="jmeter.result.html.dir" value="E:\Installation Pack\JmeterTest\resultLog\html" /> <!--生成的html报告的前缀--> <property name="ReportName" value="TestReport" />
<!--jlt和html文件名称--> <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}">
<!--改为自己的jmx文件所在路径--> <testplans dir="E:\Installation Pack\jmeter\bin\examples" includes="*.jmx" /> </jmeter> </target> <target name="report">
<!--使用jmeter自己的转化文件:将jtl转化为xsl文件,改为自己的xsl文件所在路径--> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
四 结果
在对应的路径下生成了jtl和html文件,如TestReport201511091118.html。在浏览器中打开html文件得到如下所示。
五 问题
每次做点什么我都会遇到一大堆问题的,这次也不例外,总结一下,问题如下
1 生成的html报告中,Min Time和Max Time无值,显示NaN,百度了下需要添加xalan.jar,serializer.jar两个jar包放入ant的lib中,但是我放进去后日志报错,serializer的,所以我只把xalan.jar包放到了ant的lib中,可正确运行且得到了Max和Min值
报错信息如下:E:\Installation Pack\JmeterTest\resultLog\jtl\build.xml:16: The following error occurred while executing this line: E:\Installation Pack\JmeterTest\resultLog\jtl\build.xml:27: java.lang.IllegalAccessError: tried to access class org.apache.xml.serializer.ExtendedContentHandler from class org.apache.xalan.transformer.TransformerImpl at org.apache.xalan.transformer.TransformerImpl.createSerializationHandler(TransformerImpl.java:1152)
2 源文档中说可以增加90%Line这个参数并且贴出了代码,但是我实验了不成功,觉得写得不对。如下
<!--.......................其他内容略....................................--> <!-- New add 90% line 这部分可不写,直接在<xsl:template name="summary">中把position参数传过去,position参数即count(/testResults/*)的值(总行数)--> <xsl:variable name="allLineTime"> <xsl:call-template name="line"> <xsl:with-param name="nodes" select="/testResults/*/@t" /> <xsl:with-param name="postion" select="$allPostion" /> </xsl:call-template> </xsl:variable> <!--.......................其他内容略....................................--> <!-- New add 90% line --> <xsl:template name="line"> <xsl:param name="nodes" select="/.." /> <xsl:param name="postion" select="/.." /> <xsl:choose> <xsl:when test="not($nodes)">LNaN</xsl:when> <xsl:otherwise> <xsl:for-each select="$nodes">
<!--nodes得到的是响应时间列表,descending即按倒序排列,$position即得到的倒序后的最后一条,也就是第一条,所以并不是90%Line Time,我不大会写xml,未完成这个问题的解决,试图用公式没有成功。--> <xsl:sort data-type="number" order="descending" /> <xsl:if test="position() =$postion">
<!--number(.)即得到对应position的值。也就是指定记录的响应时间--> <xsl:value-of select="number(.)" /> </xsl:if> </xsl:for-each> </xsl:otherwise> </xsl:choose> </xsl:template> <!--.......................其他内容略....................................-->
3 如果90%可加,那么qps怎么计算的?都是需要自己写公式统计吗。明天问下擅长xml的同事把问题2解决掉,后续再扩展功能
ps:好难过,我问一个同事问题,他看到我在用ant编译,大大的鄙视了我一番,说现在都是maven啦,没人用ant。哭
标签:
原文地址:http://www.cnblogs.com/zhaoxd07/p/4951621.html