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,可查看到测试报告,如下截图:
        
  • 相关阅读:
    net5 webapi中 SwaggerUI如何进行版本控制
    动态菜单/权限管理的实现效果(数据前提:须做好 菜单、按钮、角色、用户等相关功能)
    MOS管的引脚,G、S、D分别代表什么?
    关系再好,也不要跟人透露这三个隐私。
    Linux 学习笔记
    算法 蓄水问题
    算法 等概率问题
    算法 字符串类问题(一)
    效率,生产力和用户友好的应用程序是GeneXus为Salinas集团带来的一些好处
    Multillantas Nieto通过智能设备和GeneXus将生产率提高了50%
  • 原文地址:https://www.cnblogs.com/fousor/p/9999453.html
Copyright © 2011-2022 走看看