在本章节中:

关于扩展

MQTT 扩展是 SOAtest 和 Virtualize 的自定义扩展。可以在客户端使用扩展以执行多个任务:

  • 发布到主题
  • 订阅主题筛选器,直到接收到所需的消息数量或指定的持续时间过期为止
  • 在测试执行期间监视主题筛选器,以对发生的事件执行验证

在服务端,可以使用监听器扩展来订阅到主题筛选器,然后根据传入的订阅消息发布到主题。
为 MQTT 集成提供以下自定义扩展:

  • MQTT Transport: 发布 MQTT 消息的传输协议。
  • MQTT Subscriber: 用来订阅主题筛选器,直到指定的持续时间过期为止。
  • MQTT Message Listener: 消息监听器用来订阅主题筛选器和发布虚拟化消息。
  • MQTT Event Monitor: 一个指向事件监视器接口的条目,订阅主题以发送测试期间接收到的消息事件。
  • MQTT Configure Tool: 配置不同 MQTT 属性的简单工具,这样它们就不必在测试中的每个 MQTT 扩展中配置。

使用变量

如果打算在 Load Test 中运行 MQTT 扩展插件,请注意 test_suite_loc 变量只可用于 input 字段。Load Test 不支持 .tst 项目中所使用 Parasoft 应用市场扩展的 project_loc 和 workspace_loc 变量。使用 test_suite_loc 变量可以指定相对于 .tst 项目文件位置的外部文件路径。

安装指南

可以从 UI 或命令行中安装此工具。在启动安装过程之前,在方便的位置下载并解压压缩文件夹。

UI 安装指南

  1. 选择侧栏菜单中的 Parasoft> Preferences and click System Properties
  2. 单击 Add JARs 并导航到 mqtt.jar 文件。
  3. 重启 SOAtest。

命令行安装指南

将 mqtt.jar 文件添加到本地设置属性文件中的 system.properties.classpath 属性。例如:

system.properties.classpath=<path to jar>/mqtt.jar

MQTT 传输

  1. 将消息客户端添加到测试中,并将传输切换到 Custom Extension
  2. 从 Select ImplementationChoose 下拉菜单中选择 MQTT

配置

可以配置以下设置。

连接设置

单击连接(Connection)选项卡以配置连接设置。

Broker URL

使用以下格式定义 MQTT 的 URL:

protocol://host:port

  • Protocol 是连接协议。传输可以通过 TCP 或 WebSocket 协议与 MQTT 代理进行通信。协议可接受值有 tcpsslwswss
  • Host 是代理主机。
  • Port 是代理端口。

此字段必填

如果定义的协议为 sslwss,则还必须配置 Transport Layer Security (TLS) 设置。

Client ID

定义连接到代理时使用的客户 ID。如果留空,则客户 ID 将由 MQTT 代理生成。

Username

定义连接到代理时使用的用户名。

Password

定义连接到代理时使用的密码。

Connection Timeout

定义建立连接到 MQTT 代理所允许的最大秒数。

默认:30

Keep Alive Interval

定义断开空闲 MQTT 客户端前最大的间隔时间。

默认:60

Clean Session

启动/禁用清除会话。

True: 建立清除会话。代理保存的任何消息都将不会被请求给客户端。

False: 不建立清除会话。代理保存的任何消息都将会被请求给客户端。

默认: true

Client Persistence Directory

定义存储客户端持久性文件的目录。如果 Clean Session 设置为 false则客户端持久性非常有用。这是因为客户端使用的持久性帮助代理决定了在连接失去与代理连接的情况下,客户端缺失了哪些消息。

默认:Memory Persistence如果重启 SOAtest/Virtualize,消息将不会持久。如果必须通过重启来持久化,则应该定义数据的目录。

发布设置

单击 Publish 选项卡以配置发布设置。

Topic

定义将消息发布至哪个主题。

Quality of Service

定义与发布消息绑定的服务质量度量。

可能的值有 012

默认:1

Retain Message on Server

启用/禁用在服务器上保留消息。设置为 true 保留消息。

保留的消息在订阅主题时被请求给客户端,而不管它们的 Clean Session 设置。

默认: false

Last Will 和 Testament (LWT) 设置

在客户端连接到代理时定义 Last Will 和 Testament (LWT)。如果因为除了清除断开连接之外的任何原因,客户端失去了代理连接,则代理将自动发布客户端 LWT。

Topic

定义将 LWT 发布至哪个主题。

Will Payload

定义 LWT 的有效负载。

默认: none。如果没有设置此字段,则库户籍将无法使用代理建立 LWT。

Quality of Service

定义与 LWT 绑定的服务质量度量。可能的值有 012

