基于Ant的JMeter性能自动化测试

时间:2022-10-14 23:01:07

  本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/
  微信号:TencentWeTest


问题背景

最近使用JMeter写脚本来进行Web的性能测试,最终写了很多份脚本,然后就在想,这么多脚本,我不可能一个一个的手动去点啊,有没有什么办法来批量运行JMeter脚本呢?这个时候,想到了万能的Ant。通过查阅官方文档,还真有相应的JMeterTask,爽歪歪啊!接下来就看我怎样一步步来实现Web的性能自动化测试吧。

准备工作

       工欲善其事必先利其器,首先给大家介绍一下前期准备工作。

(1) java的运行环境正常,运行java -versionjavac -version能正常输出java版本;

基于Ant的JMeter性能自动化测试

(2) ant的运行环境正常;

               基于Ant的JMeter性能自动化测试

(3) 找到JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar这个文件

基于Ant的JMeter性能自动化测试

将其复制到Ant所在目录lib子目录之下,复制完如下

基于Ant的JMeter性能自动化测试

这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。

编写配置文件

    环境准备好之后,剩下的就是编写配置文件了,让Ant找到所有的JMeter文件。默认的配置文件,命名为build.xml,下面介绍如何编写这个xml文件。

<?xml version="1.0" encoding="GB2312"?> 

<project name="ant-jmeter-test" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="F:\Jmeter\apache-jmeter-2.6" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="F:\test_ant\resultLog\jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="F:\test_ant\resultLog\html" />
<!-- jmeter生成html格式的结果报告的前缀-->
<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}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="F:\test_ant" includes="*.jmx" />
</jmeter>
</target>

<target name="report">
<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.jpg" />
<include name="expand.jpg" />
</fileset>
</copy>
</target>
</project>

开始压测

       做完上面的工作,cdbuild.xml目录,运行命令ant命令,就会启动JMeter进行压测,JMeter运行完毕后,会自动执行将生成的jtl文件分析为csv文件的工作,执行完毕后会有类似如下输出:

         基于Ant的JMeter性能自动化测试

可以看到,F:\test_ant\文件夹下的所有jmx文件全部被执行了,并且生成的report结果在F:\test_ant\resultLog\html\文件夹下。

查看结果

下面我们打开生成的结果HTML文件查看:

基于Ant的JMeter性能自动化测试

从以上结果,可以看到本次测试总数,失败总数,平均响应时间,最小响应时间,最大响应时间,成功率,失败原因等指标。下面我们点击下拉按钮展开,查看详细数据:

基于Ant的JMeter性能自动化测试

详细数据中有:测试总数,失败总数,成功率,平均响应时间,页面大小等信息。

总结概括

      基于Ant的Jmeter性能自动化测试,核心思想就是利用JMeterTask这个类,通过编写build.xml配置文件,来找到JMeter文件所在的目录,并进行批量执行,最后生成响应的HTML结果报告页面。最后我们可以结合公司内部消息发送用的TencentMail.py文件用于发送邮件和短信通知。

      小伙伴们,你们学会了吗~*(^_^)*~

  本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/
  微信号:TencentWeTest