zoukankan      html  css  js  c++  java
  • Ant+jmeter 实现自动化性能测试

    Jmeter是比较好的性能测试工具,而且免费,但是有一个问题是工具没有自带的定时自动测试的功能。晚上11点要压一个怎么办?所以查到了ant,正好有相应的JMeterTask。加上linux上的crontab功能,就可以实现定时自动化性能测试了!

    工具准备:

    Jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html

    Jmeter http://jmeter.apache.org/

    Ant http://ant.apache.org/

    环境准备:

    为了用到crontab,所以将环境搭建在linux服务器上。

    设置ant环境变量:

    vim /etc/profile

    进入编辑模式,在末尾输入

    export ANT_HOME="/home/apache-ant-1.9.7"(ant工具绝对路径)

    export PATH="/home/apache-ant-1.9.7/bin":$PATH(bin绝对路径

    保存并退出后,运行命令

    source /etc/profile

    接下来检查环境是否搭建好

    java环境检查

    Jmeter环境

    Ant环境

    以上,三个环境都搭建好了!

    找到JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar这个文件,将其复制到Ant所在目录lib子目录之下。

     

    编辑build.xml(重点)

    新建一个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="H:\apache-jmeter-2.12" />
     9     <!-- jmeter生成jtl格式的结果报告的路径 --> 
    10     <property name="jmeter.result.jtl.dir" value="H:\apache-jmeter-2.12\report\jtl" />
    11     <!-- jmeter生成html格式的结果报告的路径 -->
    12     <property name="jmeter.result.html.dir" value="H:\apache-jmeter-2.12\report\html" />
    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="H:\apache-jmeter-2.12\testcase" includes="*.jmx" />
    28 
    29        <property name="jmeter.save.saveservice.output_format" value="xml"/>
    30 
    31         </jmeter>
    32     </target>
    33    <path id="xslt.classpath">
    34         <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
    35         <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    36     </path>
    37 
    38         
    39     <target name="report">
    40         <xslt
    41               classpathref="xslt.classpath"
    42               force="true"
    43               in="${jmeter.result.jtlName}"
    44               out="${jmeter.result.htmlName}"
    45               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
    46              <param name="dateReport" expression="${report.datestamp}"/>
    47        </xslt>
    48 
    49                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
    50         <copy todir="${jmeter.result.html.dir}">
    51             <fileset dir="${jmeter.home}/extras">
    52                 <include name="collapse.png" />
    53                 <include name="expand.png" />
    54             </fileset>
    55         </copy>
    56     </target>
    57 </project>

      

    根据注释中的内容修改,基本格式没有问题,运行根据报错查找相关错误,在保存的时候记得保存utf-8编码的格式。将这个build.xml文件放在ant的bin目录下。

    Jmeter上的操作:

    首先在jmeter上确定jmx文件是可运行,不会报错的。

    linux服务器上的操作:

    防止服务没有打开,先

    Chmod 777 build.xml

    然后进入目录运行ant程序,测试开始!

     

    出现上面的结论就是测试成功。可以去目标路径把测试结果html直接打开来查看了。

     

    如果看到这个错误

    Error! Content is not allowed in prolog.

    Error! com.sun.org.apache.xml.inernal.utils.WrappedRuntimeException: Content is not allowed in prolog

    底下还有一长串错误的话,就需要在build.xml29行增加一句

    <property name="jmeter.save.saveservice.output_format" value="xml"/>就好了,这是文件格式的问题。(上面的代码中已经添加)

     

    设置定时功能:

    在Linux服务器上设置crontab

    命令crontab -e

    进入编辑模式,设置定时器内容

    0 23 21 * * /home/apache-ant-1.9.7/bin/ant -file  /home//apache-ant-1.9.7/bin/build.xml

     时间为5位分别表示 分钟 小时 日期 月份 星期(百度一下linux中时间设置,*代表取值范围内的数字,/代表”每”,-代表从某个数字到某个数字,,分开几个离散的数字)

    后面跟上要运行的应用程序的绝对路径

    在-file后面跟上配置文件的绝对路径

    上面的时间为每月的21号晚上11点启动程序,第二天到结果报告的文件夹去把晚上测试的结果拿出来看就好了!

    报错有点多哈哈,可以汇报给开发了!

    有关最后的minmax time无法查看的原理,可以参考这篇大神的文章

    http://www.cnblogs.com/puresoul/p/5053035.html

     

  • 相关阅读:
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Python eval() 函数
    Python repr() 函数
  • 原文地址:https://www.cnblogs.com/lsjdddddd/p/5697051.html
Copyright © 2011-2022 走看看