基于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文件用于发送邮件和短信通知。

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

最新文章
1客户案例研究:专家安全扫描,守护金融银行小程序安全和私密性 WeTest私有化部署的定制扫描平台让金融银行客户能无成本接入扫描系统并迅速上手使用。客户能方便快捷地根据定制手册进行自助扫描,根据生成的扫描报告,详细洞察漏洞,快速识别并准确定位问题根源。
2客户案例研究:专家渗透测试,洞察电子商务小程序重大交易漏洞 通过WeTest渗透测试服务,某知名零售公司旗下的在线购物类小程序中发现了8处安全风险,我们的安全专家为客户提供了详细的漏洞报告,提供了较为清晰完整的安全加固方案。在回归测试中,中危以上风险均被解决。
3自查小程序4大安全隐患!文末免费赠送小程序安全扫描专业版! 腾讯WeTest现面向小程序开发者开放免费申请使用小程序安全扫描专业版,助您提前发现全面的安全漏洞。扫描文中问卷二维码或点击问卷链接,即可报名参与免费领取活动。
4浅谈渗透测试服务在泛互行业带来的价值 在泛互联网行业中,渗透测试服务对于保障企业的网络安全至关重要。
5云手机卡顿/无特定设备/商店登录受限怎么办?WeTest专有云帮您解决! 公有云满足了大量小微企业、个人的测试需求;随着客户深入使用,也遇到了一系列新问题。本篇将对几个常见问题予以解答
购买
客服
反馈