浅谈监听器之后端监听器

浅谈监听器之后端监听器

"后端监听器"(Backend Listener)是一种高级功能,用于异步地将测试结果数据发送至外部系统,如数据库、消息队列或时间序列数据库等,以便于长期存储、实时分析和可视化展示。

后端监听器的作用

  1. 数据异步传输:与标准监听器不同,后端监听器采用异步方式收集测试结果,减少了测试执行过程中的延迟,提高了测试效率。
  2. 扩展数据处理能力:通过将数据推送至后端系统,可以利用更强大的数据处理能力进行实时分析和长期存储。
  3. 集成与分析:便于与大数据分析平台、监控系统(如Grafana、Kibana)集成,实现测试结果的实时监控和报警。
  4. 分布式测试支持:在分布式测试环境中,后端监听器能有效收集所有节点的数据,集中管理测试结果。

配置与使用

  1. 添加后端监听器:在JMeter的测试计划中,右键点击"线程组"或"测试计划",选择"添加" -> "监听器" -> "后端监听器"。
  2. 选择后端客户端:后端监听器需要一个实现BackendListenerClient接口的客户端来处理数据发送逻辑。常见的客户端有InfluxDB、Graphite、Elasticsearch等,根据需求选择合适的客户端并安装相应的插件。
  3. 配置参数:
    ○ 名称:为监听器命名,便于识别。
    ○ 后端监听器实现:选择具体的后端客户端实现。
  4. 日志与错误处理:确保配置正确的日志级别,以便于调试和问题追踪。后端监听器应能妥善处理网络故障、连接超时等问题,避免影响测试的正常运行。

最佳实践

● 性能考量:选择合适的后端存储和处理系统,确保它们能应对高并发数据写入,不影响测试数据的完整性。

● 资源监控:在进行大规模测试时,监控后端系统的资源使用情况,防止数据丢失或处理延迟。

● 测试计划同步:在分布式测试环境下,确保所有JMeter实例的后端监听器配置一致。

● 安全性:加密传输数据,特别是在公网上传输敏感信息时,确保数据的安全性。

应用实例

首先我们使用SpringBoot框架编写一段测试代码接口

java 复制代码
//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

这里要着重说明下,我们使用的JMeter是5.1.1作为测试版本,所以我们配套的influxdb数据库为InfluxDB shell version: 1.8.4

后端监听器:

● 后端监听器:选择influxdb

● influxdbMetricsSender:设置org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender

● influxdbUrl:选择http://XX.XXX.XXX.XXX:8086/write?db=jmeter,上述db为数据库名称

● application:设置为test

● measurement:设置为jmeter,这里可以理解为jmeter写入的influxdb表

● summaryOnly:根据实际情况填写,当前保持默认

● samplersRegex:保持默认

● percentiles:保持默认

● testTitle:根据实际情况设置,保持默认为Test name

● eventTags:根据实际情况设置,当前保持默认

运行脚本后,我们登录对应的服务器上查看influxdb上是否真的写入数据库

第一步:登录influxdb

[root@localhost ~]# influx

Connected to http://localhost:8086 version 1.8.4

InfluxDB shell version: 1.8.4

第二步:查看当前数据库实例,找到自己要的实例

linux 复制代码
> show DATABASES
name: databases
name
----
_internal
prometheus
jmeter
losscount

第三步:进入数据库实例

linux 复制代码
> use jmeter
Using database jmeter

第四步:查看当前实例下的数据库表

linux 复制代码
> SHOW MEASUREMENTS
name: measurements
name
----
events
jmeter

第五步:查看表下的数据内容

linux 复制代码
> select * from jmeter order by time desc limit 5
name: jmeter
time                application  avg  count countError endedT hit max  maxAT meanAT min  minAT pct90.0 pct95.0 pct99.0 rb  responseCode responseMessage sb  startedT statut transaction
----                -----------  ---  ----- ---------- ------ --- ---  ----- ------ ---  ----- ------- ------- ------- --  ------------ --------------- --  -------- ------ -----------
1721801588352000000 test         1022 1     0                 1   1022              1022       1022    1022    1022    782                              154          all    all
1721801588352000000 test                               1               1     1           1                                                                  1               internal
1721801586885000000 test                               1               0     0           0                                                                  1               internal

总结

JMeter的后端监听器为性能测试提供了强大的数据收集和分析能力,是进行大规模、复杂测试不可或缺的工具。通过合理的配置和使用,可以有效地管理和优化应用的性能测试流程,为软件的性能优化和监控提供坚实的基础。

相关推荐
测试老哥11 小时前
Jmeter测试脚本编写技巧
自动化测试·软件测试·功能测试·测试工具·jmeter·职场和发展·性能测试
易思涯13 小时前
【已解决】黑马点评项目jmeter高并发测试中用户数据的生成
jmeter·解决方法·黑马点评
霍格沃兹测试开发学社测试人社区14 小时前
软件测试丨性能测试工具-JMeter
软件测试·测试开发·测试工具·jmeter·性能测试
字节程序员17 小时前
Jmeter分布式压力测试
分布式·jmeter·压力测试
美团测试工程师1 天前
九大高效的前端测试工具与框架
软件测试·测试工具·jmeter
love静思冥想1 天前
JMeter 使用详解
java·jmeter
互联网杂货铺2 天前
几个常见的Jmeter压测问题
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
ggggyyyyy09283 天前
接口测试-Fidder及jmeter使用
测试工具·jmeter·fiddler·接口测试
明月与玄武3 天前
Jmeter 分布式压测部署--常见坑以及解决方案
分布式·jmeter
字节程序员3 天前
使用JUnit进行集成测试
jmeter·junit·单元测试·集成测试·压力测试