前提条件

  • 在开始通过通讯报文创建参数化的测试客户端或消息响应程序之前,您的团队必须已安装并正在运行数据资源库服务器。有关详细信息,请查阅 安装远程数据库服务器
  • 消息内容必须是格式良好的(例如,如果是 XML,它必须是格式良好的;如是 EDI,它必须是有效的 EDI,等);否则,可能无法从通讯报文中自动创建测试。SOAP 消息和/消息响应程序必须只有一个顶级 XML 元素。
  • 消息分组选项,注意数据存储库不支持具有混合类型的 JSON 数组的参数化。  如果 JSON 数组不是混合类型,那么 SOAtest 或 Virtualize 将假设数组中的所有元素都与第一个元素的类型相同。

监视控制台视图

当从通讯报文中创建测试和/或消息响应器时,保持控制台视图可见是很有帮助的。此视图将显示在处理通讯报文文件时生成的任何警告、错误和信息消息。

使用向导

  1. 在可用的创建向导中选择 Traffic> Generate Parameterized Messages 选项。有关更多细节,请参阅文以下章节: 添加新的 .tst 文件到现有项目添加新的测试套件 。

    添加项目、虚拟资产和响应程序套件

  2. 在通讯报文向导中指定以下信息等),然后单击 Next
    1. 指定通讯报文文件的位置。
    2. 如果需要,请更改字符编码。
    3. 如果要用保存在模板中的前一组设置填充向导,请输入该模板的位置。请参阅 使用配置模板重用和共享向导设置 有关在 SOAtest 中创建和使用模板的详细信息, 使用配置模板重用和共享向导设置 以及有关在 Virtualize 中创建和使用模板的详细信息。

  3. 在 Parasoft 数据存储库设置页面中,指定哪个数据存储库应该存储用于参数化测试客户端或消息响应程序,然后单击 Next 



    • 在 Server 字段中,指定要连接的服务器(嵌入式服务器或远程服务器)。如果选择嵌入式服务器, PortUserPassword 字段将变灰。如果选择远程服务器, Port、 User 和 Password 字段将自动被填充,并且可根据需要进行调整。

    • Repository name 字段中,选择或输入要使用的资源库的名称。如果输入新存储库的名称,将创建该存储库。
    • 定义存储库连接时,可以通过单击 Validate 检查连接。 

  4. 在消息格式和分组策略 屏幕中配置设置:


    1. 验证 Request message format 和 Response message format 是否设置为正确的格式。如果没有,请选择适当的格式。SOAtest Virtualize、 将尝试根据通讯报文文件中的第一条消息来标识请求和响应的消息格式。单个通讯报文文件中的所有请求都应具有一种格式,而同一文件中的所有响应都应具有一种格式。请求格式可能不同于请求格式。如果未检测到消息格式,则将选择纯文本。

    2. 转换选项可用于某些格式,如 EDI 或自定义格式。单击 Conversion Options 按钮并进行所需的更改。 



    3. 选择其中一项消息分组选项:

      • Based on operation/type: 根据操作或消息类型对消息进行分组。这对于包含可以通过操作或格式的消息类型(即,SOAP 主体下元素的名称、纯 XML 消息中根元素的名称或指定消息格式的消息类型)。为在通讯报文文件中发现的每个操作/类型生成一个响应器。如果选择此选项,Virtualize 将根据其对通讯报文文件的分析, 建议应用分组探索式。您可以更改预先选择的探索式。有关探索的更多信息,请参见 了解按操作类型分组的启发式

      • Based on similar requests: 根据请求消息结构对消息进行分组。这告诉 Virtualize 分析请求消息结构并将请求/响应分组到响应程序中,以便每个响应程序将包含与具有类似结构的请求相关的响应。当消息具有相同的 DOM 树模型时,即使它们具有不同的值,也会被认为是“相似的”。此选项用于优化和简化将请求与每个消息响应器中的响应关联的规则。
      • Based on similar responses: 根据响应消息结构对消息进行分组。这告诉 Virtualize 分析响应消息结构并将请求/响应对分组到响应程序中,以便每个响应程序将包含具有类似结构的响应。当消息具有相同的 DOM 树模型时,即使它们具有不同的值,也会被认为是“相似的”。

      • None:没有分组。为通讯报文文件中的每个响应消息生成一个响应器。如果希望每个请求/响应对位于单独的消息响应器中,请使用此选项。


  5. 单击 Next 并在消息分组审阅屏幕中审阅有关操作和邮件的信息。 
    1. 包括的列基于所应用的分组策略。 
    2. 每个表行表示定义组的标准。将为每个表行生成一个组。将为每个组生成一个响应程序。 
    3. 相关条件将按它们在表中的显示顺序(从上到下)进行处理。 

      URL 路径和参数将根据录制类型中的字段进行参数化。这些字段将具有一个自动生成的名称,并且将在“数据重用”页面(向导中稍后)中可见。

      有关如何创建这些分组的详细信息,请查阅 了解按操作类型分组的启发式

    1. 使用可用的控件添加、修改、重新排序和删除分组条件。 有关在 SOAtest 中配置分组条件的详细信息,请参见 自定义分组标准

      有关在 Virtualize 中配置分组条件的详细信息,请参见 自定义分组标准

      如果更改条件,请确保在继续之前单击 Regroup 。

    2. 如果选中了所有 Autoconfig 框,并且希望 Virtualize 自动为指定组配置邮件响应程序,则可以跳过此步骤

      如果要执行以下任何任务,请为要自定义的每个消息组禁用 Autoconfig ,单击 Next,然后按照中所述配置请求映射 定制请求匹配和关联

      • 自定义应该使用哪些参数值确定虚拟资产的响应消息。 
      • 修改自动的请求/响应对匹配 
      • 指定 WSDL 或模式

      当消息组中有多个请求且路径、参数或正文存在差异时,自动配置通常可用。如果 Autoconfig 框显示为灰色,则表示该组无法使用自动配置;有关为何无法自动配置特定组的更多详细信息,请参阅该项目的工具提示。



      有关面板顶部列出的任何项目(处理对、未处理对、与组不匹配的消息等),请单击关联的超链接。



      要查看与特定响应者相关的消息和/或更改响应者和数据集名称,请单击 Count 列中的相关行。



      如果想指定 WSDL/schema,请启用 Configure WSDL/Schema,然后在下一页中制定合适的值。



      您应该指定 WSDL 还是 Schema?

      指定 WSDL 或模式的优点包括:

      生成的表单输入模型将根据 WSDL/Schema,当您编辑和维护结果表单输入时,该模式提供了丰富的类型。

      变更指导助手(如 Change Management 中描述)可以帮助您保持资产与不断发展的服务和不断变化的环境条件保持同步。

      如果您注意到生成的表单输入及其数据参数化与原始消息不匹配,则说明消息没有完全匹配 WSDL/Schema,或者映射原始消息失败。如果遇到这样的问题,应该忽略 WSDL/Schema,以确保生成的表单输入模型完全匹配通讯报文消息。

  6. 单击 Next ,然后在请求匹配屏幕中配置设置。

    1. 单击 Request/Response 对,并验证是否已建立正确的相关性。您可以单击并拖动连接请求和响应的点以更改匹配。
    2.  单击 Request Correlation 选项,然后在下拉菜单中选择一种响应程序模式。 
  7. 以及在数据重用屏幕中配置导入的通信量应如何重用或它应如何影响现有数据。
    1. 定义的录制标识用于确定哪些数据是新的,哪些新录制与现有录制匹配。如果尚未为此数据集指定标识,则可以在此页面的数据树中添加/修改标识此页。 
    2. 树用绿色箭头图标指示标识字段。现有的数据集用注释标注。
    3. 您可以控制通讯报文文件的数据将如何扩展和/或更新现有资源库数据集。 

      Replace: 删除现有数据,然后添加新数据

      Append: 添加新纪录,而无需首先删除现有数据。

    4. 还可以控制匹配的数据(匹配现有的录制类型,由标识定义)是否重新使用现有的录制类型或更新现有的录制。这个 Reuse 选项允许您重用/共享匹配的现有录制。这个 Update 选项允许您使用来自通讯报文的数据更新现有录制相对应的字段,并为新的录制类型添加新纪录。
       

      Virtualize Only 选项

      Replace: 删除现有数据,然后添加新数据。

      合并:在无需修改现有数据的情况下,导入新数据:

      Update: 使用新数据更新匹配的记录,并根据需求创建新纪录。

      Overwrite: 使用功能新数据更新匹配的记录(和匹配键),不创建任何额外的记录。


      有关指定身份并在 SOAtest 中的可用数据重用/更新选项中进行选择的其他详细信息,请参见 配置数据重用和更新。 有关 Virtualize,请参阅 配置数据重用和更新

    5. Infer constraints from 选项允许 Virtualize 确定存储库中存储的数据的特征。可以根据数据或服务定义推断约束。
  8. 单击 Next 并在最终选项屏幕中指定任何其他配置:
    1. 您可以将向导配置为以表单或文字模式创建消息。这些模式显示一个表单输入视图(请参阅 表单输入)或文字视图(请参阅 文字)。   
    2. 可启用 Export configuration data into a reusable template 选项,并指定文件名和位置以将在此向导中使用的设置保存为模板。 

      (仅限 MQ 和 JMS)在下一个 SOAtest 向导页中指定连接设置。这些设置将应用到创建此通讯报文的工具。有关更多详情,请查阅 配置 MQ 选项  配置 JMS 选项

      有关创建和使用模板的详情,请查阅 使用配置模板重用和共享向导设置在 SOatest 中和使用配置模板重用和共享向导设置

      如果要在 Virtual Assets 文件夹中创建 .pva,以实现自动部署,请通过为要创建的虚拟资产指定所需的名称和部署路径来完成 Deploy Virtual Asset 向导页面,然后单击 Next。虚拟资产将部署在列出的端点。有关更多详情,请查阅 Configuring Individual Virtual Asset Deployment Settings

    3. 单击 Finish

