本主题说明如何虚拟化在通讯报文日志中捕获的通讯报文。

章节目录:

前言

可以虚拟化应用程序行为捕获的通讯报文日志,包括:

  • 日志是由 Virtualize 消息代理或录制代理产生的(例如,JMS, MQ, HTTP)。
  • 其他来源的日志;例如:
    • 使用网络嗅探工具在网络级别捕获的消息跟踪或日志。
    • 通过让应用程序录制其通讯报文获得的 HTTP 日志。

虚拟化是通过使用向导在虚拟资产中创建和部署消息响应来实现的。

支持的通讯报文日志格式

Virtualize 支持以下通讯报文日志格式(文件扩展名无关紧要)。

HTTP 通讯报文日志

对于 HTTP 解析器类型,Virtualize 使用 POST、GET 和 PUT 方法识别和解析 HTTP 通讯报文。不支持 DELETE。Virtualize 日志包含每个 HTTP 头,然后是消息体内容:

HTTP request 1 headers 
HTTP request 1 body 
HTTP response 1 headers 
HTTP response 1 body 
HTTP request 2 headers 
HTTP request 2 body 
HTTP response 2 headers 
HTTP response 2 body 
...

Virtualize 要求消息体和下一个 HTTP 头之间有两行结束符(Windows 或 Unix)。

此格式类似于 Virtualize 消息代理、记录向导或其他 HTTP 通讯报文嗅探工具所捕获的格式,这些工具可以在 HTTP 通讯报文通过 HTTP 套接字连接传输时记录 HTTP 通讯报文。支持使用分块通讯报文记录的 HTTP 分块和通讯报文文件。但是,不支持包含分块消息或“continue”头部的原始 HTTP 通讯报文文件。 

可以对值进行编码或解码。例如,如果请求的路径为 /some/url?q=star+wars,其关联性应与 /some/url?q=star%20wars 相同,即使 "q" URL 参数关联性设置为 'star wars'。如果正在使用已编码的值和数据源关联性,请参阅数据源关联性选项卡的说明。

Virtualize 将以 URL 编码的 POST 请求形式发送的正文内容视为 URL 参数,而不是将其放入请求正文中。可以灵活基于各个参数创建关联。

JMS 和 MQ 通讯报文日志

Virtualize 支持使用由 Virtualize 消息代理和通讯报文记录向导生成的 JMS 和 MQ 通讯报文文件创建 .pvas。 

消息格式

对于参数化消息,通讯报文文件可以包含 Virtualize 支持的任何消息格式(包括 EDI、JSON、定长和自定义消息格式)。对于固定消息,只支持 XML 和 JSON。

基于示例请求和响应构造通讯报文文件

如果希望基于示例请求/响应创建虚拟资产,可以将请求/响应聚合到单个通讯报文文件中,然后从该通讯报文文件创建虚拟资产。

下面的示例显示了这种通讯报文文件的格式:

POST /SomePath HTTP/1.0
Content-Type: text/xml; charset=UTF-8
 
[Request 1 Message]
 
HTTP/1.1 200 OK
Content-Type: text/xml; charset=UTF-8
 
[Response 1 Message]

POST /SomePath HTTP/1.0
Content-Type: text/xml; charset=UTF-8
 
[Request 2 Message]
 
HTTP/1.1 200 OK
Content-Type: text/xml; charset=UTF-8
 
[Response 2 Message]

指定循环深度

当通讯报文具有相同元素自身为子元素的循环时,Virtualize 将在第一级停止填充表单输入。但是您可以设置 RepositorySchemaCreator.cycle.limit 系统属性,以指定填充表单输入所需的循环深度。例如:

-J-DRepositorySchemaCreator.cycle.limit=5

使用参数化消息与使用固定消息

Virtualize 为从通讯报文日志生成消息响应器提供了两个选项:

  • 生成参数化消息创建使用来自 Parasoft 数据资源库的值自动参数化的消息响应器(使用此选项时也会自动创建该资源库)。此选项允许您使用为操作大型复杂数据源而设计的图形界面快速添加和修改响应值。数据值的存储和操作独立于消息响应器和 .pva。该步骤在从通讯报文中创建参数化的消息响应器中进行了描述。
  • 生成固定消息创建通过多种响应格式逐个指定每个响应的消息响应器。所有响应消息数据都存储在消息响应器中并在其中进行操作。可以使用从传入消息提取的数据对响应消息元素进行参数化。该步骤在从通讯报文中创建固定的消息响应器中进行了描述。

示例

要理解两者的区别,请看下面这个例子,它来自一个简单的 HTTP 通讯报文文件,包含 9 条消息,其中有 3 条消息用于 getItemByTitle 操作。 

参数化信息

使用“生成参数化消息”,Virtualize 按如下方式配置消息响应器的 getItemByTitle 响应。


此外,它还创建了以下可编辑和可扩展的数据资源库。





固定消息

使用“生成固定消息”,Virtualize 将消息响应器的 getItemByTitle 响应配置如下。
 

视频教程:从示例请求/响应对创建虚拟资产

在本视频中,您将学习如何从一个 XML 示例创建一个虚拟资产。

  • No labels