通过之前的文章,相信大家已经熟悉了 JMeter 及 MQTT 插件的使用等基础知识。本文我们将介绍 JMeter MQTT 插件在订阅与发布测试场景中的使用。
订阅、发布场景介绍
发布场景
使用 MQTT Connect 请求模拟设备与 MQTT 服务器(本文以 EMQX 为例)建立连接,随后使用MQTT Pub Sampler 请求模拟设备发布消息到 MQTT Broker,在 MQTT Pub Sampler 后添加固定定时器模拟定时发布消息。
订阅发布场景
使用 MQTT Connect 请求模拟与 MQTT Broker 建立连接,其中订阅者订阅指定主题,发布者发布消息到指定主题。
使用 MQTT 插件编写测试脚本
发布脚本
- 在测试计划下创建线程组。
- 在线程组下添加仅一次控制器及“MQTT 连接采样器”(即"MQTT Connect")。
-
在 MQTT 连接采样器后添加 MQTT Pub Sampler,用于发布消息。
-
QoS Level 为消息级别,支持0、1、2 -
Retained Mesages 为是否保留消息,支持 true、false -
Topic name 为主题名称 -
Add timestamp in payload 在报文中加入时间戳 -
Message type : String 可填写自定义字符串报文 -
Message type : Hex string 可填写自定义十六进制报文 -
Message type : Randmom string with fixed length 为固定长度随机字符,后面Length为指定长度
- 在 MQTT Pub Sampler 下添加“固定定时器”,用于控制发布消息频率。
订阅脚本
-
在测试计划下增加线程组。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 -
在线程组下添加仅一次控制器及“MQTT 连接采样器”(即"MQTT Connect") -
在 MQTT Connect 后添加 MQTT Sub Sampler,模拟订阅消息。
-
Qos Level 消息级别,支持0、1、2 -
Topic name(s) 订阅主题名称,支持+/#通配符共享订阅 -
Payload includes timestamp 报文是否包含时间戳 -
Sample on : specified elapsed time(ms) 按毫秒时间统计订阅到消息 -
Sample on : number of received messages 按次数统计订阅到消息 -
Debug response 调试返回信息,即在察看结果树中显示详细订阅报文
测试的执行
对编写好的脚本进行调试验证,确认 MQTT Broker 的连通性及脚本运行逻辑是否符合预期。
将线程组页面的线程组数分别修改为 50,设置循环次数为 1000,页面点击 Start 按钮执行测试。
查看测试结果,点击“察看结果树”可查看发布及订阅报文内容。
从汇总报告看出 Pub 和 Sub 吞吐量为 161.5/s,50 发布者与 50 订阅者消息数都是 50*1000,即发布订阅吞吐与消息数量都一致。
登录 EMQX Dashboard 页面,显示如下:
附件
读者可下载测试脚本运行并查看结果。
本系列中的其它文章
版权声明: 本文为 EMQ 原创,转载请注明出处。
原文链接:https://www.emqx.com/zh/blog/the-use-of-jmeter-mqtt-in-subscription-and-publishing-test-scenarios
|