头像
淇迹时刻
-- : -- : --
切换主题色
-- : -- : --

JMeter监听器详解

最后更新于:

JMeter监听器详解

一、监听器概述

1.1 什么是监听器

监听器(Listeners)是JMeter中收集和展示测试结果的元件,用于记录采样器的执行结果、生成报告和监控测试过程。

1.2 监听器的作用

  • 记录结果:记录采样器的执行结果
  • 生成报告:生成各种格式的测试报告
  • 实时监控:实时监控测试执行状态
  • 数据导出:将测试结果导出为文件
  • 结果分析:分析测试结果数据

1.3 监听器执行顺序

1监听器执行顺序:
21. 采样器执行完成
32. 后置处理器执行(如果有)
43. 断言执行(如果有)
54. 监听器收集结果

1.4 监听器分类

类型监听器名称说明
结果查看查看结果树、表格查看详细结果
统计报告聚合报告、摘要报告统计测试结果
图形展示图形结果、响应时间图图形化展示结果
日志记录日志查看器查看日志
数据导出后端监听器、结果文件输出导出测试数据

二、查看结果树

2.1 添加查看结果树

1右键点击线程组 → Add → Listener → View Results Tree

2.2 配置

1名称: 查看结果树
2文件名: results.jtl
3输出格式: XML

2.3 参数说明

文件名(Filename)

1文件名: results.jtl

说明:将结果保存到文件中。

输出格式(Output format)

1输出格式: XML

选项

  • XML:XML格式(默认)
  • CSV:CSV格式
  • JSON:JSON格式

仅显示错误(Only log errors)

1勾选: 仅显示错误

说明:如果勾选,只显示执行失败的采样器。

配置要保存的字段(Configure Save Fields)

1响应数据: true
2响应头: true
3请求头: true
4请求数据: true

说明:配置需要保存的字段。

2.4 查看结果

采样器结果列表

1列表列说明:
2- 序号: 采样器执行顺序
3- 时间: 执行时间
4- 线程名称: 线程名称
5- 标签: 采样器名称
6- 响应码: HTTP响应码
7- 响应消息: HTTP响应消息
8- 响应时间: 响应时间(毫秒)
9- 状态: 成功/失败

响应详情

1响应详情标签:
2- Sampler Result: 采样器结果
3- Request: 请求信息
4- Response Data: 响应数据
5- Response Headers: 响应头
6- Request Headers: 请求头

2.5 使用场景

1调试测试脚本,查看每个采样器的详细结果。

三、聚合报告

3.1 添加聚合报告

1右键点击线程组 → Add → Listener → Aggregate Report

3.2 配置

1名称: 聚合报告
2文件名: aggregate_report.csv

3.3 参数说明

文件名(Filename)

1文件名: aggregate_report.csv

说明:将报告保存到文件中。

3.4 报告字段说明

字段说明
Label采样器名称
#Samples请求总数
Average平均响应时间(毫秒)
Median中位数响应时间(毫秒)
90% Line90%请求的响应时间(毫秒)
95% Line95%请求的响应时间(毫秒)
99% Line99%请求的响应时间(毫秒)
Min最小响应时间(毫秒)
Max最大响应时间(毫秒)
Error%错误率
Throughput吞吐量(请求/秒)
Received KB/sec每秒接收的数据量(KB)
Sent KB/sec每秒发送的数据量(KB)

3.5 报告分析

关键指标分析

指标分析要点
Average平均响应时间是否在可接受范围内
90% Line大多数请求的响应时间
99% Line最差情况下的响应时间
Error%错误率是否超过允许范围
Throughput吞吐量是否达到预期

示例报告

1Label            #Samples  Average  Median  90% Line  95% Line  99% Line  Min  Max  Error%  Throughput
2HTTP请求-登录       1000      150      120      200       250       400      50   800    0.5%      66.7
3HTTP请求-获取用户    1000      80       70       120       150       200      30   500    0%        125
4HTTP请求-下单        500       500      450      800       1000      1500     100  3000   1%        10

