基于 JMeter 的接口用例,报告自定义
Posted 酔清风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 JMeter 的接口用例,报告自定义相关的知识,希望对你有一定的参考价值。
前言
针对接口测试,选择 JMeter 作为工具,会遇到的问题是,没有合适的分层结构,没有通用的报告模板。
对此,我们的解决方案是:
1、人为定义 JMeter 的层级结构,根据特定结构生成报告。
弊端
1、编辑繁琐,需要了解具体结构。
2、勉强能用。
优点
1、JMeter 都会用,通用性强。
2、统一格式方便管理,报告输出合理。
JMeter 用例设计概念
demo
│
├─config //配置中心,存放数据库配置,项目全局变量
│ 配置中心.jmx
├─doc //项目相关文档留存
│ 项目文档.md
├─lib //项目依赖的Jar包
│ fastjson-1.2.62.jar
├─resources //项目引用的外部文件
│ ├─csv
│ └─img
├─testcase //用例层
│ 用例1.jmx
│ 用例2.jmx
├─teststep //步骤层
│ 步骤1.jmx
│ 步骤2.jmx
└─testsuite //场景层,最后可执行的 JMX 文件
模块场景用例.jmx
Tips:
1、JMX 里面引用其他 JMX 可使用 Include Controller,被引用的 JMX 必须是 Test Fragment 。
2、引用的图片,csv,可以使用相对路径,以 JMeter 的 bin 目录为根目录。
3、testSuite 里面的 JMX 才是可以执行的,报告会根据该 JMX 的 名称来解析为模块名称,匹配类型为 ".场景用例.。
执行情况
在 GUI 里面执行,模块场景用例.jmx,可在查看结果树中进行 jtl 数据写入,需要打开对应配置(Configure 全部勾选即可),记录详细数据。
非 GUI 模式,可使用 -Jjmeter.save.saveservice.label=true
public void setJmeterOutputFormat()
Properties jmeterProps = JMeterUtils.getJMeterProperties();
jmeterProps.put("jmeter.save.saveservice.label", "true");
jmeterProps.put("jmeter.save.saveservice.response_data", "true");
jmeterProps.put("jmeter.save.saveservice.response_data.on_error", "true");
jmeterProps.put("jmeter.save.saveservice.response_message", "true");
jmeterProps.put("jmeter.save.saveservice.successful", "true");
jmeterProps.put("jmeter.save.saveservice.thread_name", "true");
jmeterProps.put("jmeter.save.saveservice.time", "true");
jmeterProps.put("jmeter.save.saveservice.subresults", "true");
jmeterProps.put("jmeter.save.saveservice.assertions", "true");
jmeterProps.put("jmeter.save.saveservice.latency", "true");
jmeterProps.put("jmeter.save.saveservice.connect_time", "true");
jmeterProps.put("jmeter.save.saveservice.samplerData", "true");
jmeterProps.put("jmeter.save.saveservice.responseHeaders", "true");
jmeterProps.put("jmeter.save.saveservice.requestHeaders", "true");
jmeterProps.put("jmeter.save.saveservice.encoding", "true");
jmeterProps.put("jmeter.save.saveservice.bytes", "true");
jmeterProps.put("jmeter.save.saveservice.url", "true");
jmeterProps.put("jmeter.save.saveservice.filename", "true");
jmeterProps.put("jmeter.save.saveservice.hostname", "true");
jmeterProps.put("jmeter.save.saveservice.thread_counts", "true");
jmeterProps.put("jmeter.save.saveservice.sample_count", "true");
jmeterProps.put("jmeter.save.saveservice.idle_time", "true");
生成的 jtl 的 xml 节点数有三层,最外层都是 testResults,里面包含 2 个 Transaction Controller,并且 都勾选 Generate parent samper
// 大概结构如下
<testResults>
<sample TrC>
<sample TrC>
<httpSample>
根据具体结构,就可以自己提取需要的信息。来生成报告模板(报告也是论坛上开源的基础上改了一些)。
"testStepNum": 32,
"caseFailNum": 0,
"caseSucessNum": 2,
"stepFailNum": 0,
"testCaseNum": 2,
"stepSucessNum": 32,
"executeTime": 0,
"testModule":
"模块名称":
"testCases": [
"moduleName": "",
"stepNum": 16,
"caseName": "用例名称", //模块名称
"time": 5357,
"type": "场景", //用例类型
"steps": [ // 步骤列表
"cookie": "",
"method": "POST",
"rspSize": 315,
"responseHeader": "",
"responseData": "",
"queryString": "",
"url": "",
"stepName": "", 步骤名称
"assertList": [ //断言结果
"failure": false,
"name": "断言响应状态码为200",
"error": false
],
"requestHeader": "",
"time": 81,
"status": 0
],
"status": "成功" //用例状态,成功或者失败
],
"moduleName": "" //模块名称
源码
https://github.com/Laimf1995/JMeter-Report
福利
福利大放送,从入门到实战,从电子书到面试真题,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你。
如果需要这份学习资料,可以微信扫描下方CSDN官方认证公众号【100%免费获取
】。
以上是关于基于 JMeter 的接口用例,报告自定义的主要内容,如果未能解决你的问题,请参考以下文章