搭建ant和jmeter一键测试平台
目的:
通过ant一键执行一个或多个jmeter脚本,并批量生成html格式的报告。
工具简介:
jdk
:包含java开发工具包(Java Development Kit)和java运行环境(jre),因jmeter是java开发,故需要安装jdk。
ant
:一个自动化工具,通过配置文件,执行一些重复性的任务。
jmeter
:性能测试工具,java语言开发。官方提供了与ant结合的jar包,可在ant的配置文件直接使用。
在XX目录下打开命令提示行
:在windows中,在XX目录下,按住shift,在空白处点击右键,即可看到在此处打开命令窗口
。或者运行cmd
后,cd到XX目录。
环境变量修改以后记得要打开新的cmd窗口才会生效。
1.安装环境
windows 7(所有工具均支持linux,故linux也可以)
2.安装软件
- jdk1.6
- jmeter2.13
- ant1.9.6
安装以上软件,并配置环境变量(配置环境变量请自行搜索)。打开命令提示行,验证是否安装正确。
验证java
C:\>Java -version
java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
验证jmeter
C:\>jmeter -v
Copyright (c) 1998-2015 The Apache Software Foundation
Version 2.13 r1665067
验证ant
C:\>ant -version
Apache Ant(TM) version 1.9.6 compiled on June 29 2015
3.集成
需要在ant中新建一个执行jmeter的task,而jmeter已经包含了一个这样的jar包,将JMETER_HOME/extras/ant-jmeter-1.1.1.jar
放入 ANT_HOME/lib
下。
另外,jmeter也提供了一个ant的build.xml示例,但是仅能执行一个jmeter脚本,我们需要修改。
先用jmeter的这个示例体验一把,在JMETER_HOME/extras
下打开命令提示行,输入ant
,然后回车。
如果最后能看到输出的 BUILD SUCCESSFUL 的字样,说明已经执行成功,另外也能看到在当前目录生成的Test.jtl和Test.html文件。其中html就是这样:
4.ant配置
主要是 build.xml ,jmeter提供的示例不能满足要求。需要满足以下条件:
- 执行指定目录下的所有jmeter脚本
- 保存脚本执行结果
- 根据执行结果解析成html报告,并保存到指定目录
关于ant的配置这里不再详述,另起一篇文章记录关于ant的使用。乌鸦的build.xml文件
需要修改build.xml中的几个配置
<property name="user_home" value="D:\work\testing\jmeter_ant3" /><!-- 当前的工作目录 -->
<property name="jmeter.home" value="C:\Program Files\apache-jmeter-2.13" /><!-- JMeter 安装目录 -->
<property name="dir_jmx" value="${user_home}/jmx" /><!-- jmx的存放目录 -->
<property name="dir_jtl" value="${user_home}/jtl" /><!-- jtl的存放目录,如不存在则自动创建 -->
<property name="dir_html" value="${user_home}/html" /><!-- html报告的存放目录,如不存在则自动创建 -->
<property name="xsl_name" value="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /><!-- xsl文件的路径,这个名字是jmeter提供的样例模板名 -->
另外需要两个额外的jar包,如果没有这两个jar,无法计算min和max,会得到NaN的结果。在jmeter 2.13已包含这两个jar,老版本若没有需自行下载放入JMETER_HOME/lib
下,下载jar包推荐:http://www.boyunjian.com/
<path id="xslt.classpath">
<fileset dir="${jmeter.home}\lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}\lib" includes="serializer*.jar"/>
</path>
还有 ant-contrib-1.0b3.jar ,提供遍历文件夹的功能,下载以后放入ANT_HOME/lib,下载jar包推荐:http://www.boyunjian.com/
如果不添加这个jar包,会报以下错误
[taskdef]Could not load definitions from resource net/sf/antcontrib/antlib.xml. It could not be found.
需要在ant中指定jmeter的输出结果为xml格式,或者修改jmeter的配置文件(jmeter.properties)输出结果为xml
ant配置,在jmeter标签下添加子元素:
<property name="jmeter.save.saveservice.output_format" value="xml"/>
jmeter配置,修改JMETER_HOME/bin/jmeter.properties
jmeter.save.saveservice.output_format=xml # 默认是csv
5.报表配置
通过调整 xsl 文件,解析xml格式的jtl日志生成不同样式的html报告。
使用xsl解析xml生成html,需要了解xsl标记语言,资料相对略少,只能照猫画虎。
默认的xsl不提供TPS的计算,乌鸦增加了TPS列。其中,TPS的计算公式为:请求次数/(最后一次请求时间+请求返回时间-第一次请求时间)。
乌鸦的xsl配置文件
6.其他配置
如果再安装一个web服务器,将生成的html输出到web服务器的发布目录,即可通过url直接访问测试报告。
2016-08-16 更新
7.无法生成html报告或html报告无内容
需要知道原理,为何最后能生成html报告?通过ant去调用jmeter,生成日志文件,这是jmeter提供的现成的方法,无非是将测试结果按照一定规律保存成csv或xml格式的文件,然后按照规律去读取csv或xml文件,生成html文件。
那么,如果html报告是空的,问题只可能是:
- csv或xml格式是空的
- 生成html文件过程有误
对于第一个,核实csv或xml文件是否有内容,这个一般不会出问题。
关键是第二个,本文介绍的方法中,生成html文件是通过使用xsl模板解析xml,如果xsl模板或xml文件有问题,均不能得到正常的html结果。如果可以的话,自己编写一个小程序,按照规律读取数据并计算,也可以得到一个深度定制的报告。
规律:
csv格式
timeStamp[ts],elapsed[t],label[lb],responseCode[rc],responseMessage[rm],threadName[tn],dataType[dt],success[s],failureMessage,bytes[by],Latency[lt]
请求发出的绝对时间,响应时间,请求的标签,返回码,返回消息,请求所属的线程,数据类型,是否成功,失败信息,字节,延迟时间
xml格式更清晰一些
<httpSample t="1303" lt="432" ts="1442923225198" s="true" lb="HTTP Request1" rc="200" rm="OK" tn="Thread Group 1-9" dt="text" by="377691" ng="10" na="10"/>
有了这些结果记录,就可以计算出各种需要的结果了。参考
2016-08-17 更新
Jmeter3.0 内置了生成html的功能,图标更丰富,更方便。参考
将csv格式的测试结果导出到path
jmeter -g <log file> -o <Path to output folder>
使用Non-GUI模式执行测试并生成html到path
jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
8.缺陷
2016-11-16更新
修改JMETER_HOME/bin/jmeter文件的JVM参数后,通过ant调用时没有使用新设置的JVM参数。
参考:
https://zh.wikipedia.org/wiki/JDK
https://zh.wikipedia.org/wiki/Apache_Ant
http://www.w3school.com.cn/xsl/xsl_languages.asp
http://www.boyunjian.com
https://github.com/wang153723482/MyConfig/tree/master/ant_jmeter
http://jmeter.apache.org/usermanual/glossary.html#Throughput
http://jmeter.apache.org/usermanual/generating-dashboard.html
本文链接:http://bigerhead.com/2016/02/230.html 转载请注明出处。