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

      一、前言
     性能测试首选的工具是JMeter,在此不多做介绍,但是不得不说JMeter也是一款非常好的接口测试工具。性能测试过程中手工重复的活动非常多,为了给客户提供一个性能测试报告,我用了一周时间进行并发测试、数据整理、数据分析、最后生成测试报告,真的是手工重复到怀疑人生;于是萌生了实现性能测试自动化的想法。之前用Robot framework框架做过WEB自动化、安卓端自动化、接口自动化,但是始终未正真明白自动化的意义或是价值,现在突然顿悟,测试工作中最大的痛点就是重复,减少工作中的痛点才是自动化最大的价值。所以自动化的第一步不是选用什么语言或是框架,而是能真正分析出自己工作中的痛点。
    二、框架介绍
      JMeter+Ant是比较常见的自动化测试框架,因为JMeter、Ant都是由java开发的,所以此性能测试框架具有良好的跨平台性;下图是按自己的理解绘制的自动化框架图:
      大体逻辑如下:
      (1)Ant通过XML文件进行构建,所有的构建信息配置在build.xml文件中,通过调用target树来执行各种任务;如执行测试脚本(jmx文件),输出测试结果(jtl文件);
      (2)Ant通过测试结果(jtl文件)构建生成html测试报告,输出在制定路径下;
      (3)根据build.xml文件中配置的邮件信息,将html测试报告自动发送到制定的邮箱;
    三、环境搭建
      Java安装
      1、Java下载地址:https://www.java.com/zh_CN/
      2、Java 环境变量配置
      (1)设置路径:我的电脑->属性->高级->环境变量;
      (2)在【系统变量】新增JAVA_HOME,变量为JDK的路径;
       
      (3)在【系统变量】新增CLASSPATH,变量为.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;
       
      (3)PATH中添加 %JAVA_HOME%in;%JAVA_HOME%jrein;
       
      3、检验是否配置成功
      (1)cmd进入命令行,输入:java -version,显示出java 的版本信息即配置成功;
       
      JMeter安装
      1、JMeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
      2、JMeter 环境变量配置
      (1)设置路径:我的电脑->属性->高级->环境变量:
      (2)在【系统变量】新增JMETER_HOME,变量为jmeter的路径
        
      (3)PATH中添加 %JMETER_HOME%in;
       
      3、检验是否配置成功
      (1)cmd进入命令行,输入:jmeter -v,显示出JMETER的版本信息即配置成功;
       
      Ant安装
      1、Ant下载地址:http://ant.apache.org/bindownload.cgi
      2、Ant 环境变量配置
      (1) 设置路径:我的电脑->属性->高级->环境变量:
      (2)在【系统变量】新增ANT_HOME,变量为ANT的路径
       
      (3)PATH中添加%ANT_HOME%in;
       
      3、检验是否配置成功
      (1)cmd进入命令行输入:ant -version,显示出Ant的版本信息即配置成功;
        
     四、构建步骤
      1、测试准备 
      (1)JMeter脚本按测试计划选中进行保存,如果按线程进行保存,构建时会报错,后面问题汇总模块会提到,例如保存为TestPlan.jmx。
      (2)新增构建文件的文件夹,分别存放测试脚本testcase目录和存放报告的report目录,其中report目录中再创建运行结果jtl目录和展示的html目录
        
      (3)修改配置文件:jmeter.properties:
          文件路径:%JMETER_HOME%injmeter.properties
               将jmeter.save.saveservice.output_format=csv改为jmeter.save.saveservice.output_format=xml,去掉前面备注的#号。

      2.Ant构建

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

         

        (2)编辑build.xml(重点)

          新建一个xml文件,里面内容为:  

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <project name="ant-jmeter-test" default="run" basedir=".">
     3     <tstamp>
     4         <format property="time" pattern="yyyyMMddhhmm" />
     5     </tstamp>
     6     <!-- 需要改成自己本地的 Jmeter 目录-->  
     7     <property name="jmeter.home" value="C:UserspayegisDownloadsapache-jmeter-5.0" />
     8     <property name="report.title" value="性能测试"/>
     9     <!-- jmeter生成jtl格式的结果报告的路径--> 
    10     <property name="jmeter.result.jtl.dir" value="C:UserspayegisDownloadsapache-jmeter-5.0
    eportjtl" />
    11     <!-- jmeter生成html格式的结果报告的路径-->
    12     <property name="jmeter.result.html.dir" value="C:UserspayegisDownloadsapache-jmeter-5.0
    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="C:UserspayegisDownloadsapache-jmeter-5.0	estcase" includes="*.jmx" />
    28             
    29             <property name="jmeter.save.saveservice.output_format" value="xml"/>
    30         </jmeter>
    31     </target>
    32         
    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         <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>
    41         <xslt 
    42               classpathref="xslt.classpath"
    43               force="true"
    44               in="${jmeter.result.jtlName}"
    45               out="${jmeter.result.htmlName}"
    46               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
    47               <param name="dateReport" expression="${report.datestamp}"/>
    48        </xslt>
    49 
    50                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
    51         <copy todir="${jmeter.result.html.dir}">
    52             <fileset dir="${jmeter.home}/extras">
    53                 <include name="collapse.png" />
    54                 <include name="expand.png" />
    55             </fileset>
    56         </copy>
    57     </target>
    58 
    59 </project>

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

         (3)build.xml中构建活动定义完成后,cmd进入命令行,进入build.xml的目录下输入ant,回车执行,如下图提示BUILD SUCCESSFUL即可成功。

          

      (3)本地目录下C:UserspayegisDownloadsapache-jmeter-5.0 eporthtmlL,可查看到测试报告,如下截图:
        
  • 相关阅读:
    poj 2763 Housewife Wind
    hdu 3966 Aragorn's Story
    poj 1655 Balancing Act 求树的重心
    有上下界的网络流问题
    URAL 1277 Cops and Thieves 最小割 无向图点带权点连通度
    ZOJ 2532 Internship 网络流求关键边
    ZOJ 2760 How Many Shortest Path 最大流+floyd求最短路
    SGU 438 The Glorious Karlutka River =) 拆点+动态流+最大流
    怎么样仿写已知网址的网页?
    5-10 公路村村通 (30分)
  • 原文地址:https://www.cnblogs.com/fousor/p/9999453.html
Copyright © 2011-2022 走看看