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

有没有什么办法来批量运行JMeter脚本呢?嘿,还真有!

问题背景

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

准备工作

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

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

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

               

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

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

这样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>  

开始压测

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

         

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

查看结果

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

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

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

总结概括

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

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

最新文章
1WeTest携PC&主机游戏质量保障服务和性能测试平台PerfDog亮相Gamescom 2024 以全场景游戏质量保障服务及性能测试解决方案,助力全球游戏行业的创新与发展
2一张图带你了解小程序隐私合规检测 快速了解小程序隐私合规检测如何防范黑灰产风险,守护用户数据安全
3防范小程序隐私合规风险,筑牢用户信任防线 了解隐私合规检测如何帮助小程序规避数据安全风险
4WeTest 海外测试需求有奖问卷活动中奖名单公布 近日,WeTest 海外测试需求有奖问卷活动圆满结束,经过紧张的统计与筛选,以下朋友们中奖,成功获得了我们的门票礼品。
5海外本地化测试的全生命周期服务 第三期 支付测试 海外支付风控升级,非本地测试封号现象频发,真金测试推进困难?来看WeTest的本地化支付测试方案
购买
客服
反馈