浅谈监听器之察看结果树
“察看结果树”(View Results Tree)是一个极其重要的监听器组件,它允许用户直观地检查每个采样器请求的详细执行结果。这对于测试脚本的开发和调试阶段尤为重要,因为它能够即时反馈请求的响应数据、错误信息及性能指标。本文档将详细介绍“察看结果树”的功能、配置方法以及使用时的注意事项。
引言
“察看结果树”监听器提供了详细的请求与响应信息视图,帮助开发者快速定位问题、验证预期结果,是JMeter中最常用的调试工具之一。但请注意,由于其详细记录每一项请求的响应,因此在高负载测试中应避免使用,以防止对测试系统造成不必要的负担。
功能概览
● 请求详情:展示发送给服务器的完整HTTP请求,包括请求行、头信息、参数及正文。
● 响应详情:展示服务器返回的完整HTTP响应,包括状态码、响应头和响应体。
● 时间统计:提供请求的处理时间(如响应时间、连接时间),有助于性能分析。
● 结果视图:支持“文本”、“HTML”、“文档”等多种视图模式,便于不同格式的响应数据查看。
● 异常捕获:清晰标记出请求失败或异常的情况,并提供错误信息。
● 保存结果:可配置将测试结果保存到文件,方便后续分析或记录。
使用步骤
- 添加监听器:在JMeter测试计划或线程组中,右键选择“添加” -> “监听器” -> “察看结果树”。
- 配置设置(可选):
○ 名称:为监听器命名,便于识别。
○ 配置:根据取样器结果保存配置的内容对结果进行保存,如“请求”、“响应数据”、“响应代码/消息”等。
○ 文件名:若需将结果保存到磁盘,可在“文件名”框内指定路径。
○ 结果察看:可对结果进行实时查看,并且可以选择不同的方式进行查看,如text,HTML,也可以对结果进行简单测试,如JSON表达式,正则表达式 - 运行测试:启动JMeter测试后,发送的每个请求及其响应都会实时显示在“察看结果树”中。
应用实例
首先我们使用SpringBoot框架编写一段测试代码接口
//html
@GetMapping(value = "/html",produces = "application/html")public String Returnhtml() {return "<!DOCTYPE html>\n" +"<html lang=\"en\">\n" +"<head>\n" +" <meta charset=\"UTF-8\">\n" +" <title>简单表单提交界面</title>\n" +"</head>\n" +"<body>\n" +" <h1>欢迎来到我们的简易表单</h1>\n" +" <form action=\"/submit_form\" method=\"post\">\n" +" <label for=\"name\">姓名:</label>\n" +" <input type=\"text\" id=\"name\" name=\"name\"><br><br>\n" +" <label for=\"email\">电子邮件:</label>\n" +" <input type=\"email\" id=\"email\" name=\"email\"><br><br>\n" +" <label for=\"message\">消息:</label>\n" +" <textarea id=\"message\" name=\"message\"></textarea><br><br>\n" +" <input type=\"submit\" value=\"提交\">\n" +" </form>\n" +"</body>\n" +"</html>";}
我们编写如下脚本:
线程组:保持默认
HTTP信息头管理器:名称设置为accept,值为application/html
HTTP请求:协议设置为http,服务器名称或IP设置为127.0.0.1,端口设置为8091,方法设置为GET,路径设置为/html,内容编码为utf-8
情况1:文件配置和文件保存
我们在“察看结果树”中的所有数据写入一个文件中点击配置,会弹出“Sample Result Save Configuration”配置界面,我们可以勾选其中几项进行保存内容,比如勾选Save As XML,Save Label,Save Idle Time,然后在文件名称中输入一个地址:d:\test.xml,再进行保存
运行脚本,打开对应的test.xml文件,查看下面内容
<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
<httpSample it="0" lb="HTTP请求"/></testResults>
情况2:不同类型展示方式
在上述运行的脚本,在察看结果树中可以看到HTTP请求,默认情况下展示的是Test模式,如果我们在调试过程中对数据进行提取,查看结果树提供了不同内容
RegExp Tester
选取RegExp Tester,例如我们可以知道我们返回的结果内容是
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>简单表单提交界面</title>
</head>
<body><h1>欢迎来到我们的简易表单</h1><form action="/submit_form" method="post"><label for="name">姓名:</label><input type="text" id="name" name="name"><br><br><label for="email">电子邮件:</label><input type="email" id="email" name="email"><br><br><label for="message">消息:</label><textarea id="message" name="message"></textarea><br><br><input type="submit" value="提交"></form>
</body>
</html>
如果我们要获取< h1>< \h1>中间内容进行调试,我们可以在Regular expression中输入正则表达式进行表达式书写进行测试,并且点击Test
边界提取器测试
选取边界提取器测试,通过上述内容我们可以知道我们返回的结果内容,如果我们要获取< h1>< \h1>中间内容进行调试,我们可以在左边界中输入< h1>,右边界输入<\h1>,并且点击测试
情况3:视图预览
我们可以通过提供的内容进行视图预览,如HTML,XML等,如我们选择HTML,我们查看HTTP请求响应数据中Response Body的内容
注意事项
● 性能影响:由于其详尽的数据记录特性,在大规模压力测试时应禁用该监听器,以免占用过多资源。
● 安全考量:响应数据可能包含敏感信息,确保测试环境与生产环境隔离,且不将含有敏感数据的日志公开。
● 内存消耗:长时间运行大量测试时,结果树会占用较多内存,请定期清理或适当使用写入文件功能。
结语
“察看结果树”是JMeter测试人员不可或缺的调试利器,通过熟练运用它可以极大地提高测试脚本的开发效率与准确性。正确并有效地利用其功能,能在保证测试质量的同时,优化测试流程,提升整体测试效能。