jmeter——生成多样的接口自动化html报告

本文介绍了使用jmeter生成接口自动化测试报告的四种方法:1) jmeter自带HTML报告;2) jmeter+ant优化报告;3) 批量执行jmeter工具;4) jmeter+allure生成报告。详细讲解了每种方案的实现步骤和效果,并提供了相关配置和脚本示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实现目的

对于接口自动化来说有很多工具和框架来实现,比较常遇到的实现工具非jmeter莫属啦;

简单的界面、轻巧的安装配置、完善的功能、学习成本低这就导致了jmeter是很多人的首选;

特别是代码基础薄弱的同学,更加适合借助此工具实现接口自动化,而且做接口、性能测试也是极为方便;

对于自动化来说有一个是必不可少的,测试报告,可以对外提供的测试报告,本文就聊一聊jmeter实现接口自动化测试报告的

提供方案,当前提供四种方案来实现,各有优缺建议选择适合项目要求的的方案实现。

二、实现效果

接下来我们聊一下四种方案分别可以实现的html报告效果

1、jmter自带的HTML报告

在这里插入图片描述
性能测试报告

2、jmeter+ant报告优化

在这里插入图片描述

3、批量执行jmeter工具

在这里插入图片描述

4、jmeter+allure生成测试报告

在这里插入图片描述

三、实现方案

1、jmeter自带的HTML报告

  1. 接口自动化HTML
    (1)实现方式是通过ant来调用biud文件来实现的
    首先是ant安装和环境变量配置:https://blog.youkuaiyun.com/tangsl666/article/details/79431037
    【注意】:首先查一下本地的JDK版本,1.8以上的建议下载ant1.10,1.8以下的建议下载ant1.9
    在这里插入图片描述

    (2)把apache-jmeter-5.3\extras目录下的ant-jmeter-1.1.1.jar复制到apache-ant-1.9.16\lib目录下
    在这里插入图片描述

    (3)创建一个build.xml文件修改build内容,修改为如下:

<?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="F:\20220425\apache-jmeter-5.3\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="F:\20220425\apache-jmeter-5.3" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->   
    <property name="jmeter.result.jtl.dir" value="F:\20220425\jmeterAnt\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="F:\20220425\jmeterAnt\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="F:\20220425\jmeterAnt" 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>
        <copy todir="${jmeter.result.html.dir}">  
            <fileset dir="${jmeter.home}/extras">  
                <include name="collapse.png" />  
                <include name="expand.png" />  
            </fileset>  
        </copy>  
    </target>  
      
</project>

(4)把修改后的build文件放到ant目录下,然后再ant目录文件输入框输入cmd,进入cmd命令
执行命令:ant,既可在指定路径得到html报告
在这里插入图片描述

  1. 性能测试报告
    【win】+R 打开CMD窗口,输入命令生成HTML测试报告
    cmd命令:jmeter -n -t 脚本文件路径 -l 11.jtl -e -o html
    jmetre:声明调用的是jmeter工具执行
    -n:非GUI模式执行JMeter
    -t:执行测试文件所在的位置
    -l:指定生成测试结果的保存文件,如:jtl、csv、xml、txt等。此文件要在指定路径下不存在
    -e:测试结束后,生成测试报告
    -o:指定测试报告的存放位置【文件夹不存在或者为空】
    样例:jemter -n -t E:\11.jmx -l E:\11.jtl -e -o html
    在这里插入图片描述

2、jmeter+ant优化测试报告

和第一步的jmeter自带html生成类似也是ant执行buid脚本

但是需要修改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="F:\20220425\apache-jmeter-5.3\extras" />  
    <!-- 需要改成自己本地的 Jmeter 目录-->    
    <property name="jmeter.home" value="F:\20220425\apache-jmeter-5.3" />  
    <!-- jmeter生成jtl格式的结果报告的路径-->   
    <property name="jmeter.result.jtl.dir" value="F:\20220425\jmeterAnt\jtl" />  
    <!-- jmeter生成html格式的结果报告的路径-->  
    <property name="jmeter.result.html.dir" value="F:\20220425\jmeterAnt\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="F:\20220425\jmeterAnt" 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.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的bin目录下jmeter.properties文件

jmeter.save.saveservice.output_format=xml
#jmeter.save.saveservice.output_format=xml   使用ant 命令时候打开这个,其他使用csv格式

# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=all
#
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

最后ant调用build文件既可。这里就不详细介绍啦,可以看下面的详情连接

【备注】:详情请参考:https://blog.youkuaiyun.com/qq_32828053/article/details/124687407?spm=1001.2014.3001.5501

3、使用jmeter脚本批量执行工具生成

