浅谈监听器之保存响应到文件

浅谈监听器之保存响应到文件

JMeter 提供了一个实用的监听器——“保存响应到文件”,该监听器能够自动将取样器的响应数据直接保存到指定的文件中,便于后续分析或存档。本文档旨在详细介绍如何配置和使用此监听器功能。

适用场景

● 长时间运行的测试:在需要长时间运行的大规模并发测试中,实时监控所有响应可能不切实际,此时将响应保存为文件可以事后分析。
● 故障排查:当测试过程中出现异常或错误时,保存响应内容有助于快速定位问题。
● 自动化测试报告:结合自动化脚本,可将响应内容整合进测试报告中,便于生成全面的测试总结。

配置步骤

  1. 打开JMeter测试计划:首先,确保你已启动JMeter并打开了你的测试计划。
  2. 添加监听器:
    ○ 在测试计划、线程组或者控制器上右击,选择“添加” > “监听器” > “保存响应到文件”。
  3. 配置保存响应到文件设置:
    ○ Save Successful Responses only(只保存成功响应):根据需要决定是否只保存成功的HTTP状态码的响应。
    ○ Save Failed Responses only(是否保存失败响应):通常建议勾选,以便捕捉错误和异常。
    ○ Don’t save Transaction Controller SampleResult:不保存事务控制器的样本结果
    ○ Variable Name containing saved file name:保存文件名的变量名,便于后续找到对应的文件名称。
    ○ 文件名前缀:文件名称前缀名称设置。
    ○ Don’t add number to prefix:不要在前缀中添加数字
    ○ Don’t add content type suffix:不添加内容类型后缀
    ○ Add timestamp:添加时间戳
    ○ Minimun Length of sequence number:设置文件名称最小的序列号。
  4. 运行测试:配置完毕后,运行你的测试计划。所有匹配监听器配置的响应将会被自动保存到指定的文件中。

应用实例

首先我们使用SpingBoot编写部分测试接口代码

@PostMapping(value = "/login",produces = "application/json;charset=UTF-8")public String authenticate(@RequestBody JSONObject request) {String validUsername = "admin";String validPassword = "password";String response = "{\"total\":2,\"data\":[{\"id\":123,\"name\":\"John Doe\",\"email\":\"johndoe@example.com\",\"phone\":\"123-456-7890\",\"address\":{\"street\":\"123 Main St\",\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"},\"interests\":[\"sports\",\"music\",\"travel\"]},{\"id\":456,\"name\":\"Jane Smith\",\"email\":\"janesmith@example.com\",\"phone\":\"987-654-3210\",\"address\":{\"street\":\"456 Elm St\",\"city\":\"Los Angeles\",\"state\":\"CA\",\"zip\":\"90001\"},\"interests\":[\"reading\",\"cooking\",\"hiking\"]}]}";if (request.getString("username").equals(validUsername) && request.getString("password").equals(validPassword)) {return response;} else {return response;}}

我们编写如下测试脚本
在这里插入图片描述
线程组:保持默认
HTTP信息头管理器:名称content-type,值为application/json;charset=UTF-8
HTTP请求:协议http,服务器名称或IP为127.0.0.1,端口设置为8091,方法为post,路径/login,内容编码为utf-8,消息体数据设置如下

{"username": "admin","password": "password"}

BeanShell取样器:编写如下代码

log.info("Variable Name containing saved file name值为:${fileName}");

情况1:Variable Name containing saved file name设置

保存响应到文件:Variable Name containing saved file name中设置为fileName,其他保持默认
运行脚本,查看JMeter打印日志内容

2024-07-24 16:28:34,481 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1
2024-07-24 16:28:34,503 INFO o.a.j.u.BeanShellTestElement: Variable Name containing saved file name值为:test20240724-1628_1.json

情况2:Don’t save Transaction Controller SampleResult设置

保存响应到文件:Variable Name containing saved file name中设置为fileName,文件名称前缀设置为test,勾选Don’t save Transaction Controller SampleResult,其他保持默认
运行脚本,查看生成的文件内容

