本主题介绍如何录制 HTTP、JMS 和 MQ 通讯报文,以用于测试生成目的。

章节目录:

记录概要

从 Parasoft Virtualize 录制

Parasoft Virtualize(通过 CTP 的瘦客户端接口)生成的通讯报文文件可以用于测试创建和虚拟资产创建。

关于 SOAtest 记录代理

如果没有 Parasoft Virtualize,可以使用 SOAtest 的录制代理在应用程序运行时监控和捕获来自服务的实时 HTTP、JMS 或 MQ 通讯报文。这些代理可以同时捕获通过多个端点的实时通讯报文。

当应用程序运行时,录制代理监控指定传输上的通信。SOAtest“监听”通讯报文请求和响应,然后构建一个合法请求/响应对的通讯报文文件。然后,将该通讯报文用来生成测试套件,该套件表示在预配置的工具中捕获到的行为。

支持 JMS、MQ、HTTP、HTTPS (SSL)、Basic、Digest 和 Kerberos 身份验证;不支持 NTLM。

不支持 HTTP 分块和 continu 头。

使用这种方法记录和生成通讯报文测试涉及两个主要步骤:

  1. 捕获文件中的通讯报文。告诉 SOAtest 如何连接以及希望它监控什么。启用监控后,SOAtest 将从捕获的请求和响应构建一个通讯报文文件。
    • 详情请参阅以下内容。
  2. 从该通讯报文文件中创建测试。

使用 SOAtest 录制通讯报文

如要跨一个或多个端点捕获实时通讯报文,请完成以下步骤:

  1. 前往文件 > 新建 > 其他> SOAtest> 通讯报文> 通讯报文录制
  2. 对于要录制通讯报文的每个端点,请执行以下操作:
    1. 在为录制通讯报文配置代理对话框中,点击添加

      打开的向导将预先填充您已配置的任何连接。
    2. 代理类型下,选择所需传输(HTTP、JMS、MQ)。
    3. 完成所选传输的代理设置。详情请参阅自定义分组标准JMS Recording ConfigurationMQ 录制配置
    4. 通讯报文文件字段中,指定为捕捉通讯报文而创建的通讯报文文件的保存位置。稍后可以使用该通讯报文文件生成表示捕获到的实时通讯报文的资产。
    5. 指定要如何在通讯报文文件中录制通讯报文数据:
      • 附加通讯报文数据将新的通讯报文数据添加至现有通讯报文文件中(在通讯报文文件字段中指定的文件)。如果指定文件早就不存在了,则将创建一个新的文件。
      • 覆盖会话数据覆盖现有通讯报文文件中的通讯报文数据(在通讯报文文件字段中指定的文件)。如果指定文件早就不存在了,则将创建一个新的文件。
  3. 然后点击 OK
  4. 在主向导面板中,点击下一步
  5. 将被测应用程序的主机和端口设置为向导中指定的位置。
  6. 从被测应用程序中,生成您想要录制的通讯报文。
  7. 点击完成

当实时通讯报文被捕获时,您可以在可用选项卡之间切换,以查看每个端点上的请求和响应。

一旦通讯报文被捕获,您便有两个选项来生成测试:

HTTP 录制配置

本节介绍如何配置通过 HTTP 传输发送和接收消息的录制代理。

支持 HTTP、HTTPS (SSL)、Basic、Digest 和 Kerberos 身份验证;不支持 NTLM。

指定录制代理的 HTTP 设置

在录制代理向导,指定您的 HTTP 设置如下:

  1. 在代理(客户端)和目标应用程序(服务器)连接设置对话框中,选择 HTTP 作为代理类型
  2. 完成相应 HTTP 设置。
    • 对于服务器端 SSL,请勾选启用服务端 SSL
    • 对于双向 SSL,请勾选启用客户端 SSL,并完成证书和私有密钥设置。  启用客户端 SSL 将默认启用服务端 SSL。

服务端 SSL 设置

由于 SSL 的性质,SOAtest 的 HTTP 记录代理生成由其自己的证书颁发机构签名的动态服务器证书。为了接受这个动态服务器证书,需要将通过 HTTPS 生成请求的客户端设置为信任所有证书。此外,必须将 SOAtest 配置为信任服务提供的证书。操作步骤:

  1. 确保 SOAtest 服务器证书设置启用了信任所有证书(在 Parasoft> 首选项> Parasoft> 安全性中),或者服务的服务器证书被正确地添加到 SOAtest cacerts 文件中(更多详情,请参阅配置部署在 HTTPS 上的服务)。

双向 SSL 设置

