章节目录:

前言

Parasoft WebSocket Transport Extension 为 SOAtest 中适用的消息传送客户端工具添加了对 WebSocket 传输的支持。这使您能够在配置、发送和验证通过 WebSockets 发送的消息时充分利用 SOAtest 的丰富接口。WebSocket Transport Extension 支持根据 RFC 6455 标准通过 WS 或 WSS 协议发送消息。

前提条件

  • SOAtest 9.10.0 或更高版本
  • Oracle Java 8

安装

可以从 UI 或命令行中安装此工具。

UI 安装

  1. 选择 Parasoft> 首选项
  2. 系统属性首选项页面,点击添加 JARs
  3. 在打开的文件选择器中,选择 websockettransport.jar
  4. 点击应用,重启 SOAtest。

命令行安装

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

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

使用说明

WebSocket Transport 在以下工具中使用:

该传输协议在传输选项卡中配置。若要使用 WebSocket Transport,请在传输下拉菜单中选择 WebSocket,然后配置可用选项(请参阅Configuration Options)。

配置选项

可以使用以下配置选项。

连接设置

URI

指定要调用的 URI,包括协议(ws:// or wss://)。

这是创建新连接所必需的。创建初始连接之后,可以使用连接 ID 控制要使用哪个连接。

连接 ID

如果要测试多个连接,请指定连接 ID。任何字符串都可以用于连接 ID。

如果指定引用已打开连接的连接 ID 和 URI,则 URI 将被忽略,因为连接已经打开。

如果使用测试套件中的单个连接,则不需要设置连接 ID;SOAtest 将使用默认值(<default>)作为连接 ID。

但是,如果希望在同一场景中的多个连接上打开和发送/接收消息,则需要为每个连接指定唯一的连接 ID。

默认:<default>

模式

指定该传输协议的消息模式。有效模式如下:

发送:将发送一条消息,但不会等待处理来自服务器的传入消息。

receive: 将等待与传入消息处理选项中指定的条件匹配的传入消息。

sendAndReceive: 首先发送在 SOAtest 中配置的消息,然后等待与传入消息处理选项中指定的条件匹配的传入消息。

默认:<sendAndReceive>.

格式类型

可以为消息指定格式类型,可以是文本也可以是二进制

WebSocket 协议使用数据帧传输有效负载,这些数据帧大多配置为文本或二进制类型。除了发送二进制消息外,在所有情况下都应该使用默认值(文本),在这种情况下应该使用二进制。  查阅 https://tools.ietf.org/html/rfc6455#section-5.6

默认:文本

连接超时

指定在超时之前等待连接建立的时间(以毫秒为单位)。

默认:5000

日志等级

指定要将多少信息记录到控制台和事件监控视图。可使用以下级别:

1:错误

2:警告

3:信息

4:调试

默认:2

HTTP Headers 设置

当 WebSocket 连接打开时,会有一个初始握手过程,这是一个 HTTP Upgrade 请求。本节配置应该作为此升级请求的一部分发送的 HTTP 头(查阅 https://tools.ietf.org/html/rfc6455#section-1.3)。

最多可以配置 10 个 HTTP 头。头部使用 name:value 格式配置,例如 User-Agent:Mozilla/5.0

传入的消息处理

SOAtest 开启连接后,该传输扩展便监听来自服务器的所有传入消息,并将它们添加到内部队列中。当处于接收sendAndReceive 模式时,传输尝试查找与指定的消息选择器设置匹配的消息。首先检查队列。如果找到匹配的消息,则将该消息作为响应消息发送给通讯报文查看器。消息还被发送到连接到客户端工具的响应输出的工具。如果队列中没有找到匹配的消息,则该传输扩展将等待来自匹配消息选择器设置的服务器的消息。如果在指定超时内没有接收到消息,则报告错误消息。

消息保留在内部队列上,直到连接被 SOAtest 关闭。如果连接被服务器关闭,则消息将保留在队列中,以便您可以验证服务器可能在关闭连接之前立即发送给客户端的消息。

选择消息器

指定 XPath,选择传输应该处理哪些传入消息。Xpath 应该使用以下格式选择消息中的节点和节点的值:xpath=value(比如,/root/name=”Bob”)。

还可以使用 XPath 和运算符来匹配消息中的多个节点,比如,/root/name=”Bob”/root/age=”40”

如果 XPath 计算结果为布尔类型 true、非零数、节点或一组节点,则认为 XPath 匹配。如果 XPath 计算结果为 false、数字 0 空节点集,则认为 Xpath 不匹配。布尔值的匹配规则基于 W3C 的推荐(请参阅 https://www.w3.org/TR/xpath-functions/#func-boolean)。

默认:选择下一个消息。如果该字段为空,则使用默认设置。在本例中,传输将处理下一条消息。这可以是队列中的下一条消息,如果没有排队的消息,也可以是来自服务器的下一条消息。

消息格式

指定在消息选择器中匹配的传入消息的格式(例如,XML、JSON 等)。只有当预期的消息不是 XML 或 JSON 格式,并且为消息选择器指定了一个值时,才需要该字段。

默认情况下,传输可以自动检测 XML 或 JSON 格式。如果消息是另一种格式,则必须在此字段中指定它。

格式应该与格式的名称匹配,因为它出现在 XML 转换器工具中,或者定义在自定义消息格式中。当指定消息格式时,SOAtest 将基于指定消息格式的默认转换选项将消息转换为 XML。

默认:auto-detect

超时

指定在超时之前等待传入消息的时间(以毫秒为单位)。

默认:30000

示例用例

内部队列和消息选择器消除了对确保以特定顺序从服务器接收消息的依赖。此外,也没有必要确保客户端在从服务器接收到消息的瞬间监听消息。

例如,如果预期有来自服务器的两条不同消息,则可以验证它们是否已接收,以及它们的内容是否正确,而不管它们接收的顺序如何。在本例中,您将使用匹配每个消息的 Xpath 配置两个不同的客户端工具。

如果将第二个工具配置为匹配的消息在第一个预期消息之前到达,那么它将被添加到队列中。第一个工具被配置为匹配的消息将在它到达时被处理。然后,第二个工具将能够处理队列中已经存在的消息。

连接管理设置

您可以启用保持连接测试执行之后关闭连接选项。WebSocket 传输允许使用多个活动连接。

如果连接 ID 与已经打开的连接 ID 匹配,则该连接将被重用。如果连接 ID 与已经关闭或以前从未用于打开连接的连接 ID 匹配,则将创建一个新连接。

如果启用保持连接选项,SOAtest 将不会在测试执行结束时对连接调用 close()。如果启用测试执行之后关闭连接选项,SOAtest 将会在测试执行结束时关闭连接。与内置传输不同,在执行完成时,没有对自定义传输的打开连接进行最终清理,所以应该为给定连接的最后一次测试启用测试执行之后关闭连接。如果不这样做,连接将保持打开状态。

示例场景

在下面的场景中,测试运行结束后,这两个连接都将保持打开状态:

  • 连接 A(保持连接)
  • 连接 B(保持连接)
  • 连接 A(保持连接)
  • 连接 B(保持连接)

要解决这个问题,可以为使用特定连接的最后一个测试启用测试执行之后关闭连接:

  • 连接 A(保持连接)
  • 连接 B(保持连接)
  • 连接 A(关闭连接)
  • 连接 B(关闭连接)

负载测试注意事项

如需对打开共享 WebSocket 连接的客户端进行负载测试,应在父测试套件中启用“测试以组运行”(可在执行选项 > 测试执行选项卡中找到)。该选项允许每个虚拟用户(VU)运行整个场景,因此每个虚拟用户都能创建和重复使用自己的 WebSocket 连接。如果启用“测试可单独运行”,则每名虚拟用户将单独运行套件的其中一个测试,没有可用的连接共享。

第三方内容

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

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

  • No labels