本主题解释了在 SOAtest 和 Virtualize 中如何使用功能 Parasoft 变更指导助手。它描述了如何更新测试或服务虚拟化资产发送的请求或响应消息。
本章包含:
关于变更指导助手
变更指导助手自动识别现有资产和/或服务虚拟化资产发送的消息是如何受到服务变更影响的(如,重命名操作、添加元素或类型、修改命名空间等等)。它还基于一个更新现有测试或响应程序套件或新建的变更模板自动重构受影响的工具(单独地或者是批量)。通过检查和精炼自动定义的映射创建变更模板,该映射阐述了原始定义中的元素、操作、资源和模式是如何与当前定义中的元素、操作、资源和模式关联的。这确保您的资产得到尽可能快速、准确和智能的更新。
工作流
如果您怀疑某个服务已经更改,典型的工作流是:
- 从 Parasoft 变更指导助手透视图中运行变更影响分析。
- 创建变更模板。
根据具体情况(解决变更影响分析报告的特定变更影响)或批量重构(快速跨项目、套件等更新所有受影响的工具)应用该变更模板,以更新现有套件或创建新的套件。
变更影响分析
运行变更影响分析时,变更指导助手报告资产的消息是如何受到相关定义文件中(比如,WSDL, schema, WADL, OpenAPI/Swagger, RAML)变更的影响的。该分析可以:
将资产消息与当前配置它们的服务定义进行比较。
将资产的消息与不同的服务定义进行比较。
此分析结果有助于评估更新资产消息所需更改的范围和性质。
重构
确定应该更新什么之后,可以应用变更模板自动重构消息,以适应修改的服务定义。该模板可以通过以下几种方式应用:
- 在 test-by-test 或 responder-by-responder 基础上
- 在选定的一组测试或响应程序上
- 在所有可用测试或套件中的响应程序上
- 在所有测试或套件中的响应程序上
变更模板定义
变更模板可以从服务目录中自动生成,该服务目录在变更影响分析过程中填充。
一旦创建了变更模板,我们建议查看并微调自动定义的映射,该映射阐述了原始定义中的元素、操作、资源和模式是如何与当前定义中的元素、操作、资源和模式关联的。
- 当自动分析确定来自一个定义的项与另一个定义中的项关联的可能性很高时,我们将指出这一点,并自动设置将在您准备好时应用的更改。这样的映射被视为“高度匹配”。
- 如果分析确定了原始服务与当前服务可能匹配时,我们将预设置该映射,但与此同时,我们也会强调这是一个需要检查的匹配。
在图表变更模板编辑器中审查和更新自动定义的映射:
一旦生成了变更模板,则可以应用于一个案例一个案例的基础上(解决变更影响分析报告的特定变更影响),以及批量重构(以快速更新跨项目、跨套件等的所有受影响的工具)。
它包括哪些变化?
可以将变更指导助手应用于消息响应程序。如果设置工具让其受 WSDL 或 Schema 约束,或如果服务定义指定了 RAML, WADL (SOAtest), 或 OpenAPI/Swagger,则变更指导助手对通过表单输入指定的消息进行操作。如果服务定义指定了 RAML, WADL (SOAtest), 或 OpenAPI/Swagger,则它会对通过表单 JSON 指定的消息进行操作。 如果工具消息是使用不支持的格式指定的,则分析和重构期间将跳过它。若要使用这些格式对这些工具中其他非消息字段的值或 Change Advisor 不支持的工具中的值,请使用 Parasoft 搜索替换工具。请查阅使用搜索替换工具更新工具值。对定义文件(元素被重新排序,类型被更改,等等)的简单更改将自动更新。
变更指导助手 UI
变更指导助手透视图专门设计来识别和处理变更影响。
若要打开 Change Advisor 透视图:
- 请选择 Window> Perspective> Open Perspective> Parasoft Change Advisor。
该透视图提供了:
- 标准的资产资源管理器:它允许您选择要分析或重构的资产(通过应用如下描述的工具栏按钮)。
工具栏按钮:添加了三个按钮:Run (用来重新运行变更影响分析以检查资产是否被正确重构) Perform Change Impact Analysis (如下所述),以及 Refactor Using a Change Template (如下所述)。
- 服务目录视图:存储每个服务的不同版本信息,以及定义一个服务版本如何与另一个服务版本进行比较的变更模板。
- 属性视图: 提供变更模板编辑器中所选定项的详细信息。
- 变更影响进展视图:报告变更影响分析的进展和结果。
- 质量任务视图:在这里,可以查看变更影响,并使用任何可用变更模板重构相关工具。
使用变更影响分析识别变更
关于变更影响分析
变更影响分析比较了最初用于构造工具消息的服务定义和这两种定义。
- 相同服务定义(与原始定义文件的 URL 相同)的活动版本。
- 不同的服务定义(与原始定义文件的 URL 不同)。
变更影响分析将只报告与正在分析的工具相关联的变更。例如,如果服务不再包含工具从未使用的可选元素,则将不会报告变更影响。
运行变更影响分析
若要从变更指导助手中运行变更影响分析:
- 在资源管理器中,指明要分析什么资产:可以选择单个工具、套件、项目等等。如果同时安装了 SOAtest 和 Virtualize,则 可以选择 .tst 文件,也可以选择 .pva 文件。
- 在变更指导助手工具栏中,单击 Perform Change Impact Analysis 按钮。
- 完成打开的对话框:
- 若要分析与现有定义的比较:如果希望对所选定资产与其相关服务定义的活动版本的比较进行分析,则选择第一个按钮,然后单击 Finish。
- 若要分析与不同定义的比较:如果希望对所选定资产与其相关服务定义的不同版本的比较进行分析,则选择第二个按钮,然后单击 Finish。
例如,假定您选择了一个套件,其中包含基于 3 个不同服务定义的资产。分析的 Scan the selected assets against their current service description 选项将对所有这些资产与及其相关服务定义进行比较。如果选择 Scan the selected assets against a specified service description,并且指定了这些资产其中 1 个使用的 3 个服务定义的现有版本和更新版本,则分析将只被应用于使用该特定服务说明的资产。基于另外 2 个定义的资产将不会被分析。
审查分析结果
分析运行时,分析进展将报告在进展视图和控制台视图中。注意,如果资产报告为“跳过”,说明它没有以受支持的格式(比如,表单输入)指定消息。
分析的结果将报告在质量任务视图中。提供了一个变更影响布局,以帮助您审查变更影响。如果质量视图早就没有使用这个布局了,则可以在结果视图中单击 Change Impact Layout 工具栏按钮。
也可以从视图的下拉菜单中打开该布局。
结果根据服务、套件/位置和更改类型进行组织:
探索变更影响
若要打开需要更新消息的工具:
- 右键单击变更影响消息,然后选择 View Associated Editor。
若要查看工具在项目中的位置:
- 右键单击变更影响消息,然后选择 Show Source in Explorer。
使用变更模板进行重构
变更模板是根据 Defining a Change Template所描述创建的。应用变更模板有两种方法:
- At the change-impact level:将其应用于变更影响分析中报告的特定变更影响。如果只运行变更影响分析并希望逐个查看和处理所报告的影响,那么通常会使用这种方法。
- At the project or suite level:跨资源管理器中所选定的套件、工具或项目执行批量处理。如果希望快速将变更模板应用到资产组,那么通常会使用这种方法。
若要应用变更模板:
- 使用其中一项以下方法打开重构向导:
- 在结果视图中右键单击一个影响,然后选择 Refactor Using Change Template。
- 在资源管理器中,选择要更新的资产的节点,然后选择 Refactor Using Change Template。如果同时安装了 SOAtest 和 Virtualize,则 可以选择 .tst 文件,也可以选择 .pva 文件。
- 按照以下内容完成通讯报文向导的第一页,然后单击 Next
- Service name:指定要重构其消息的服务名称。
- Version:指定要重构其消息的服务的版本。在这里出现的版本名称也将在服务目录中出现。
- Update Parasoft assets to use service version:指定更新消息将对应的服务版本。在这里出现的版本名称也将在服务目录中出现。
- By applying the change template::指定要应用的变更模板名称,以便更新上面指定的服务版本的信息。
- Service name:指定要重构其消息的服务名称。
在向导的第二页,指明要将更新的资产保存在何处。默认将其保存在新位置,以便创建一组新的测试或响应程序,而不是重写原始测试。
重构将更新更改模板中定义的消息。用于删除操作的工具将被禁用,但不会被删除。
定义变更模板
创建变更模板
变更模板指定如何将元素、操作、资源和模式(XML 或 JSON)从一个服务版本映射到另一个服务版本中。一旦定义了变更模板,便可将其用于更新受服务变更影响的资产:可以纠正变更影响分析后报告的特定变更影响,也可以对选定的工具、套件或项目执行批量更新。例如,如果将 FundPrepaid 在变更模板中映射到 FundPrepaidRequest ,那么应用该模板将在所选定工具的消息中将 FundPrepaid 更新到 FundPrepaidRequest 中。
变更模板在 Parasoft Change Advisor 透析图中创建、审查和修改。
若要创建变更模板:
- 如果还是没有这样做,则运行变更影响分析,如 Identifying Changes with Change Impact Analysis中所述。
- 确保服务目录显示发生了变化的服务,并包含原始服务定义和当前服务定义的“版本”信息。
- 若要向目录中添加一个服务,请右键单击服务目录视图中的任何地方,然后选择 Add Service to Catalog ,完成可用字段(这些根据所选择的构件类型而变化),然后单击 Finish。
- 若要将版本添加到目录,右键单击相关服务,选择 Add Version to Catalog ,然后指定必要的版本详情。
若要重命名服务或版本,右键单击其 Service Catalog 节点,然后选择合适的 Rename 命令。将在使用变更模板进行重构(Refactor Using a Change Template)向导中使用此处指定的名称。
- 进行下列其中一项操作:
- 选择 File> New > Change Template。
- 在服务目录中,选择原始版本的节点和新版本的节点,右键单击该选择项,然后选择合适的 Add Change Template 命令。
- 在服务目录中,右键单击原始版本的 Change Templates ,然后选择 Add ChangeTemplate。
- 在打开的向导中:
- 指定有关更改变更模板的基本信息。
- 注意,如果同时安装了 SOAtest 和 Virtualize,将会看到一个创建客户端或响应程序变更模板的选项。如果希望该变更模板定义如何在 SOAtest 消息传递工具中更新请求,请选择 Client 。如果希望该变更模板定义如何在 Virtualize 消息响应程序工具中更新响应,请选择 Responder 。
- 单击 Next。
- 指定将创建的变更模板文件的名称和位置。
- 单击 Finish。
- 指定有关更改变更模板的基本信息。
然后将创建一个更改模板并在变更模板编辑器中打开。
审查和修改变更模板
根据 Parasoft 的试探法,变更模板自动将元素、操作、资源和其模式从原始服务定义中映射到新的服务定义中。
- 如果原始版本和现版本的项目之间存在完美或高度匹配,则相关项目将被映射并标记为绿色。
- 如果原始版本和现版本的项目之间存在接近(但不确定)匹配,则相关项目将被映射并标记为黄色。在最后确定并应用更改模板之前,应该检查这些项。
- 如果在原始版本中没有检测到接近的匹配,那么将不会被映射。
元素、操作、资源映射在 Map Elements/Operations/Resources 选项卡中。
每个元素的模式被映射在 Map Schemas 选项卡中。
审查映射时,可以使用编辑器顶部的可用筛选器以专注于高度匹配,需要审查的匹配或不匹配的项目。
审查和修改变更模板时,可以执行以下操作:
为实现这一目标... | 这样做... |
---|---|
指定两个未映射项相互关联。 | 选中这两个项,然后点击 Connect。 |
指定两个映射项不相互关联。 | 选中这两个项,然后点击 Disconnect。 |
指定不匹配项的默认值。 | 右键单击该项,选择 Configure Default Value for Added [item_name],然后在打开的对话框汇总指定合适的值。 |
指明已经检查了“需要审查的匹配”(将黄色映射转换为绿色映射)。 | 右键单击映射的任何区域,然后选择 Mark Match [mapping] as Reviewed ,或者选择 Mark Match [mapping] and Child Matches as Reviewed。 |
指明已经检查了不匹配的项。 | 右键单击该元素,然后选择 Mark [item_name] as Reviewed ,或者选择 Mark [item_name] and Children as Reviewed。 |
在映射时检查属性
映射元素、操作、资源和模式时,可以参考属性视图了解要映射的项的更多详细信息。例如:
XML 的变更模板图标说明
以下图标用于标记变更模板编辑器中的 XML 项目。
图标 | 说明 |
---|---|
所有 | |
任何类型 | |
属性 | |
选择 | |
复杂类型 | |
元素 | |
枚举 | |
操作 | |
顺序 | |
简单类型 |
JSON 的变更模板图标说明
以下图标用于标记变更模板编辑器中的 JSON 项目。
图标 | 说明 |
---|---|
任何类型 | |
数组 | |
数组项目 | |
布尔类型 | |
枚举类型 | |
枚举值 | |
整数/数字类型 | |
项目容器 | |
Null | |
对象 | |
对象属性 | |
OneOf | |
属性容器 | |
字符串类型 |
共享变更模板
如果团队希望共享变更模板,可以共享包含该模板的项目,也可以将模板从一个工作空间复制到另一个工作空间。