将创建和配置以下项目:

    • 一个或多个具有参数化值的测试客户端。创建的工具将是 SOAP 客户端、REST 客户端、EDI 客户端或消息客户端,具体取决于消息格式。除非消息是 XML 或 JSON 并且消息太大以至于会对性能产生影响,否则这些工具将默认为“表单输入/表单JSON”视图。在这种情况下,将使用文字视图。

      将添加带有参数化元素以及预先配置的响应器关联和数据源关联的消息响应器。除非消息是 XML 或 JSON 并且消息太大以至于会对性能产生影响,否则这些工具将默认为“表单输入/表单JSON”视图。在这种情况下,将使用文字视图。


      • (对于新数据存储库)将添加具有适用数据集和录制类型的新数据存储库。每个通过分析通讯报文确定的消息组将添加一个数据集。
      • (对于现有数据存储库)将向现有存储库添加新的数据集和记录类型。
      • 将为每个添加的数据集添加存储库数据源,并将每个测试客户端和消息响应程序配置为使用相关的数据源。

例如,以下是使用数据存储库值参数化的示例 REST 客户端:



这是响应存储库的一部分:

现在,此参数化的、数据驱动的 REST 客户端可以在广泛的测试值范围内运行,而无需对工具本身进行任何修改。您可以修改或扩展关联的数据存储库值,而不是编辑工具。