{"total":2,"data":[{"id":123,"name":"John Doe","email":"johndoe@example.com","phone":"123-456-7890","address":{"street":"123 Main St","city":"New York","state":"NY","zip":"10001"},"interests":["sports","music","travel"]},{"id":456,"name":"Jane Smith","email":"janesmith@example.com","phone":"987-654-3210","address":{"street":"456 Elm St","city":"Los Angeles","state":"CA","zip":"90001"},"interests":["reading","cooking","hiking"]}]}

情况3:Minimun Length of sequence number设置

保存响应到文件:Variable Name containing saved file name中设置为fileName,文件名称前缀设置为test,勾选Don’t save Transaction Controller SampleResult,Minimun Length of sequence number设置3,为其他保持默认
运行脚本,查看生成的文件名称,在JMeter日志中查看

2024-07-24 17:14:01,021 INFO o.a.j.u.BeanShellTestElement: Variable Name containing saved file name值为:test20240724-1714_001.json

注意事项

● 性能影响:虽然保存响应到文件对性能影响较小,但大量并发下的频繁磁盘I/O操作可能会影响测试结果准确性,尤其是在资源有限的环境中。因此,在高负载测试时应谨慎使用,并考虑测试机器的硬件能力。
● 数据处理:响应文件可能会迅速增长,特别是在大并发测试中。确保有足够的磁盘空间,并准备好数据处理和分析的流程。
● 安全:如果响应包含敏感信息,务必确保文件的安全性和隐私保护措施到位。

结论

JMeter的“保存响应到文件”监听器为性能测试提供了便利的数据收集机制,它简化了测试结果的存储与分析流程。通过合理配置和管理,可以显著提高测试效率和准确性,是性能测试工程师不可或缺的工具之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第n天|本地安装mindspore之二|开始第一课的代码。以及对比xshell,MobaXterm

开始准备在本地的系统上跑例子了。从第一课开始吧。 1,下载代码 打开课程。 下载样例代码 https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/r2.3/tutorials/zh_cn/beginner/mindspore_quick_start.py 2,在本地Linux上输入并运…

Python新手如何制作植物大战僵尸?这篇文章教会你!

引言 《植物大战僵尸》是一款非常受欢迎的塔防游戏,玩家需要种植各种植物来抵御僵尸的进攻。在这篇文章中,我们将使用Python编写一个简化版的植物大战僵尸游戏,以展示如何使用Python创建游戏。 游戏规则 玩家将种植不同类型的植物来防御僵尸…

好用的电脑录屏软件免费推荐,拥有这3款就能高效录屏!

电脑录屏软件已成为我们记录生活、分享知识的得力助手。但是,市面上琳琅满目的录屏软件令人眼花缭乱,如何才能选择到一款好用的电脑录屏软件免费神器呢?今天,就让我来为您揭晓这个秘密! 首先,我们得明确一…

胖东来也要加入“打水仗”?瓶装水品牌又该如何出招

今年瓶装水行业的“战场”似乎格外热闹,比武汉的天气好像还要火热......从年头农夫山泉打出“纯净水”的牌,再到如今掀起价格内卷战,一箱12瓶的纯净水在某宝平台上仅售9.9元,平均下来每瓶单价不超一元,农夫山泉都出击了…

自动化网络爬虫:如何它成为提升数据收集效率的终极武器?

摘要 本文深入探讨了自动化网络爬虫技术如何彻底改变数据收集领域的游戏规则,揭示其作为提升工作效率的终极工具的奥秘。通过分析其工作原理、优势及实际应用案例,我们向读者展示了如何利用这一强大工具加速业务决策过程,同时保持数据收集的…

5G mmWave PAAM 开发平台

Avnet-Fujikura-AMD 5G 毫米波相控阵天线模块开发平台 Avnet 和 Fujikura 为毫米波频段创建了一个领先的 5G FR2 相控阵天线开发平台。该平台使开发人员能够使用 AMD Xilinx 的 Zynq UltraScale™ RFSoC Gen3 和 Fujikura 的 FutureAcess™ 相控阵天线模块 (PAAM) 快速创建和制…

算法日记day 18(二叉树的所有路径|左叶子之和)

一、二叉树的所有路径 题目: 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->…

抖音矩阵管理系统解决方案:一站式服务

在当今社交媒体蓬勃发展的时代,抖音作为一款短视频平台,凭借其独特的魅力和庞大的用户群体,已成为众多企业、个人乃至网红达人展示自我、推广品牌的重要舞台。然而,随着抖音账号数量的不断增加,如何高效、专业地管理这…