使用BAT工具来加载批量执行jmeter脚本
BAT提取路径:
链接:https://pan.baidu.com/s/15HiGu6Ay-0d9Gy3Mj7gTOg
提取码:po6f

使用说明:
(1)解压文件之后点击BAT.exe,选择jmeter的安装路径
在这里插入图片描述

(2)把需要执行的脚本放置到BAT V2.0.4.0\TestCase\demo\sample目录下(也可以在testcase下新建目录)
在这里插入图片描述

(3)BTA选择工程–》快速创建:创建当前执行jmeter脚本的ini文件
在这里插入图片描述
(4)导入ini文件并点击执行脚本,之后过后自动生成和打开测试报告
工程–>打开:选择刚才生成的ini文件
在这里插入图片描述
在这里插入图片描述

4、jmeter+allure生成测试报告

首先还是执行jmeter脚本生成执行结果文件*.xml

然后通过pytest解析xml文件

把解析后的文件加上allure标签

最后执行生成allure报告既可

【备注】详情请参考:

四、遗留问题

<think>好的,我需要回答用户关于JMeter是否支持白盒测试的问题。首先,我要明确白盒测试和黑盒测试的定义。白盒测试主要关注内部代码结构、路径覆盖等,通常需要访问代码,比如单元测试、集成测试。而黑盒测试则关注功能,不涉及内部实现,比如接口测试、性能测试。 根据用户提供的引用内容,引用[4]提到白盒测试涉及单元测试和集成测试,而企业在这方面可能缺乏经验。引用[5]指出白盒测试可以补充黑盒测试的不足,比如内存泄漏。JMeter在引用[1]、[2]中被描述为用于性能测试的工具,主要用于接口和负载测试,属于黑盒范畴。 接下来,我需要分析JMeter的功能。JMeter主要用于模拟请求,测试性能,检查响应时间等,并不直接支持代码级的测试,比如代码覆盖率或内存泄漏检测。因此,JMeter更适合黑盒测试。不过,引用[3]提到Allure2生成测试报告,可能结合其他工具使用,但JMeter本身并不处理白盒测试。 结论应该是JMeter不支持白盒测试,但可以与其他工具结合使用。需要确保回答结构清晰,引用相关文献,并生成相关问题。</think>JMeter 作为主流的性能测试工具,其核心功能定位和设计原理决定了其对白盒测试的支持程度。以下是具体分析: ### 一、JMeter 功能定位分析 1. **黑盒测试特性** JMeter 通过模拟 HTTP/HTTPS/TCP 等协议请求实现接口性能测试,其测试过程不涉及被测系统内部代码逻辑验证,属于典型的**黑盒测试工具**。例如创建线程组模拟并发用户,通过响应断言验证接口返回结果是否符合预期[^2]。 2. **白盒测试能力缺失** 白盒测试需要实现代码覆盖率分析(如行覆盖、分支覆盖)、内存泄漏检测、单元测试等能力。而 JMeter 无法直接访问被测系统源代码,也不提供代码插桩、静态代码分析等功能[^4][^5]。 $$ \text{测试类型分类} = \begin{cases} \text{黑盒测试} & \text{JMeter 主场景} \\ \text{白盒测试} & \text{需专用工具(如JUnit、JaCoCo)} \end{cases} $$ ### 二、JMeter 与白盒测试的关联场景 虽然 JMeter 本身不直接支持白盒测试,但可通过技术组合实现部分关联应用: 1. **接口级代码路径覆盖** 通过设计不同参数组合的 HTTP 请求,可以触发服务端不同代码分支的执行,间接达到接口层面的路径覆盖验证[^1]。 2. **异常场景压力测试** 结合白盒测试发现的代码缺陷(如内存泄漏点),使用 JMeter 构造针对性压力场景,验证系统在持续高负载下的稳定性。 ### 三、工具对比与选型建议 | 测试类型 | 适用工具 | JMeter 适用性 | |----------------|-------------------------|---------------| | 单元测试 | JUnit, TestNG | 不适用 | | 代码覆盖率分析 | JaCoCo, Cobertura | 不适用 | | 性能测试 | JMeter, LoadRunner | 核心功能 | | 内存泄漏检测 | Valgrind, VisualVM | 不适用 | ### 四、典型应用场景示例 ```java // 白盒测试示例:使用 JUnit 进行单元测试 @Test public void testCalculate() { Calculator calc = new Calculator(); assertEquals(5, calc.add(2, 3)); // 验证代码逻辑正确性 } // JMeter 测试示例:通过 HTTP 请求验证接口性能 HTTP Request Defaults -> Server Name: api.example.com HTTP Request -> Path: /calculate?x=2&y=3 Response Assertion -> Contains "result":5 ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值