由于 SSL 的性质,SOAtest 的 HTTP 记录代理生成由其自己的证书颁发机构签名的动态服务器证书。为了接受这个动态服务器证书,需要将通过 HTTPS 生成请求的客户端设置为信任所有证书。此外,必须将 SOAtest 配置为信任服务提供的证书,以及发送适当的客户端证书。。操作步骤:

  1. 确保 SOAtest 服务器证书设置启用了信任所有证书(在 Parasoft> 首选项> Parasoft> 安全性中),或者服务的服务器证书被正确地添加到 SOAtest cacerts 文件中(更多详情,请参阅配置部署在 HTTPS 上的服务)。
  2. 确保您有客户端证书密钥库文件(并且,如果客户端证书和私钥存储在不同密钥库 — 私钥密钥库文件)以及相关的密钥库的密码、密钥库类型信息、私钥密码和名称的别名用于证书/私钥。

捕获通讯报文

若要生成从使用服务器端 SSL 或双向 SSL 的服务捕获 HTTPS 通讯报文的通讯报文文件,请完成向导,如捕获通讯报文中所述。

在 HTTP 向导页面中,请确保启用适当的 SSL 选项:

  • 对于服务器端 SSL,请勾选启用服务端 SSL
  • 对于双向 SSL,请勾选启用客户端 SSL,并完成证书和私有密钥设置。启用客户端 SSL 将默认启用服务端 SSL。

JMS 录制配置

本节介绍如何配置通过 JMS 传输发送和接收消息的录制代理。

章节目录:

JMS 前提条件

JNDI

请参阅 JMS 前提条件

队列分配

当在队列上交换通讯报文时,假设有一个客户端应用程序向客户端目标队列发送请求,而服务器应用程序从队列接收该消息,然后将另一条(应答)消息发送到第二个队列,以便客户端接收。

在该场景中,Parasoft SOAtest 在客户端和服务器之间使用了一种“中间人”(代理)的方法。因此,在消息传送提供者上需要额外设置两个队列来促进该中介过程。SOAtest 代理将从客户端放置消息的位置接收消息,录制消息内容(如果启用了录制功能),然后将消息放在服务器将从其接收消息的队列中。类似地,服务器将消息发送到一个队列,在这个队列中代理接收它,并记录它(如果启用了记录功能),然后将它放回客户端期待回复响应的队列中。

因此,需要分配两个额外的队列,其中之一是:

  • 调整客户端应用程序,以便在这两个新队列上通信(使用为它们配置的代理连接)。
  • 调整服务器应用程序以使用其他两个队列。

只需要修改两个应用程序队列中的一个。

指定 JMS 设置

指定 JMS 设置,如下所示:

  1. 在代理(客户端)和目标应用程序(服务器)连接设置对话框中,选择 JMS 作为代理类型
  2. 指定您是使用 JMS 队列还是主题、提供者 URL、初始化环境或连接工厂(请确保将相关 jar 添加到 SOAtest classpath 中),以及任何附加的初始化环境 JNDI 属性、身份验证,以及您希望监控以收集通讯报文的队列/主题。

    使用 JMSReplyTo 作为响应

    该选项指定是否使用消息的 JMSReplyToQueueName 头来确定代理发送响应的位置。如果启用 使用 JMSReplyToQueueName 响应选项,来自传入请求的值将用于确定将响应发送到何处。  如果未启用该选项,响应将发送值 UI 中指定的队列;JMS 消息头中的值将被忽略。


    • 队列:SOAtest 将捕获发送给客户端目标队列的消息,然后将其转发到服务器回复队列队列,以进行处理。服务器目标队列是服务器将在其上放置响应消息的队列(处理请求消息之后)。SOAtest 将捕获这些消息并将其转发至客户端回复队列。更多详情,请参阅配置录制的队列
    • 主题:SOAtest 监控客户端订阅主题的传入请求,以及服务端发布主题的传出响应。

MQ 录制配置

本节介绍如何配置通过 MQ 传输发送和接收消息的录制代理。

章节目录:

MQ 前提条件

Jar 文件

请参阅将必要的 Jar 文件添加到 Classpath

队列分配

当在队列上交换通讯报文时,假设有一个客户端应用程序将请求放到客户端目标队列中,而服务器应用程序从队列中获取消息,然后将另一条(应答)消息放到第二个队列中,以便客户端获取。

在该场景中,Parasoft SOAtest 在客户端和服务器之间使用了一种“中间人”(代理)的方法。因此,在消息传送提供者上需要额外设置两个队列来促进该中介过程。SOAtest 代理将从客户端放置消息的位置接收消息,录制消息内容(如果启用了录制功能),然后将消息放在服务器将从其接收消息的队列中。类似地,服务器将消息发送到一个队列,代理进行接收并录制(如果启用了录制功能),然后将它放回客户端期待回复响应的队列中。