默认:1

Retain Message on Server

启用/禁用在服务器上保留 LWT。设置为 true 保留 LWT。

保留的消息在订阅主题时被请求给客户端,而不管它们的 Clean Session 设置。

默认: false

传输层安全(TLS)设置

当在 Broker URL 中将协议设置为 ssl or wss 时,必须配置 TLS 设置。

TLS Protocol

定义在建立安全连接时要使用的传输层协议。

默认:TLSv1.2

Key Manager Factory

定义用于管理 Key Store File中所提供的密匙的密匙管理器工厂。根据加载到 JVM 的不同安全提供程序,可以使用不同的密匙管理器。如果向 JVM 添加了其他安全提供程序,则选中安全提供程序的文档,以收集可用工厂名称。

默认:SunX509

Key Store File Location

定义资产(.tst、.pva、.pva)密匙库文件的绝对路径或相对路径。

Key Store Type

定义提供的密匙库存储文件类型。根据加载到 JVM 的不同安全提供程序,可以处理不同的密匙类型。如果向 JVM 添加了其他安全提供程序,则选中安全提供程序的文档,以收集可用密匙库类型名称。

Key Store Password

定义用于从密匙库文件中提取密匙/证书的密匙。

如果留空,则将尝试在没有密码的情况下提取密钥。

Trust Manager Factory

定义用于管理 Trust Store File中所提供的密匙的信任管理器工厂。根据加载到 JVM 的不同安全提供程序,可以使用不同的信任理器。如果向 JVM 添加了其他安全提供程序,则选中安全提供程序的文档,以收集可用工厂名称。

默认:SunX509

Trust Store File Location

定义资产(.tst、.pva、.pva)信任库文件的绝对路径或相对路径。

默认:Trust All Certificates

Trust Store Type

定义提供的信任库存储文件类型。根据加载到 JVM 的不同安全提供程序,可以处理不同的信任库类型。如果向 JVM 添加了其他安全提供程序,则选中安全提供程序的文档,以收集可用信任库类型名称。

Trust Store Password

定义用于从信任库文件中提取密匙/证书的密匙。如果留空,则将尝试在没有密码的情况下提取密钥。

连接管理设置

单击 Connection Management选项卡,以配置连接管理设置。

Keep connection alive

启用此选项,让客户端保持连接并重复,以便后续的发布。

Close connection after test execution

启用此选项,在发布后直接关闭客户端连接。

MQTT 订阅器

MQTT 订阅器监听主题,直到达到指定的持续时间过期、消息最大数或终止连接为止。如果消息最大数为零(未限制),则订阅器将尝试监听所有的定义持续时间。

配置

可以配置以下设置。

连接设置

查阅 Connection Settings 以获得关于如何配置此页面的更多详情。

订阅设置

单击 Subscribe 选项卡以配置订阅设置。

Topic Filter

定义建立订阅时要使用的主题筛选器。可以使用特殊通配符 +# 同时筛选多个主题。

+ 建立了单级别主题层级的通配符,而 # 通配符可处理多级别的主题层级。

例如:

对于主题 parasoft/example/topicparasoft/example/soavirt/topic

Parasoft/+/topic 会筛选第一个主题。

parasoft/#/topic 会筛选这两个主题。

此字段必填

Quality of Service

定义订阅的服务质量(QoS)级别。以较低 QoS 发布的消息将以已发布的 QoS 接收。以较高 QoS 发布的消息将使用此设置中指定的 QoS 接收。

默认:1

Max Messages

定义结束订阅之前等待消息的最大数。

默认:0。值 0 表示无限数量的消息。

Subscription Duration

定义当 Max Messages 设置为 0时,可订阅主题筛选器的最大毫秒数。

默认:30000

Timestamp Format

定义随到达的消息生成的时间戳格式。

默认: yyyy-MM-dd'T'hh:mm:ss.SSSX

若要定义一个时间戳格式,请查阅 SimpleDateFormat Javadocs: http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

Last Will 和 Testament (LWT) 设置

查阅 Last Will and Testament (LWT) Settings 以获得关于如何配置这些设置的更多详情。

传输层安全(TLS)设置

查阅 Transport Layer Security (TLS) 以获得关于如何配置这些设置的更多详情。

MQTT 消息监听器

若要使用消息监听器,则将 Parasoft 虚拟资产(PVA)添加到 Virutalize 服务器并在虚拟资产部署设置的自定义选项卡中配置 MQTT 设置。

配置

可以配置以下设置。

连接设置

查阅 Connection Settings 以获得关于如何配置此页面的更多详情。

订阅设置

Topic Filter

