目的:
通过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
安装以上软件,并配置环境变量(配置环境变量请自行搜索)。打开命令提示行,验证是否安装正确。
验证javaC:\>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)
验证jmeterC:\>jmeter -v
Copyright (c) 1998-2015 The Apache Software Foundation
Version 2.13 r1665067
验证antC:\>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中的几个配置
另外需要两个额外的jar包,如果没有这两个jar,无法计算min和max,会得到NaN的结果。在jmeter 2.13已包含这两个jar,老版本若没有需自行下载放入JMETER_HOME/lib下,下载jar包推荐:http://www.boyunjian.com/
还有 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)输出结果为xmlant配置,在jmeter标签下添加子元素:
jmeter配置,修改JMETER_HOME/bin/jmeter.propertiesjmeter.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格式更清晰一些
有了这些结果记录,就可以计算出各种需要的结果了。参考
2016-08-17 更新
Jmeter3.0 内置了生成html的功能,图标更丰富,更方便。参考
将csv格式的测试结果导出到pathjmeter -g -o
使用Non-GUI模式执行测试并生成html到pathjmeter -n -t -l -e -o
8.缺陷
2016-11-16更新
修改JMETER_HOME/bin/jmeter文件的JVM参数后,通过ant调用时没有使用新设置的JVM参数。