如果在虚拟资产文件夹中创建 .pva,则在向导完成时,虚拟资产将自动部署到本地 Virtualize 服务器。否则,可以手动将其部署到本地或远程服务器。

有关如何编辑和扩展存储在数据存储库中的数据的详细信息,请参阅 查看和修改资源库结构和内容

请注意,通讯报文文件中存在的自定义传输头和任何 SOAP 头(例如,WS-Security 头)不会自动配置到生成的资产或数据存储库数据集中。您可以在生成的消息响应程序中指定它们

 (查阅 消息响应程序概要 以获得详细信息)。

部署虚拟资产

如果在虚拟资产文件夹中创建 .pva,则在向导完成时,虚拟资产将自动部署到本地虚拟化服务器。否则,您可以随时将其部署到本地或远程服务器。

有关部署过程和选项的更多详情说明,请查阅 部署虚拟资产 - 概要

自定义虚拟资产

关于如何自定义消息响应程序行为的更多详情,请查阅 消息响应程序概要

 了解选择/扩展类型支持

如果在向导的末尾没有输入 WSDL 或模式文件,Virtualize 将使用录制的通讯报文的数据结构来创建数据存储库。当一个元素的数据结构在录制的通讯报文中发生变化时,该元素的类型很可能是基础架构中的一个选项。但是,向导不显式地支持选择类型;它将元素的数据结构解释为所有可能的子元素的序列。

例如,假设一个元素的实际架构如下:


<element name="parent">
    <complexType>
        <choice minOccurs="0" maxOccurs="unbounded">
            <element name="child1"/> 
            <element name="child2"/> 
            <element name="child3"/>
        </choice>
    </complexType> 
</element>


Virtualize 将使用以下数据结构表示元素:


<element name="parent">
    <complexType>
        <sequence>
            <element name="child1" minOccurs="0" maxOccurs="unbounded"/> 
            <element name="child2" minOccurs="0" maxOccurs="unbounded"/> 
            <element name="child3" minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
    </complexType> 
</element>


尽管所录制的通讯报文可能具有以不同顺序出现的子元素(例如,响应消息中的一个“parent”有一个“child1”,然后再是“child2”,而另一个响应消息中的“parent”有一个“child2”,然后才是“child1”),Virtualize 将以固定顺序参数化消息数据。因此,在本例中,元素“child1”和“child2”在响应消息中的顺序始终相同。

完成 Virtualize 向导:高级话题

以下主题提供了帮助您完成向导的其他详细信息:

完成 SOAtest 向导:高级话题

以下主题提供了帮助您完成向导的其他详细信息:

视频教程:从使用消息代理录制的通讯报文中创建虚拟资产

在本视频中,您将学习如何从一个使用消息代理录制的通讯报文创建一个虚拟资产。

  • No labels