查阅 Topic Filter ,以获得关于如何配置此字段的说明。
此字段必填。

Quality of Service

查阅 Quality of Service 以获得关于如何配置此字段的说明。
默认:1.

发布设置

查阅 Publish Settings 以获得关于如何配置此页面的更多详情。

Last Will 和 Testament (LWT) 设置

查阅 Last Will and Testament (LWT) Settings 以获得关于如何配置这些设置的更多详情。

传输层安全(TLS)设置

查阅 Transport Layer Security (TLS) Settings 以获得关于如何配置这些设置的更多详情。

MQTT 事件监控器

事件监控器用于订阅主题筛选器和监视测试执行期间的消息到达。这允许对达到的消息执行验证。验证包括消息到达的顺序、消息到达的时间、发布消息的主题和消息有效负载。

设置 MQTT 事件监控器

  • 添加事件监控器到测试中。
  • 在 Event Source 选项卡中,从平台下拉菜单中选择 Custom/API-based events source
  • 在 Event Retrieval 部分,从模式(Pattern)下拉菜单中选择 Subscribe to an event producer
  • 在 User Code 部分,从语言(Language)下拉框菜单中选择 Java
  • 在 User Code 部分的 Class 字段中输入 com.parasoft.soavirt.mqtt.event.MqttEventMonitor
  • 从 User Code 部分的 Method 下拉菜单中选择 getEventSubscriber(String, String, String, Context)

可以配置以下设置。

URL

定义代理 URL。事件监控器中定义的 URL 和其他工具中定义的 URL 是不同的。

使用以下模式配置代理 URL:

protocol://client_id@host:port/topic_filter

  • protocol 可以是 tcp,也可以是 SSL
  • client_id 是一个单独的客户 ID
  • host 是代理主机
  • port 是代理端口
  • topic_filter 是订阅主题筛选器。

此字段必填

如果定义了 SSL 协议,则 MQTT Configure Tool 必须用于为客户端配置 Transport Layer Security (TLS) 设置。

如果未提供 client_id ,则客户 ID 将有服务端生成。

不能在 URL 中使用通配符来定义主题筛选器,否则 URL 将无法正确解析。若要在主题筛选器中使用通配符,则省略 URL 声明中的主题筛选器并使用 MQTT Configure Tool定义主题筛选器。

可以使用 MQTT Configure Tool定义消息到达事件的自定义时间戳格式。

Username

定义连接到代理时使用的用户名。

Password

定义连接到代理时使用的密码。

MQTT 配置工具

配置工具允许配置整个测试的某些 MQTT 属性,以在需要相同属性时,减少单个测试步骤中所需的配置量。配置工具中定义的任何设置都可被单个测试步骤所覆盖。在使用事件监控器接口时,该配置工具非常有用,因为没有办法在事件监控器工具中配置 TLS 属性。作为最佳实践,此工具应只用于 Set-Up 测试。

配置

可以配置以下设置。

连接设置

Connection Timeout

查阅 Connection Timeout ,以获得关于如何配置此字段的说明。

Keep Alive Interval

查阅 Keep Alive Interval 以获得关于如何配置此字段的说明。

Clean Session

查阅 Clean Session ,以获得关于如何配置此字段的说明。

Client Persistence Directory

查阅 Client Persistence Directory 以获得关于如何配置此字段的说明。

订阅设置

此页面应该只在使用事件监控器工具时进行配置。此页面允许在主题筛选器中使用通配符,并允许自定义服务质量级别和消息到达时间戳格式。

Topic Filter

查阅 Topic Filter ,以获得关于如何配置此字段的说明。

Quality of Service

查阅 Quality of Service 以获得关于如何配置此字段的说明。

Timestamp Format

查阅 Timestamp Format ,以获得关于如何配置此字段的说明。

Last Will 和 Testament (LWT) 设置

查阅 Last Will and Testament (LWT) Settings 以获得关于如何配置这些设置的更多详情。

传输层安全(TLS)设置

查阅 Transport Layer Security (TLS) Settings 以获得关于如何配置这些设置的更多详情。

使用 Set-Up MQTT 配置测试运行负载测试工具

如果希望使用 .tst 运行负载测试,该测试使用 MQTT 配置工具作为 Set-Uo 测试,则必须在虚拟用户上下文中运行这些工具。

  1. 单击负载测试配置(Load Test Configuration)下的 Profiles 节点。
  2. 单击项目配置面板中的 Setup/Teardown Options 选项卡,然后启用 Run once per virtual user 选项。

第三方内容

此扩展包括来自第三方的资源项,如下:

更多的许可详情可在该插件的 licenses 文件夹中获得。

  • No labels