本主题概述了如何从通讯报文日志中捕获到的通讯报文创建参数化的测试客户端(SOAP 客户端、REST 客户端、EDI 客户端或消息响应程序工具)。本章包含:
前提条件
- 在开始创建参数化的测试客户端或来自通讯报文的消息响应程序之前,您的团队必须要有一个已安装并正在运行的数据资源库服务器。有关更多详情信息,请查阅 安装远程数据库服务器
- 消息内容必须是格式良好的(如,如果为 XML,它必须是格式良好的;如果为 EDI,则必须是有效的 EDI 消息,等等);否则,从通讯报文中自动创建测试可能失败。SOAP 消息和/或消息响应程序必须只有一个顶级 XML 元素。
- 消息分组选项注意,数据资源库不支持混合类型的 JSON 数组的参数化。 如果 JSON 数组存在混合类型,则 SOAtest 或 Virtualize 将假定数组中的所有元素都与第一元素具有的相同类型。
监视控制台视图
从通讯报文中创建测试和/或消息响应程序时,保持控制台视图可见是很有帮助的。该视图将显示处理通讯报文文件时生成的任何警告、错误和信息消息。
使用向导
在可用的创建向导中选择 Traffic> Generate Parameterized Messages 选项。有关更多详情,请查阅以下章节:Adding a New .tst File to an Existing Project 和 Adding a New Test Suite。
- 完成通讯报文向导的第一页:
- 指定通讯报文文件的位置。
- 如果需要,更改字符编码
如果希望使用之前模板中保存的分组设置填充向导,则输入该模板所处的位置。查阅 使用配置模板重用和共享向导设置 以获得关于在 SOAtest 中创建和使用模板的更多详情 使用配置模板重用和共享向导设置 ,和关于在 Virtualize 中创建和使用模板的更多详情。
单击 Next。
在 Parasoft 数据资源库设置页面中,指定要使用哪个数据资源库来存储数据,以参数化测试客户端或消息响应程序,然后单击 Next。
在 Server 字段中,指定您要连接的服务器(可以是嵌套服务器,也可以是远程服务器)。如果选择嵌套服务器,则 Port, User, 和 Password 字段将变灰。如果选择远程服务器,则 Port、User 和 Password 字段将自动填充(如果需要,可以进行调整)。
- 在 Repository name 字段中,选择或输入要使用的资源库的名称。如果输入新资源库的名称,则将创建该资源库。
在定义资源库连接时,可以通过单击 Validate 来检查连接。
完成消息格式和分组策略页面,然后单击 Next。
验证 Request message format 和 Response message format 是否设置为正确的格式。如果没有,则为其选择合适的格式。
SOAtest 和 Virtualize 尝试根据通讯报文文件中的第一条消息来识别请求和响应的消息格式。一个通讯报文文件中的所有请求都应该具有一种格式,同一个文件中的所有响应都应该具有一种格式。请求格式可能与响应格式不同。如果未检测到消息格式,则将选择纯文本。如果希望配置可用于所选格式(如,适用于 EDI 或自定义格式)的任何转换选项,请单击该格式右侧的 Conversion Options 按钮,并进行所需更改。
指定所需的消息分组选项(有关更多详情,请查阅以下框),然后单击 Next。
消息分组选项
可用选项包括:
Based on operation/type:基于操作或消息类型的分组消息。对于包含可以通过操作或格式的消息类型(如,SOAP 主体下的元素名,纯 XML 消息中的根元素名或指定消息格式的消息类型)明确标识的消息的服务通讯报文,这一点很有用。将为通讯报文文件内发现的每个操作/类型生成一个响应程序。如果选择该选项,Virtualize 将推荐应用分组启发式, 它是根据其对通讯报文文件的分析来建议的。可以更改预先选定的启发式。若要了解启发式的更多信息,请查阅 了解按操作类型分组的启发式。Based on similar requests:基于请求消息结构的分组信息。这告诉 Virtualize 去分析请求消息结构和将请求/响应分组到响应程序,以便每个响应程序包含与具有类似结构的请求相关联的响应。当消息具有相同的 DOM 树模型时,它们被认为是“相似的”,即使存在不同的值。该选项用于优化并简化规则,以将请求关联到每个消息响应程序内的响应。
Based on similar responses:基于响应消息结构的分组消息。这告诉 Virtualize 去分析响应消息结构和将请求/响应对分组到响应程序,以便每个响应程序包含与具有类似结构的响应。当消息具有相同的 DOM 树模型时,它们被认为是“相似的”,即使存在不同的值。
None:没有分组。将为通讯报文文件中的每个响应消息生成一个响应程序。如果希望每个消息响应程序中都有一个请求/响应对,请使用该选项。
在消息分组审查页面,检查有关找到的操作和消息的信息。
展示的列类型取决于应用到分组策略。
每个表行表示定义一个组的标准。将为每个表行生成一个组。将会每个组生成一个响应程序。
相关标准将按它们在表中出现的顺序(从上至下)进行处理。 URL 路径和参数将根据记录类型中的字段进行参数化。字段将拥有一个自动生成的名称,并将在数据重用(Data Reuse,在向导后)页面可见。有关如何创建这些分组的更多详情,请查阅 了解按操作类型分组的启发式。
使用可用控件对分组标准进行添加、更改、重新排序和删除操作。 查阅 自定义分组标准 以获得关于在 SOAtest 中配置分组标准的更多详情。查阅 自定义分组标准 以获得关于在 Virtualize 中配置分组标准的更多详情。如果更改该标准,请确保执行单击 Regroup 。
如果选择了所有 Autoconfig 框,并且您希望 Virtualzie 自动为指定的分组配置消息响应程序, 则可以跳过以下步骤。
如果希望指定任何以下任务,则禁用要自定义的每个消息组的 Autoconfig ,单击 Next,然后配置请求映射,如 定制请求匹配和关联中所述:
自定义应使用哪些参数值来确定虚拟资产的响应消息。
更改自动请求/响应对匹配
指定 WSDL 或 Schema
当消息组中存在多个请求(它们的路径、参数,或者主题是不同的)时,通常可使用自动配置。如果 Autoconfig 框是灰色的,意味着自动配置不适用于该分组;关于为什么无法自动配置特定组的更多详情,请查阅该项的工具提示。
关于面板顶部列出的任何项(处理对、未处理对、不匹配组的消息,等等)的更多详情,请单击其相关链接。
若要审查与特定响应程序相关联的消息,和/或若要更改响应程序和数据集名称,请单击 Count 列的相关行。如果要指定 WSDL/schema,则启用 Configure WSDL/Schema,然后在下一页面中指定合适的值。
是否应该指定 WSDL 或 Schema?
指定 WSDL 或 schema 的优点包括:
生成的表单输入模型将基于该 WSDL/Schema,在您编辑和维护结果表单输入时,该模式提供了丰富的类型。
变更指导助手(如 变更管理中所述)帮助让您的资产与不断发展的服务和不断变化的环境条件保持同步。
如果注意到生成的表单输入和其数据参数化与原始信息不匹配,则这表示,该消息并不完全匹配 WSDL/Schema 或者映射到原始消息失败。如果遇到这样的问题,应该省略 WSDL/Schema 以确保生成的表格输入模式完全匹配通讯报文消息。
- 在数据重用页面中,配置希望导入的通讯报文如何重用或影响现有数据。
- 定义的记录识别用来确定哪个数据是原生的,以及哪些新纪录匹配现有记录。如果尚未为该数据集指定标识,则可以从此页中的数据树中添加/更改标识。
- 树用绿色箭头图标指示标识字段。现有的数据集用注释标注。
可以控制来自通讯报文文件的新数据将如何扩展和/或更新现有资源库数据集。
Replace;删除现有数据,然后添加新数据
Append;添加新纪录,而无需首先删除现有数据。
也可以控制匹配的数据(匹配现有记录类型的数据,由标识定义)是否重新使用现有的记录类型或更新现有的记录。 Reuse 选项允许重复使用和共享其匹配的现有记录。 Update 选项允许使用来自通讯报文的数据更新现有记录相对应的字段,并为新的记录类型添加新纪录。
只适用于 Virtualize 选项Replace;删除现有数据,然后添加新数据。
Merge:在无需修改现有数据的情况下,导入新数据:
Update;使用新数据更新匹配的记录,并根据需求创建新纪录。
Overwrite;使用功能新数据更新匹配的记录(和匹配键),不创建任何额外的记录。
关于指定标识和在 SOAtest 中选择可用数据重用/更新选项的其他详情,请查阅 配置数据重用和更新。 关于 Virtualize,请查阅 配置数据重用和更新。
- 在导出模板页面,指定模板导出设置(如果需要),然后单击 Next。
入股偶希望保存该向导中使用的设置,则可以将它们导出到模板中。只需选择 Export configuration data into a reusable template ,并指明所需的文件名和位置即可。
查阅 使用配置模板重用和共享向导设置 并 使用配置模板以在 SOAtest 中重用和共享向导设置 以获得关于创建和使用模板的更多详情。如果要在 Virtual Assets 文件夹中创建 .pva 文件,从而实现自动化部署,请为要创建的虚拟资产指定所需名称和部署路径,然后单击 Next,完成部署虚拟资产向导页面。虚拟资产将部署在列出的端点上。有关更多详情,请查阅 Configuring Individual Virtual Asset Deployment Settings。
(仅限 MQ 和 JMS)在下一个 SOAtest 向导页中指定连接设置。这些设置将应用到创建此通讯报文的工具。有关更多详情,请查阅 Configuring MQ Options 和 Configuring JMS Options。
- 单击 完成。
将创建和配置以下项:
一个或多个具有参数化值的测试客户端。根据消息格式的不同,创建的工具将是 SOAP 客户端/REST 客户端、EDI 客户端或消息传递客户端。除非消息是 XML 或 JSON,并且消息大到预期会对性能产生影响,否则这些工具将默认为表单输入/表单 JSON 视图。
将添加具有参数化元素的消息响应程序,预配置的响应程序关联和数据源关联。除非消息是 XML 或 JSON,并且消息大到预期会对性能产生影响,否则这些工具将默认为表单输入/表单 JSON 视图。
- (对于新的数据资源库)将添加一个新的数据资源库,其中包含适用的数据集和记录类型。每个通过分析通讯报文确定的消息组将添加一个数据集。
- (对于现有的数据资源库)将向现有资源库添加新的数据集和记录类型。
- 为每个添加的数据集添加一个资源库数据源,并且每个测试客户端或消息响应程序将配置为使用相关数据源。
例如,下面是一个使用数据资源库参数化的 REST 客户机示例:
下面是相应资源库的一部分:
现在可以使用广泛而多样的测试值范围运行这个参数化的、数据驱动的 REST 客户端,无需要求对工具本身进行任何的更改。相比编辑工具,您可以更改或扩展相关联的数据资源库值。
如果在 Virtual Asset 文件夹中创建了 .pva,则该虚拟资产在向导完成时将自动部署到本地 Virtualize 服务器。否则,它可以手动部署到本地或远程服务器。
有关如何编辑和扩展数据资源库中存储的数据的更多详情,请查阅 查看和修改资源库结构和内容。
注意,通讯报文文件中出现的自定义传输数据头和任何 SOAP Headers(例如,WS-Security Headers)都不会自动配置到生成的资产或数据资源库数据集中。可以在生成的消息响应程序中指定它们。
(有关更多详情,请查阅 消息响应程序概要 )
。部署虚拟资产
如果在 Virtual Asset 文件夹中创建了 .pva,则虚拟资产在向导完成时将自动部署到本地 Virtualize 服务器中。否则,可以随时将其部署到本地或远程服务器。
有关部署过程和选项的更多详细讨论,请查阅 部署虚拟资产 - 概要。
自定义虚拟资产
有关如何自定义消息响应程序行为的更多详情,请查阅 消息响应程序概要。
了解 Chioce/Extension 类型支持
如果在向导最后都没有输入一个 WSDL 或 schema 文件,则 Virtualize 将使用记录通讯报文的数据结构来创建数据资源库。当一个元素的数据结构在记录的通讯报文中发生了改变时,则该元素的类型很可能是底层模式中的一个选择。然而,向导不会明确支持 chioce 类型;它将元素的数据结构解释为所有可能的子元素的序列。
例如,假定一个元素的实际模式是这样的:
<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 向导:高级主题
以下主题提供了额外的细节,它将帮助您完成向导:
视频教程:从消息代理记录的通讯报文中创建虚拟资产
在该视频中,您将了解如何从消息代理记录的通讯报文中创建虚拟资产。