本主题解释如何记录 HTTP、JMS 和 MQ 通讯报文,以用于测试生成目的。
本章包含:
Parasoft Virtualize(通过 CTP 的瘦客户机接口)生成的通讯报文文件可以用于测试创建和虚拟资产创建。
如果没有 Parasoft Virtualize,那便可以使用 SOAtest 的记录代理在应用程序运行时监视和捕获来自服务的实时 HTTP、JMS 或 MQ 通讯报文。 这些代理可以同时捕获通过多个端点的实时通讯报文。
当应用程序运行时,记录代理监视指定传输上的通信。SOAtest“监听”通讯报文请求和响应,然后构建一个合法请求/响应对的通讯报文文件。然后,将该通讯报文用来生成测试套件,该套件表示在预配置的工具中捕获到的行为。
支持 JMS、MQ、HTTP、HTTPS (SSL)、Basic、Digest 和 Kerberos 身份验证;不支持 NTLM。
不支持 HTTP 分块和 continu 数据头。
使用这种方法记录和生成通讯报文测试涉及两个主要步骤:
如要跨一个或多个端点捕获实时通讯报文,请完成以下步骤:
当实时通信被捕获时,你可以在可用选项卡之间切换,以查看每个端点上的请求和响应。
一旦通讯报文被捕获,你便有两个选项来生成测试:
本节解释如何配置通过 HTTP 传输发送和接收消息的记录代理。
支持 HTTP、HTTPS (SSL)、Basic、Digest 和 Kerberos 身份验证;不支持 NTLM。
在录制代理向导,指定你的 HTTP 设置如下:
由于 SSL 的性质,SOAtest 的 HTTP 记录代理生成由其自己的证书颁发机构签名的动态服务器证书。 为了接受这个动态服务器证书,需要将通过 HTTPS 生成请求的客户机设置为信任所有证书。此外,必须将 SOAtest 配置为信任服务提供的证书。为此:
由于 SSL 的性质,SOAtest 的 HTTP 记录代理生成由其自己的证书颁发机构签名的动态服务器证书。 为了接受这个动态服务器证书,需要将通过 HTTPS 生成请求的客户机设置为信任所有证书。此外,必须将 SOAtest 配置为信任服务提供的证书,以及发送适当的客户端证书。。为此:
若要生成从使用服务器端 SSL 或双向 SSL 的服务捕获 HTTPS 通讯报文的通讯报文文件,请完成向导,如 Capturing the Traffic (上述)中所述。
在 HTTP 向导页面中,请确保启用适当的 SSL 选项:
本节解释如何配置通过 JMS 传输发送和接收消息的记录代理。
本章包含:
请查阅 JMS 前提条件。
当在队列上交换通讯报文时,假设有一个客户机应用程序向客户机目标队列发送请求,而服务器应用程序从队列接收该消息,然后将另一条(应答)消息发送到第二个队列,以便客户机接收。
考虑到这个场景,Parasoft SOAtest 在客户机和服务器之间使用“中间人”(也称为代理)方法,因此消息传递提供者上需要两个额外的队列来促进该中介。SOAtest 代理将从客户机放置消息的位置接收消息,记录消息内容(如果启用了记录功能),然后将消息放在服务器将从其接收消息的队列中。类似地,服务器将消息发送到一个队列,在这个队列中代理接收它,并记录它(如果启用了记录功能),然后将它放回客户机期待应答响应的队列中。
因此,需要分配两个额外的队列,其中之一是:
只需要修改两个应用程序队列中的一个。
指定 JMS 设置,如下所示:
指定你是使用 JMS 队列还是主题、提供者 URL、初始上下文或连接工厂(请确保将相关 jar 添加到 SOAtest 类路径中),以及任何附加的初始上下文 JNDI 属性、身份验证,以及你希望监视以收集通讯报文的队列/主题。
该选项指定是否使用消息的 JMSReplyToQueueName 数据头来确定代理发送响应的位置。如果启用了 Use JMSReplyToQueueName for Response 选项,来自传入请求的值将用于确定将响应发送到何处。 如果未启用该选项,响应将发送值 UI 中指定的队列;JMS 消息数据头中的值将被忽略。 |
本节解释如何配置通过 MQ 传输发送和接收消息的记录代理。
本章包含:
查阅 Adding Necessary Jar Files to the Classpath。
当在队列上交换通讯报文时,假设有一个客户机应用程序将请求放到客户机目标队列中,而服务器应用程序从队列中获取消息,然后将另一条(应答)消息放到第二个队列中,以便客户机获取。
考虑到这个场景,Parasoft SOAtest 在客户机和服务器之间使用“中间人”(也称为代理)方法,因此消息传递提供者上需要两个额外的队列来促进该中介。SOAtest 代理将从客户机放置消息的位置接收消息,记录消息内容(如果启用了记录功能),然后将消息放在服务器将从其接收消息的队列中。类似地,服务器将消息发送到一个队列,在这个队列中代理接收它,并记录它(如果启用了记录功能),然后将它放回客户机期待应答响应的队列中。
因此,需要分配两个额外的队列,其中之一是:
只需要修改两个应用程序队列中的一个。
指定 MQ 设置,如下所示:
该选项指定是否使用消息的 replyToQueueName 数据头来确定代理发送响应的位置。它影响 MQMT_REQUEST 类型的 MQ 消息的响应。 如果启用了 Use replyToQueueName for Response 选项,来自传入请求的值将用于确定将响应发送到何处。 如果未启用该选项,响应将发送值 UI 中指定的队列。更具体地说:
|
本节解释如何为 WebSphere MQ 和 JMS 点到点配置记录(当使用队列时,而不是主题)。
Parasoft SOAtest 用于捕获/记录 JMS 点到点消息传递和 WebSphere MQ 的方法要求 SOAtest 充当代理,或者,换句话说,充当中介/中间人。
假设有一个客户机/消费者应用程序(我们将其称为“客户机”)在目标队列 REQUEST_QUEUE 上 sends/puts/pushs 请求消息,并从 RESPONSE_QUEUE 上 receives/gets/pulls 响应消息或应答消息。还假设有一个服务器/提供者应用程序(我们将其称为“服务器”)从 REQUEST_QUEUE 中 receives/gets/pulls 消息,并将响应 sends/puts/pushes 到 RESPONSE_QUEUE。
有两种记录通讯报文的可能配置方案。其中一种方法是修改客户端应用程序端使用的队列。另一种方法是修改服务器上使用的队列。
使用的最佳方法取决于你访问和修改每个终端的能力。在这两种情况下,你需要创建两个额外的队列来启用记录过程。这里,我们把它们标记为 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 |
在此场景中,你需要访问服务端应用程序部署配置,以便调整它使用的队列。修改服务端用于与客户端通信的队列如下:
在这种情况下,客户端不需要更改队列。
在 MQ 或 JMS 录制向导中,提供以下队列名称:
客户端队列 | |
---|---|
Destination/Put 队列 | REQUEST_QUEUE |
Reply to/Get 队列 | RESPONSE_QUEUE |
服务端队列 | |
Reply to/Get 队列 | PROXY_REQUEST_QUEUE |
Destination/Put 队列 | PROXY_RESPONSE_QUEUE |