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

本章包含:

前言

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

  • 日志是由 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=harry+potter 进入,则它应该和 /some/url?q=harry%20potter 相同,即使 "q" URL 参数关联被设置为 'harry potter'。如果正在使用已编码的值和数据源相关性,请参阅 Data Source Correlation Tab选项卡的说明。

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