3.6 使用场景

1生成性能测试报告,分析关键性能指标。

四、摘要报告

4.1 添加摘要报告

1右键点击线程组 → Add → Listener → Summary Report

4.2 配置

1名称: 摘要报告
2文件名: summary_report.csv

4.3 报告字段说明

字段说明
Label采样器名称
#Samples请求总数
Average平均响应时间(毫秒)
Min最小响应时间(毫秒)
Max最大响应时间(毫秒)
Std. Dev.响应时间标准差
Error%错误率
Throughput吞吐量(请求/秒)
Received KB/sec每秒接收的数据量(KB)

4.4 摘要报告 vs 聚合报告

特性摘要报告聚合报告
响应时间统计简单(平均、最小、最大)详细(P50、P90、P95、P99)
标准差
报告简洁度简洁详细
适用场景快速查看深入分析

五、图形结果

5.1 添加图形结果

1右键点击线程组 → Add → Listener → Graph Results

5.2 配置

1名称: 图形结果
2文件名: graph_results.png

5.3 参数说明

文件名(Filename)

1文件名: graph_results.png

说明:将图形保存为图片文件。

5.4 图形说明

Y轴

1Y轴说明:
2- Response Time: 响应时间(毫秒)
3- Throughput: 吞吐量(请求/秒)

X轴

1X轴说明:
2- Time: 时间(秒)

图例

1图例说明:
2- Average: 平均响应时间
3- Median: 中位数响应时间
4- 90% Line: 90%请求的响应时间
5- Throughput: 吞吐量

5.5 使用场景

1实时查看响应时间和吞吐量的变化趋势。

六、响应时间图

6.1 添加响应时间图

1右键点击线程组 → Add → Listener → Response Time Graph

6.2 配置

1名称: 响应时间图

6.3 参数说明

时间范围(Time Range)

1时间范围: 100(毫秒)

说明:时间范围的粒度。

分组(Grouping)

1分组: By Label

说明:按标签分组显示。

6.4 使用场景

1查看响应时间的分布情况。

七、表格

7.1 添加表格

1右键点击线程组 → Add → Listener → Table

7.2 配置

1名称: 表格
2文件名: table_results.csv

7.3 参数说明

文件名(Filename)

1文件名: table_results.csv

说明:将表格数据保存到文件中。

7.4 表格字段

字段说明
StartTime开始时间
Label采样器名称
ResponseCode响应码
ResponseMessage响应消息
Duration响应时间(毫秒)
Bytes响应字节数
Latency延迟时间(毫秒)
Connect连接时间(毫秒)

7.5 使用场景

1查看每个采样器的详细执行数据。

八、日志查看器

8.1 添加日志查看器

1右键点击线程组 → Add → Listener → Log Viewer

8.2 配置

1名称: 日志查看器
2日志级别: INFO

8.3 参数说明

日志级别(Log Level)

1日志级别: INFO

选项

  • DEBUG:调试级别
  • INFO:信息级别(默认)
  • WARN:警告级别
  • ERROR:错误级别

8.4 使用场景

1查看JMeter运行日志,调试测试脚本。

九、后端监听器

9.1 添加后端监听器

1右键点击线程组 → Add → Listener → Backend Listener

9.2 配置

1名称: 后端监听器
2后端监听器实现: org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
3参数:
4    influxdbUrl: http://localhost:8086/write?db=jmeter
5    application: myapp
6    measurement: jmeter

9.3 参数说明

后端监听器实现(Backend Listener implementation)

1后端监听器实现: org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient

说明:选择后端存储实现。

常见实现

  • InfluxDB:org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
  • Elasticsearch:org.apache.jmeter.visualizers.backend.elasticsearch.ElasticsearchBackendListenerClient

参数(Parameters)

1参数列表:
2    influxdbUrl: http://localhost:8086/write?db=jmeter
3    application: myapp
4    measurement: jmeter