因此,需要分配两个额外的队列,其中之一是:

  • 调整客户端应用程序,以便在这两个新队列上通信(使用为它们配置的代理连接)。
  • 调整服务器应用程序以使用其他两个队列。

只需要修改两个应用程序队列中的一个。

指定 MQ 设置

指定 MQ 设置,如下所示:

  1. 在代理(客户端)和目标应用程序(服务器)连接设置对话框中,选择 MQ 作为代理类型
  2. 在可用字段中指定 MQ 设置。关于更多配置详情,请参阅以下内容。

使用 replyToQueueName 作为响应

该选项指定是否使用消息的 replyToQueueName 头来确定代理发送响应的位置。它影响 MQMT_REQUEST 类型的 MQ 消息的响应。

如果启用了使用 replyToQueueName 响应选项,来自传入请求的值将用于确定将响应发送到何处。如果未启用该选项,响应将发送值 UI 中指定的队列。更具体地说:

  • 如果启用了 使用 replyToQueueName 响应,并且指定了 MQMD.replyTo-QueueManagerName 和 MQMD.replyToQueueName 的值,那么这些值将确定要将响应发送到的队列管理器和队列名称。
  • 如果启用了使用 replyToQueueName 响应,并且请求中缺少了 MQMD.replyToQueueM-anagerName 或 MQMD.replyToQueueName,那么将使用 UI 中指定的值来替代缺少的值。
  • 如果禁用了使用 replyToQueueName 响应,那么将忽略 MQ 请求消息中的 replyToQueueName 和 reply-ToQueueManagerName 字段。UI 设置将确定消息发送到何处。


为记录配置队列

本节介绍如何为 WebSphere MQ 和 JMS 点到点配置记录(当使用队列时,而不是主题)。

概要

Parasoft SOAtest 用于捕获/记录 JMS 点到点消息传递和 WebSphere MQ 的方法要求 SOAtest 充当代理,或者,换句话说,充当中介/中间人。

假设有一个客户端/消费者应用程序(我们称之为“客户端”),它向目标队列 REQUEST_QUEUE 发送/插入/推送请求消息,并从 RESPONSE_QUEUE 接收/获取/拉取响应/回复。另外,假设有一个服务器/提供者应用程序(我们称之为“服务器”)从 REQUEST_QUEUE 中 接收/获取/拉取消息,并将响应发送/插入/推送到 RESPONSE_QUEUE。

存在两种录制通讯报文的配置方案。其中一种是修改客户端应用程序端使用的队列。另一种是修改服务器上使用的队列。

使用的最佳方法取决于您能够访问和修改哪种终端。在这两种情况下,您都需要创建两个额外的队列来启用录制过程。这里,我们把它们标记为 PROXY_REQUEST_QUEUE 和 PROXY_RESPONSE_QUEUE。

为什么使用主题而不是队列?

如果使用发布和订阅模式(使用主题而不是队列),那么便不需要将新主题引入系统。这就是为什么在向导中只需要提供两个目标:

  • 一个用于向导中标记为“客户端订阅主题”的请求。
  • 一个用于向导中标记为“服务器发布主题”的响应。

场景 1:修改客户端应用程序

在此场景中,您需要访问客户端应用程序部署配置,以便调整它使用的队列。修改客户端用于与服务器通信的队列如下:

  • 在 PROXY_REQUEST_QUEUE 上插入/发送/推送消息
  • 从 PROXY_RESPONSE_QUEUE 中接收/获取/拉取消息

在这种情况下,服务器不需要更改队列。

在 MQ 或 JMS 录制向导中,提供以下队列名称:

客户端队列
Destination/Put 队列PROXY_REQUEST_QUEUE
Reply to/Get 队列PROXY_RESPONSE_QUEUE
服务端队列
Reply to/Get 队列REQUEST_QUEUE
Destination/Put 队列RESPONSE_QUEUE

场景 2:修改服务端应用程序

在此场景中,您需要访问服务端应用程序部署配置,以便调整它使用的队列。修改服务端用于与客户端通信的队列如下:

  • 从 PROXY_REQUEST_QUEUE 中接收/获取/拉取消息
  • 在 PROXY_RESPONSE_QUEUE 上插入/发送/推送响应消息

在这种情况下,客户端不需要更改队列。

在 MQ 或 JMS 录制向导中,提供以下队列名称:

客户端队列
Destination/Put 队列REQUEST_QUEUE
Reply to/Get 队列RESPONSE_QUEUE
服务端队列
Reply to/Get 队列PROXY_REQUEST_QUEUE
Destination/Put 队列PROXY_RESPONSE_QUEUE
  • No labels