本主题解释用于从通讯报文中创建虚拟资产的高级界面。该界面可在 CTP 连接到 9.10 或更高版本的 Virtualize 时使用。有关使用 Virtualize 9.9.x 从通讯报文中创建虚拟资产的更多详情,请查阅 创建虚拟资产

概要

CTP 的 "create from traffic” 功能允许从记录的 HTTP/S、JMS 或 MQ 通讯报文中快速创建参数化的虚拟资产,这减少了定义复杂响应所需的时间和精力。它还促进了数据的编辑和扩展,因此在一个环境中捕获的数据(例如,功能测试)可以很容易地在其他环境中重用(例如,性能测试、开发、安全测试等)。

每次通过向导时,CTP 都会创建一个虚拟资产(.pva)文件,其中包含消息响应器,该响应器使用在 Parasoft 数据存储库服务器上创建的存储库中的值自动参数化。然后,可以独立于虚拟资产操作数据值。 

CTP 的 create from traffic 功能目的在于处理 JSON 或 XML 格式消息。若要使用其他报文格式(比如,EDI、纯文本等)从通讯报文文件中创建虚拟资产,则使用 Virtualize 桌面上的 "Generate Parameterized Messages” 向导。

前提条件

从通讯报文中创建虚拟资产需要:

  • 9.10 或更高版本的 Virtualize 连接到 CTP(有关更多详情,请查阅 将 Virtualize 服务器或 SOAtest 服务器与 CTP 集成 )。
  • 一个受支持的通讯报文文件,存储在要创建虚拟资产的 Virtualize 服务器上的 recorded_traffic 文件夹下。可接受格式包括:
    • 日志是由 Virtualize 消息代理或录制代理产生的(有关更多详情,请查阅 配置消息代理 )。
    • 使用网络嗅探工具在网络级别捕获的消息跟踪或日志。
    • 通过让应用程序记录其通讯报文获得的 HTTP 日志。
  • Parasoft 数据资源库服务器运行并连接到 CTP(请查阅 测试数据助手设置 以获得更多详情)。

注意

  • 消息内容必须是格式良好的(比如,如果是 XML,则它必须是格式良好的);否则,自动从通讯报文中创建消息响应程序可能失败。SOAP 消息必须只有一个顶级 XML 元素。 

  • 不支持混合类型 JSON 数组的参数化。如果 JSON 数组不是混合类型,那么 CTP 将假设数组中的所有元素都与第一个元素的类型相同。


创建虚拟资产 

若要从通讯报文中创建虚拟资产,请完成以下内容:

  1. 在左窗格中,选择要添加新虚拟资产的服务器或文件夹。
  2. 从页面级操作菜单选择 Create Virtual Asset 。
  3. (可选)修改新建虚拟资产的名称。
  4. 设置为 Create From Traffic
  5. 如果要应用模板文件(存储在 Virtualize 服务器的 traffic_templates 文件夹)中保存的设置,则选择 Apply a template file,然后选择要应用的模板文件。  如果应用模板,则将从设置中预先填充后续向导页面中的设置。可以根据需求在不影响模板的情况下修改设置。还可以在新模板中捕获修改后的设置。  

  6. Repository server下,选择要存储相关数据的数据资源库服务器。
  7. Repository name下,选择或输入要存储相关数据的资源库的名称,然后单击 Next

  8. 在下一向导页面,检查推荐的分组策略,如果需要调整它,然后单击 Next。有关可用分组策略的详细信息,请查阅 了解分组策略。这里是一个快速概述的选项:
    • HTTP 方法:确定是否处理该消息。  
    • URL 路径:确定是否处理该消息。 
    • URL 参数:确定是否处理该消息。 
    • 请求体:Xpath 被用于确定是否处理该消息。

  9. 在下面的向导页面中,检查消息分组的结果。
    • 处理的请求/响应对的总数以及无效对的数量显示在顶部。
    • 显示的列类型取决于应用的分组策略。 
    • 每个表行表示定义组的标准。将为每个表行生成一个组。将为每个组生成一个响应程序。 

  10. 如果希望修改自动配置的请求关联和/或指定关联的 WSDL/模式,请展开相关的表行,然后配置关联和/或 WSDL/模式。查阅 Customizing Data Source Correlations 以获得关于如何配置关联的更多详情。


    为什么指定 WSDL/模式?

    指定 WSDL 或模式可以确保数据定义是根据 WSDL/模式定制的,而不是根据通讯报文推断的。此外,当您 Virtualize 桌面中使用这个虚拟资产时,还可以获得更丰富的编辑功能和变更顾问功能。

  11. 如果要保存在此向导中使用的设置,请选中 Export a reusable template 并指明所需的文件名。默认情况下,通讯报文将被记录在当前服务器的 recorded_traffic 文件夹中名为 %n_%d_%t.traffictemplate 的文件中(如果不存在,将创建它)。指定文件名称时,可以使用类似 %d (当前日期) %t (当前时间), %n (代理名称)和 %u (独特的基于时间的 id)的变量。  

  12. 单击 Create Asset