系统编程--Linux下文件的“其他操作”函数

这里写目录标题 文件存储理论补充dentry、inode 文件其他操作stat函数作用函数原型代码(以获取文件大小为例)补充(获取文件类型) lstat函数作用函数原型代码补充(获取文件权限)总结 tipslink函数作用简介函…

前端页面:用户交互持续时间跟踪(duration)user-interaction-tracker

引言 在用户至上的时代,精准把握用户行为已成为产品优化的关键。本文将详细介绍 user-interaction-tracker 库,它提供了一种高效的解决方案,用于跟踪用户交互的持续时间,并提升项目埋点的效率。通过本文,你将了解到如…

使用水星Mecury人形机器人搭建VR遥操作控制平台!

VR遥操作机械臂是一种将虚拟现实技术与机械臂控制相结合的系统,使用户可以通过虚拟现实设备操控和交互实际的机械臂。这种技术可以应用于多个领域,包括远程操作、培训、危险环境中的工作等。 双臂人形机器人是一种模拟人体上半身结构,包括头部…

跨域浏览器解决前端跨域问题

1.问题背景 这是一种属于非主流的解决跨域的方案,但是也是可以正常使用而且比较简单的。如果需要使用主流的解决前端跨域方案,请参考这篇文章。 我这边其实是优先建议大家使用主流的跨域方案,如果主流的实在不行,那么就使用跨域…

多路复用IO、TCP并发模型

时分复用 CPU单核在同一时刻只能做一件事情,一种解决办法是对CPU进行时分复用(多个事件流将CPU切割成多个时间片,不同事件流的时间片交替进行)。在计算机系统中,我们用线程或者进程来表示一条执行流,通过不同的线程或进程在操作系…

通过POST请求往Elastic批量插入数据

文章目录 引言I 请求文档请求参数请求例子引言 调试工具:Apifox 需求: 向Elasticsearch中的’test_index’索引批量插入文档 情况认证: Basic Auth 在 Header 添加参数 Authorization,其值为在 Basic 之后拼接空格,以及经过 Base64 编码的 {{Username}}:{{Password}} 示…

H3CNE(STP)

8.1 二层环路与STP的介绍 8.1.1 二层环路 8.1.2 冲突域 8.1.3 二层环路带来的问题 8.1.4 STP的基本概念:桥ID 8.1.5 STP的基本概念:根桥 8.1.6 STP的基本概念:Cost 8.1.7 STP的基本概念:Port ID 8.1.8 STP的基本概念:…

Ubuntu22.04下 MySQL8创建并使用存储过程

在Ubuntu下的MySQL 8中创建并使用存储过程: 使用mysql命令登录到MySQL服务器,例如: mysql -u root -p输入root用户的密码。 选择你想要创建存储过程的数据库,例如: CREATE DATABASE mydb;USE mydb;CREATE TABLE us…

pikachu Fileinclusion(local)

随便选择一个都试试 发现url上数字会变 发现文件名确实是file1.php~file5.php 那么会不会还有别的burp抓包选中数字 设置6-100的爆破 strat attack 678异常还有个100也是 先改一下试试看 其他的会报错 但是通过这我们可以得到路径 先写一个 下一步 读取系统文件 windows系统肯定…

【unity 新手教程 001/100】安装与窗口布局介绍

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持!💜💜 Unity下载与安装 👉点击跳转详细图文步骤:Unity Hub Unity 编辑器 窗口布局: Hierarchy: 层级窗口 | 默认 Sample Scene (main camera、direc…

矩阵分析——线性积分方程组的矩阵解法研究

矩阵分析——线性积分方程组的矩阵解法研究 前言线性积分方程组的矩阵解法研究 前言 “矩阵分析”是一门选修课,当时选这门课程的原因是想着图像处理就涉及到很多矩阵运算。但没想到的是这门课程吧虽然是选修,最后的结课要求是让我们写一篇“论文”&…

.dat 文件如何查看内容

第一种通过hexdump -C hexdump -C potk-00199D-0435-20000201.dat 命令查看 第二种 vscode ,将文件拖到vscode 工作区,选中要显示的乱码,点击右上角HEX图标,如下面两张图示