InfluxDB参数

参数说明
influxdbUrlInfluxDB URL
application应用名称
measurement测量名称
summaryOnly是否只记录汇总数据

9.4 使用场景

1将测试数据发送到InfluxDB或Elasticsearch,配合Grafana进行实时监控和可视化。

十、结果文件输出

10.1 配置结果文件输出

1通过监听器的"文件名"字段配置结果文件输出。

10.2 输出格式

JTL格式(XML)

1<?xml version="1.0" encoding="UTF-8"?>
2<testResults version="1.2">
3    <httpSample t="150" lt="50" ts="1627890000000" s="true" lb="HTTP请求-登录" rc="200" rm="OK" />
4    <httpSample t="80" lt="30" ts="1627890000150" s="true" lb="HTTP请求-获取用户" rc="200" rm="OK" />
5</testResults>

CSV格式

1timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
21627890000000,150,HTTP请求-登录,200,OK,Thread Group 1-1,text,true,,1024,256,1,1,http://localhost:8080/api/login,50,0,30
31627890000150,80,HTTP请求-获取用户,200,OK,Thread Group 1-1,text,true,,512,128,1,1,http://localhost:8080/api/users,30,0,20

10.3 生成HTML报告

1# 使用命令行生成HTML报告
2jmeter -n -t test_plan.jmx -l results.jtl -e -o report
3
4# 参数说明
5# -n: 非GUI模式
6# -t: 指定测试计划文件
7# -l: 指定结果文件
8# -e: 生成HTML报告
9# -o: 指定报告输出目录

十一、实战案例

11.1 案例1:完整的性能测试报告

需求:生成完整的性能测试报告

配置步骤

  1. 创建线程组(100线程,循环10次)

  2. 添加HTTP请求(测试接口)

  3. 添加查看结果树:

1文件名: results.jtl
  1. 添加聚合报告:
1文件名: aggregate_report.csv
  1. 添加摘要报告:
1文件名: summary_report.csv
  1. 添加图形结果:
1文件名: graph_results.png
  1. 运行测试

  2. 生成HTML报告:

1jmeter -g results.jtl -o report

11.2 案例2:实时监控测试

需求:使用InfluxDB和Grafana实时监控测试

配置步骤

  1. 安装InfluxDB和Grafana

  2. 创建数据库:

1influx
2> CREATE DATABASE jmeter
3> USE jmeter
  1. 创建线程组(100线程,循环Forever)

  2. 添加HTTP请求(测试接口)

  3. 添加后端监听器:

1后端监听器实现: org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient
2参数:
3    influxdbUrl: http://localhost:8086/write?db=jmeter
4    application: myapp
5    measurement: jmeter
  1. 配置Grafana仪表盘

  2. 运行测试

  3. 在Grafana中查看实时监控数据

11.3 案例3:错误分析

需求:分析测试中的错误

配置步骤

  1. 创建线程组(100线程,循环10次)

  2. 添加HTTP请求(测试接口)

  3. 添加查看结果树:

1仅显示错误: true
  1. 添加聚合报告

  2. 运行测试

  3. 分析错误结果:

  • 查看错误类型和数量
  • 查看错误响应内容
  • 定位问题原因

十二、常见问题

12.1 监听器影响性能

回答

  • 性能测试时尽量少用监听器
  • 推荐使用非GUI模式运行
  • 使用后端监听器代替GUI监听器

12.2 结果文件过大

回答

  • 配置要保存的字段,只保存必要的字段
  • 使用CSV格式代替XML格式
  • 定期清理结果文件

12.3 HTML报告生成失败

回答

  • 确保JMeter版本支持HTML报告生成
  • 确保结果文件格式正确
  • 确保输出目录不存在

12.4 后端监听器连接失败

回答

  • 检查后端服务地址和端口是否正确
  • 检查网络连接是否正常
  • 检查后端服务是否正常运行

下一章10-变量与函数.md

最新文章

本页导航