将创建和配置以下项目:

  • 带有参数化元素以及预先配置的响应器关联和数据源关联的消息响应器。
  • (对于新数据存储库)具有适用数据集和记录类型的新数据存储库。每个通过分析通讯报文确定的消息“组”将添加一个数据集。
  • (对于现有数据存储库)将向现有存储库添加新的数据集和记录类型。
  • 将为每个添加的数据集添加存储库数据源,并将消息响应器配置为使用该数据源。

视频教程:从记录的通讯报文创建虚拟资产

在本教程中,学习如何从记录的通讯报文创建虚拟资产。

了解分组策略

当从通讯报文创建虚拟资产时,关联的 Virtualize 服务器组按操作、按类型分组请求响应对。分组方法受 a) Virtualize 对给定通讯报文的分析 b) 选择应用的分组标准的影响。自动选择推荐的分组策略;这些建议可以根据需要进行调整和覆盖。 

Virtualize 采用分两个阶段分析通讯报文的方法:首先,它建议应该启用哪些分组策略,然后使用所选的策略将消息划分为组。当创建 PVA 时,为每个组生成一个响应器。

根据以下启发选择推荐的分组策略:

  • 在以下情况下,选择基于请求体的分组:
    • SOAP 通讯报文
    • 非 XML 报文格式
    • 非 HTTP 通讯报文
  • 在其他情况下,会选择基于 HTTP 方法和 URL 路径的分组。除非 HTTP 方法仅在所提供通讯报文中的方法发生变化时才会选择。

分组时,Virtualize 会:

  • 偏爱特定的,而不是一般的。Virtualize 生成尽可能特定的表达式,仅匹配该组中的所有消息(不匹配其他组中的消息)。这确保生成的响应程序正确地关联到相同的通讯报文。
  • 遵循分组顺序(HTTP 方法、URL 路径、URL参数,然后是请求主体内容)。例如,如果 URL 路径足以区分组,Virtualize 就不会为这些分组标准的每个步骤创建请求体关联,等等。

可采用以下分组策略:

HTTP 方法

根据 HTTP 方法(POST、GET、PUT 等)拆分生成的消息响应器。启用此策略后,每个唯一的 HTTP 方法都会生成一个消息响应器。

例如,如果通讯报文包含 10 条 POST 消息和 15 条 GET 消息(无论顺序如何),Virtualize 将在生成的 PVA 中创建 2 个响应器:一个用于 POST 消息,一个用于 GET 消息(假设在组中进一步的分裂中没有触发其他分组策略)。

结果组可以自定义,这样一个组可以捕获多个 HTTP 方法的消息。例如,如果在一个组中同时启用了 POST 和 PUT,那么使用 POST 方法的消息和使用 PUT 方法的消息将匹配该组并分配给该组。换句话说,基于该组生成的响应器将与 POST 和 PUT 消息相关(它将接受其中任何一条消息)。

URL 路径

根据 URL 路径的唯一性拆分生成的消息响应程序。每个唯一的 HTTP URL 路径都会生成一个消息响应器。按 HTTP URL 路径分组的配置本质上定义了这种唯一性。

