当前位置:   article > 正文

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

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

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

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;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

{
	"username": "admin",
	"password": "password"
	}
  • 1
  • 2
  • 3
  • 4

BeanShell取样器:编写如下代码

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

情况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"]}]}
  • 1

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/881100
推荐阅读
相关标签
  

闽ICP备14008679号