JMeter 内置 HTTP/HTTPS、TCP 等反对多种协定,还具备插件扩大机制。
MQTT 协定身为物联网界的支流协定,尽管并非 JMeter 自带的协定类型,但在物联网测试场景中极为广泛。为了反对 MQTT 协定的规模测试,EMQ 映云科技开发了基于 JMeter 的 MQTT 协定开源测试插件:https://github.com/xmeter-net/mqtt-jmeter。
通过几个版本的迭代,目前 JMeter MQTT 插件的最新版本为 2.0.2,反对连贯、音讯公布、音讯订阅等多种采样器,并可通过组合构建更简单的测试场景。
本文咱们将具体介绍如何在 JMeter 中应用 MQTT 插件。
装置 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 连贯。
Server name or IP: 指向被测 MQTT 服务器地址。
Port number: 以 EMQ X 为例,默认 TCP 连贯的端口是 1883, SSL 连贯则是 8883。具体的端口请参照服务器的具体配置。
MQTT version: 目前反对 MQTT 3.1 及 3.1.1 版本。
Timeout: 连贯超时设置,以秒为单位。
Protocols: 反对 TCP、SSL、WS 和 WSS 形式连贯 MQTT 服务器。当抉择 SSL 或 WSS 加密通道连贯时,能够抉择单向或者双向认证(Dual)。如果心愿进行双向认证,还须要指定相应的客户端证书(p12 证书),以及对应的文件爱护明码(Secret)。
User authentication: 如果 MQTT 服务器配置了用户认证,须要提供相应的用户名 (User name) 和明码(Password)。
ClientId: 虚构用户的标识。如果勾选了「Add random suffix for ClientId」,将会在 ClientId 的根底上给每个虚构用户再增加一个 uuid 串作为后缀,整个作为虚构用户标识。
Keep alive(s): 心跳信号发送距离。例如,300 示意客户端每隔 300 秒向服务器收回 ping 申请,以放弃连贯沉闷。
Connect attempt max: 第一次连贯过程中,尝试重连的最大次数。超过该次数则认为连贯失败。如果心愿始终尝试重连,能够设为 -1。
Reconnect attempt max: 后继连贯过程中,尝试重连的最大次数。超过该次数则认为连贯失败。如果心愿始终尝试重连,能够设为 -1。
Clean session: 如果心愿在连贯之间保留会话状态,能够将该选项设为 false。如果不心愿在新的连贯中保留会话状态,则将该项设为 true。
MQTT 音讯公布采样器(MQTT Pub Sampler)
音讯公布采样器复用连贯采样器中建设的 MQTT 连贯,向指标 MQTT 服务器公布音讯。
QoS Level: 服务质量,取值为 0,1,2,别离代表 MQTT 协定标准里的至少一次(AT_MOST_ONCE),至多一次(AT_LEAST_ONCE),准确一次(EXACTLY_ONCE)
Retained messages: 如果心愿应用「保留音讯」,可将该选项设为 true,MQTT 服务器端将会存储插件公布的保留音讯及其 QoS,并在相应 topic 上产生订阅时,间接将最初一条保留音讯投递给订阅端,使得订阅端不用期待即可获取公布端的最新状态值。
Topic name: 公布音讯所属的主题。
Add timestamp in payload: 如果勾选,公布的音讯体结尾会附带以后工夫戳,配合音讯订阅采样器的 Payload includes timestamp 选项,能够在音讯接收端计算音讯达到的延时。如果不勾选则只发送理论的音讯体。
Payloads Message type: 目前反对三种音讯类型
- String: 一般字符串
- Hex String: 以 16 进制数值示意的串,比方字符串 Hello, 能够示意为 48656C6C6F (其中,48 在 ascii 表中对应字母 H,顺次类推)。通常 16 进制串用来结构非文本的音讯体,例如形容某些公有的协定交互和管制信息等等。
- Random string with fixed length: 按指定长度(单位为 byte)生成随机串作为音讯体。
MQTT 音讯订阅采样器(MQTT Sub Sampler)
音讯公布采样器复用连贯采样器中建设的 MQTT 连贯,从指标 MQTT 服务器上订阅音讯。
QoS Level: 服务质量,含意与音讯公布采样器雷同。
Topic name(s): 订阅音讯所属的主题。反对单个音讯订阅采样器订阅多个主题,主题之间用逗号分隔。
Payload includes timestamp: 如果勾选,会从音讯体结尾处解析发送工夫戳,配合音讯公布采样器的 Add timestamp in payload 选项,能够用于计算音讯的接管延时。如果不勾选则只解析理论的音讯体。
Sample on: 采样形式,默认为 ”specified elapsed time(ms)“,即每隔指定的毫秒工夫采样一次。也能够抉择 ”number of received messages“,即每接管到指定的音讯数采样一次。
Debug response: 如果勾选,音讯内容会打印在 JMeter 的响应后果中。该选项次要用于调试目标,正式运行测试不倡议勾选,免得影响测试效率。
MQTT 断开连接采样器(MQTT DisConnect)
断开连接采样器中建设的 MQTT 连贯。
为灵便起见,上述采样器中的属性值都能够援用 JMeter 的零碎或自定义变量。
本文咱们介绍了 JMeter MQTT 插件的各测试组件,在下期文章中咱们将针对不同的测试场景具体介绍如何用 MQTT 插件来构建测试脚本。