当基于此策略首次生成组时,将分析路径,以生成一组最能描述消息类型的路径表达式。这种描述使用了一种内在主观的路径分析算法。它的目的是考虑 REST 服务中最常见的模式,但是可能需要调整生成的路径标准以获得最佳结果。

例如,如果通讯报文包含以下 HTTP URL 路径(为了简洁起见,省略了 HTTP 方法、URL 参数和其他因素)

/service/order/v1/1/summary
/service/order/v1/2/summary
/service/order/v1/2/summary
/service/customer/v1/a/contact
/service/customer/v1/b/contact
/Foo
/Foo

Virtualize 将在生成的 PVA 中创建三个响应器:

  • 响应器 1:用于汇总路径(3 条消息)
  • 响应器 2:用于联系路径(2 条消息)
  • 响应器 3:用于 Foo 路径(2 条消息)

这些响应器将使用 Ant 样式的通配符生成,其中 * 匹配零个或多个字符,** 匹配零个或多个目录。

配置基于路径的数据源关联

Virtualize 配置 URL 路径段索引时,创建一个新的 PVA,使每个组(响应器)可以响应相同的请求与不同的 URL 路径值。它通过提供段索引来配置 URL 路径参数。例如,给定以下 URL

/rest/api/2/version/1234/relatedIssueCounts
/rest/api/2/version/4568/relatedIssueCounts
/rest/api/2/version/4567/relatedIssueCounts

Virtualize 将指定要用数据源参数化的第五个路径段(带有 4 位数字的段)。然后,可以对每个 ID 的响应数据进行数据驱动,而不需要编辑 PVA。


URL 参数

根据 HTTP URL 参数的存在拆分生成的消息响应程序。每组一个或多个 URL 参数都会生成一个消息响应器。

例如,如果通讯报文包含以下 URL 参数

?oid=1&category=women
?oid=2&category=women
?oid=1&category=babies
?ssn=1234567890&state=CA&category=silver
?ssn=1234567891&state=CA&category=gold

Virtualize 将根据 oid、ssn 和 state 参数的存在在生成的 PVA 中分割响应程序,如下所示(每个响应程序具有以下响应程序相关标准)

  • 响应器 1:存在 URL 参数 oid(3 条消息)
  • 响应器 2:存在 URL 参数 ssn 和 state(2 条消息)

请求体

根据请求内容计算的 Xpath 表达式列表拆分生成的响应程序。每个 Xpath 表达式表示一个组和 XML 消息关联标准。

启用此策略时,SOAP 消息(默认情况下)根据主体下的第一个元素名称分组。对于非 SOAP XML 内容,消息根据根元素名称进行分组。

注意,当使用自定义报文格式(或内置的非 XML 格式)时,XPath 表达式基于请求的转换 XML 格式。

自定义数据源关联

响应器关联(如上所述)决定消息响应器工具接受和处理哪些消息。将发送到虚拟资产 URL 的不同消息路由到基于此处设置的特定的消息响应程序工具(每一个都处理不同的操作)。例如,其中一个消息响应程序工具可能响应到客户注册消息,另一个可能响应到支付消息,而还有一个可能作为默认的“catch all”函数,当其他选项都不匹配时使用该函数。 

在自动配置的响应器关联被处理之后,将传入消息中的值(按字面意思匹配或与表达式匹配)与数据源中的值进行比较,响应程序使用匹配的行数据来创建响应消息。如果没有找到匹配指定传入消息值的数据源行,则 Virtualize(使用默认的容错设置)将继续使用匹配的响应程序关联为响应器搜索响应程序套件。

Virtualize 自动填充以下数据源关联(如果适用),并允许自定义初始关联:

  • 请求体关联性
  • 请求 URL 路径关联性
  • 请求 URL 参数关联

例如

以下对介于传入消息中的 loanAmount 值和 ApprovalLists 数据源中的 Amount 列之间进行关联配置:

