Jmeter+Ant生成优化HTML的接口测试报告

为什么要这么做?

在实际测试场景遇到这样一种情况,开发重构了接口实现逻辑,该接口主要用于查询操作,接口的入参有上千种可能,查询出来的内容很多,需要与原来接口比对,检查是否一致

那此时,单纯用jmeter跑一遍的话,很难直观的看到测试之后的结果,所以就需要这样一种报告来展示,供开发修改

在这里,本地用的jmeter+ant的方式进行产出报告

具体操作步骤如下:

  1. 安装配置java环境和Jmeter环境---->这两个比较简单,不再叙述

  2.安装Ant及配置

    下载地址:https://ant.apache.org/bindownload.cgi

    a. 下载后解压到指定位置即可

    b. 将jmeter所在目录下的extras子目录里的ant-jmeter-1.1.1.jar复制到ant所在的目录lib子目录之下

    配置环境变量:

    ANT_HOME F:\apache-Ant

    CLASSPATH %ANT_HOME%\lib

    Path  %ANT_HOME%\bin

  命令行输入ant -version,出现版本信息则安装成功

  3. 实现原理

  通过执行ant命令,来调用build.xml

  build文件规定了脚本的调用路径(支持多脚本)、生成报告的模版、生成报告的路径和生成报告的名称

  build再通过配置调用jmeter执行脚本生成jtl结果文件,并把结果文件转换为html报告展示

  报告的展示内容首先受jmeter用例模版的控制,其次还受jmeter配置中的参数输出项控制

  4.实现步骤

    a. 把jmeter安装包extras目录下的ant-jmeter-1.1.1.jar转移到ant安装包lib目录下,ant运行时才能找到org.programmerplanet.ant.taskdefs.jmeter.JMeterTask这个类,之后可以触发Jmeter脚本

    b.jmeter插件包处理,对于部分版本的jmeter包缺少插件JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar  ,下载后放到jmeter/lib/ext目录下

    c. 新建文件夹pc,pc文件夹分别新建buildfile、resultlog、script三个文件夹,buildfile文件夹放入build.xml文件,resultlog里面新建html和jtl文件夹 ,script中放置待测试的jmx脚本

      build.xml文件的内容如下:

    

<?xml version="1.0" encoding="UTF-8"?>  
 
<project name="ant-jmeter-test" default="run" basedir=".">  
     
    <tstamp>  
        <format property="time" pattern="yyyyMMddhhmm" />  
    </tstamp>  
    <property name="basedirectory" value="E:\apache-jmeter-5.5\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="E:\apache-jmeter-5.5" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->  
    <property name="jmeter.result.jtl.dir" value="E:\apache-jmeter-5.5\jmeterAutoTest\pc\resultlog\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="E:\apache-jmeter-5.5\jmeterAutoTest\pc\resultlog\html" />  
    <!-- Name of test (without .jmx) -->  
    <property name="test" value="Test"/>  
    <!-- 生成的报告的前缀-->    
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${time}.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${time}.html" />  
     
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
    </path>  
     
    <target name="run">  
        <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="E:\apache-jmeter-5.5\jmeterAutoTest\pc\script" includes="*.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>            
        </jmeter>  
    </target>  
         
    <target name="report">  
        <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>  
          <xslt classpathref="xslt.classpath"
            force="true"
            in="${jmeter.result.jtlName}"
            out="${jmeter.result.htmlName}"
            style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
            <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
        <xslt classpathref="xslt.classpath"  
          force="true"  
          in="${jmeter.result.jtlName}"  
          out="${jmeter.result.htmlName}"  
         
          style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">  
          <param name="dateReport" expression="${report.datestamp}"/>
        </xslt>
        <copy todir="${jmeter.result.html.dir}">  
            <fileset dir="${jmeter.home}/extras">  
                <include name="collapse.png" />  
                <include name="expand.png" />  
            </fileset>  
        </copy>  
    </target>  
     
</project>
 
把其中一些关于路径配置的修改为自己的信息
其中jmeter-results-detail-report_21.xsl是汇总报告的模版
jmeter.results.shanhe.me.xsl是详细报告的模版,该模版需要单独下载,并放到extras目录下
  d. 报告展示信息调整
  要控制我们展示详细报告的信息,此时我们还要修改jmeter的配置,在生成的jtl结果中显示记录我们需要的数据,修改jmeter.properties,如下:
  
    将jmeter.save.saveservice.output_format=csv改为
jmeter.save.saveservice.output_format=xml并将#去掉
其他修改:

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=true
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

    e. 进入到buildfile目录下,打卡dos窗口,执行ant命令即可生成测试报告

posted @   cl111112  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示