mqtt-jmeter 插件是适用于 MQTT 协议测试的开源 JMeter 扩展插件,在物联网应用测试领域广泛使用。
JMeter 介绍
JMeter 是 Apache 基金会旗下一款开源软件,主要通过模拟并发负载来实现性能测试,是目前开源社区的主流性能测试工具。其主要具有以下优势:
内置多种协议的测试支持,如 TCP、HTTP/HTTPS 等。
提供灵活的插件扩展机制,支持第三方扩展其他的协议。对于物联网系统中种类繁多的协议,只需按 JMeter 的框架要求定制开发所需协议业务逻辑,就能方便地放入 JMeter 的插件库,使用 JMeter 既有功能进行该协议的性能测试。
具有良好的社区支持。
如何在 JMeter 中使用 MQTT 插件
MQTT 协议身为物联网界的主流协议,虽然并非 JMeter 自带的协议类型,但在物联网测试场景中极为普遍。为了支持 MQTT 协议的规模测试,EMQ 映云科技开发了基于 JMeter 的 MQTT 协议开源测试插件:mqtt-jmeter。
安装 MQTT 插件
MQTT 插件的安装方式与其他 JMeter 第三方插件类似。
从 GitHub 上下载最新版本插件 mqtt-xmeter-2.0.2-jar-with-dependencies.jar,该插件支持 JMeter 3.2 及以上版本。
将插件 jar 包拷贝到 JMeter 的插件目录:$JMETER_HOME/lib/ext
重新启动 JMeter。
MQTT 插件中的主要组件
MQTT 连接采样器(MQTT Connect)
连接采样器模拟物联网设备,发起 MQTT 连接。MQTT 消息发布采样器(MQTT Pub Sampler)
消息发布采样器复用连接采样器中建立的 MQTT 连接,向目标 MQTT 服务器发布消息。MQTT 消息订阅采样器(MQTT Sub Sampler)
消息发布采样器复用连接采样器中建立的 MQTT 连接,从目标 MQTT 服务器上订阅消息。MQTT 断开连接采样器(MQTT DisConnect)
断开连接采样器中建立的 MQTT 连接。
JMeter MQTT 在连接测试场景中的使用
连接场景分析
插件中 MQTT Connect 请求主要模拟设备与 MQTT 服务器(本文以 EMQX 为例)建立连接,并按指定间隔发送 MQTT keep alive 报文,在物联网实际场景中经常需要海量设备连接并保持在线,大量设备同时上线及下线;本文脚本将模拟 2000 个设备同时与 EMQX 建立连接,并保持连接 1 分钟后同时下线。
如何使用 MQTT 插件编写测试脚本
在测试计划下创建线程组。
在线程组下添加“MQTT 连接采样器”(即”MQTT Connect”)
在 MQTT 连接采样器下添加“同步定时器”,确保所有线程在同一时间开始建立连接。
在线程组下添加“测试活动”,用于控制建立连接后连接保持的时间。
在线程组下添加“MQTT 断开连接采样器” (即”MQTT DisConnect”),模拟设备同时断开连接。
在测试计划下创建“汇总报告”和“察看结果树”监听器,用于检查 JMeter 请求结果。
测试的执行
对编写好的脚本进行调试验证,确认 MQTT Broker 的连通性及脚本运行逻辑符合预期后,将线程组页面的线程组数修改为 2000,页面点击 Start 按钮执行测试。
查看连接结果,从汇总报告看出吞吐量为 1662.5/sec,即 1662 客户端在 1 秒内同时连接。