对于每个传入请求,loanAmount 将匹配到 Amount 列中的一行。然后,将使用来自同一行的其他列的值对响应进行参数化。


如果没有指定模板,页面的初始状态将显示从当前通讯报文文件自动生成的数据源关联。

如果指定了模板,页面的初始状态将显示模板中定义的数据源关联。在这种情况下,数据源关联不会自动从当前通讯报文文件生成。


禁用数据源关联

如果希望处理消息中的所有内容,请选中 Disable data source correlation 选项禁用数据源关联。


若要自定义自动配置的数据源关联:

  1. 清除 Autoconfig 框。
  2. 展开要配置其关联的响应程序的行。


  3. 使用可用控件配置关联。 
    • 可以使用 XPath 构建器配置请求体关联,如 指定 XPath中所述,也可以在表中输入值
    • URL 参数和 URL 路径关联可以通过向适用的表添加行来配置。
    • 在配置相关性时,请注意,您可以输入数据源列的名称,或者从与此工具关联的数据源中可用列的列表中进行选择(在配置区域顶部的数据源列中进行选择)。

请求体关联性

Virtualize 将为每个操作/组生成一个基于“name”的 XPath;这将用于设置该操作的响应程序相关性。例如,如果 SOAP 主体下的元素名是“SubmitOrder”,那么设置到响应器相关部分的 Xpath 表达式将类似于 local-name(/*/*[local-name(.)="Body"]/*)="SubmitOrder”。

注意,当消息不是 XML 时,X©Path 和参数选择应用于请求消息的转换 XML 版本。

对于属于同一操作的每组消息,将相互比较请求,以确定不同请求之间的参数。Virtualize 的通讯报文自动配置将自动分析请求元素中的差异,然后使用该分析的结果为该操作/组中可用的响应生成 Xpath 表达式。目标是为每个不同的请求元素自动生成响应。如果通讯报文是 SOAP Envelope,那么只要消息共享相同的操作元素(这是 SOAP 主体下的第一个元素),就允许存在结构差异。如果通讯报文是通用 XML,那么只要消息具有相同的根节点,就允许存在结构差异。

如果希望覆盖向导页面中显示的初始配置,请使用可用控件指定要使用的 Xpath 和列名。有关使用 XPath 选择器的更多详情,请查阅 指定 XPath 。

请求 URL 参数关联

对于请求 URL 参数,如果属于消息组的调用中的 URL 参数有任何差异(例如不同数量的参数、不同的参数(名称)或不同的参数值),则 Virtualize 的自动配置将根据这些差异自动配置相关关系。

例如,假设特定消息组的调用中有以下参数:

countryCode=US&brandCode=HG
countryCode=Uk&brandCode=HG&channelCode=3
countryCode=US
countryCode=UK
brandCode=HG

根据参数的不同,Virtualize 将自动为这个消息组配置 3 个数据源相关行:countryCode、brandCode 和 channelCode。

如果希望覆盖向导页面中显示的初始配置,请使用可用控件指定要使用的参数和列名。例如,如果希望为 productCode 参数配置数据源相关性,可以使用:

请求 URL 路径关联性

对于 URL 路径,如果属于组的调用中的 URL 路径有任何差异,则 Virtualize 的通讯报文自动配置将根据这些差异自动配置相关关系。

例如,假设特定消息组的调用中有以下路径:

/customer/123/account/1920384
/customer/203/account/4922434
/customer/302/account/7349463

根据段 1 和段 3 中的差异(使用基于 0 的索引),Virtualize 将为这个消息组添加 2 个数据源相关行:一个用于路径索引 1,一个用于路径索引 3。

如果希望覆盖向导页面中显示的初始配置,请使用可用控件指定要用于关联的路径段。路径段可以与一个或多个数据源列名匹配,然后使用各种数据源列参数化。在打开的对话框中,指定要使用的路径段(可以单击相关的路径段或输入所需的路径索引),然后为数据源列指定一个名称。

例如,如果想使用路径索引 2 并将其匹配到账户数据源列,那么将按照以下方式配置相关性:


  • No labels