zoukankan      html  css  js  c++  java
  • [搬运工系列]-JMeter(二十二)ANT批量执行Jmeter脚本

    一、环境准备:

      1、Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

        命令行输入:java -version,出现如下提示说明安装成功

      

      2、ANT下载:http://ant.apache.org/bindownload.cgi

        命令行输入:ant -v,出现如下提示说明安装成功

      

      3、Jmeter下载:http://jmeter.apache.org/download_jmeter.cgi

      4、将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中

      5、修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml  

      

    二、Jmeter脚本:

      1、如何编写脚本请参见:http://www.cnblogs.com/puresoul/p/4740436.html

       2、脚本目录:D:apache-jmeter-2.13demo

      

      3、脚本内容:

      测试百度.jmx                    Google1.jmx

        

    三、build.xml代码: 

    复制代码
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <project name="ant-jmeter-test" default="run" basedir=".">
     4     <tstamp>
     5         <format property="time" pattern="yyyyMMddhhmm" />
     6     </tstamp>
     7     <!-- 需要改成自己本地的 Jmeter 目录-->  
     8     <property name="jmeter.home" value="D:apache-jmeter-2.13" />
     9     <!-- jmeter生成jtl格式的结果报告的路径--> 
    10     <property name="jmeter.result.jtl.dir" value="D:apache-jmeter-2.13demo
    eportjtl" />
    11     <!-- jmeter生成html格式的结果报告的路径-->
    12     <property name="jmeter.result.html.dir" value="D:apache-jmeter-2.13demo
    eporthtml" />
    13     <!-- 生成的报告的前缀-->  
    14     <property name="ReportName" value="TestReport" />
    15     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    16     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    17     
    18     <target name="run">
    19         <antcall target="test" />
    20         <antcall target="report" />
    21     </target>
    22     
    23     <target name="test">
    24         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
    25         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
    26              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
    27             <testplans dir="D:apache-jmeter-2.13demo" includes="*.jmx" />
    28 
    29        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    30 
    31         </jmeter>
    32     </target>
    33         
    34     <target name="report">
    35         <xslt in="${jmeter.result.jtlName}"
    36               out="${jmeter.result.htmlName}"
    37               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
    38                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
    39         <copy todir="${jmeter.result.html.dir}">
    40             <fileset dir="${jmeter.home}/extras">
    41                 <include name="collapse.png" />
    42                 <include name="expand.png" />
    43             </fileset>
    44         </copy>
    45     </target>
    46 </project>
    复制代码

    四、运行脚本:

     1、cmd进入脚本目录:D:apache-jmeter-2.13demo

     2、输入:ant  或 ant run(run为build.xml中的task名),执行结果:

    复制代码
    D:apache-jmeter-2.13demo>ant
    Buildfile: build.xml
    
    all:
    
    test:
       [jmeter] Executing test plan: D:apache-jmeter-2.13demoGoogle1.jmx ==> D:apache-jmeter-2.13demo
    eportjtlTestReport201509141114.jtl
       [jmeter] Creating summariser <summary>
       [jmeter] Created the tree successfully using D:apache-jmeter-2.13demoGoogle1.jmx
       [jmeter] Starting the test @ Mon Sep 14 23:14:32 CST 2015 (1442243672984)
       [jmeter] Waiting for possible shutdown message on port 4445
       [jmeter] summary +      1 in     1s =    1.9/s Avg:   248 Min:   248 Max:   248 Err:     1 (100.00%) Active: 1 Started: 1 Finished: 0
       [jmeter] summary +      5 in     1s =    7.8/s Avg:   119 Min:   107 Max:   137 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
       [jmeter] summary =      6 in   1.2s =    5.2/s Avg:   140 Min:   107 Max:   248 Err:     1 (16.67%)
       [jmeter] Tidying up ...    @ Mon Sep 14 23:14:34 CST 2015 (1442243674232)
       [jmeter] ... end of run
       [jmeter] Executing test plan: D:apache-jmeter-2.13demo测试百度.jmx ==> D:apache-jmeter-2.13demo
    eportjtlTestReport201509141114.jtl
       [jmeter] Creating summariser <summary>
       [jmeter] Created the tree successfully using D:apache-jmeter-2.13demo测试百度.jmx
       [jmeter] Starting the test @ Mon Sep 14 23:14:35 CST 2015 (1442243675376)
       [jmeter] Waiting for possible shutdown message on port 4445
       [jmeter] summary +      1 in   0.5s =    2.1/s Avg:   196 Min:   196 Max:   196 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
       [jmeter] summary +      5 in     1s =    8.4/s Avg:   113 Min:   107 Max:   133 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
       [jmeter] summary =      6 in   1.1s =    5.6/s Avg:   126 Min:   107 Max:   196 Err:     0 (0.00%)
       [jmeter] Tidying up ...    @ Mon Sep 14 23:14:36 CST 2015 (1442243676535)
       [jmeter] ... end of run
    
    report:
         [xslt] Processing D:apache-jmeter-2.13demo
    eportjtlTestReport201509141114.jtl to D:apache-jmeter-2.13demo
    eporthtmlTestReport201509141114.html
         [xslt] Loading stylesheet D:apache-jmeter-2.13extrasjmeter-results-detail-report_21.xsl
         [copy] Copying 2 files to D:apache-jmeter-2.13demo
    eporthtml
    
    BUILD SUCCESSFUL
    Total time: 5 seconds
    复制代码

     3、测试报告目录:D:apache-jmeter-2.13demo eporthtml,其中有一个红色失败的案例是我故意设置失败,以便查看的。 

    四:最后,说一个我在使用过程中碰到一个问题,上面build.xml文件第29行有一句必须要加上:<property name="jmeter.save.saveservice.output_format" value="xml"/>,否则会报如下的错误:   

    复制代码
    report:
         [xslt] Processing D:Toolsapache-jmeter-2.13demo
    eportjtlTestReport201509210923.jtl to D:Toolsapache-jmeter-2.13demo
    eporthtmlTestReport201509210923.html
         [xslt] Loading stylesheet D:Toolsapache-jmeter-2.13extrasjmeter-results-detail-report_21.xsl
         [xslt] : Error! 前言中不允许有内容。
         [xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: 前言中不允许有内容。
         [xslt] Failed to process D:Toolsapache-jmeter-2.13demo
    eportjtlTestReport201509210923.jtl
    复制代码

     因为不加上这一句,生成的.jtl文件是文本文件不是xml文件,使用xsl去转换.jtl文件时就会报错。

    更新补充:

      上面生成的报告有如下两个问题,解决办法参见Jmeter自带报告优化(一)

      1、Date report这里的时间没有正确显示出来

      2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。

    参考:

    1、http://rainbow702.iteye.com/blog/2159244

    2、http://www.programmerplanet.org/projects/jmeter-ant-task/

  • 相关阅读:
    后端架构师技术图谱
    互联网经典技术架构
    软件开发知识体系(二)
    软件开发知识体系(一)
    HSF源码剖析
    分库分表的几种常见形式以及可能遇到的难题
    iOS 关于MVC和MVVM设计模式的那些事
    MVC与MVP简单对比
    MVC、MVP、MVVM 模式
    Learning Android ActionBar
  • 原文地址:https://www.cnblogs.com/ninefish/p/10008296.html
Copyright © 2011-2022 走看看