许多 SOAtest 用户在使用 Parasoft SOAtest 开发他们的测试套件时创建了数千个测试用例。当被测试的底层系统发生变化时,能够有效地维护这些测试是非常重要的。
本章节描述一些功能和建议,它们帮助在维护和更新大量测试时节省时间。
管理服务定义和模式变更
如果您正在使用服务定义或模式测试 web 服务,我们建议以下最佳实践:
- 使用表单输入并将测试约束为 WSDL/WADL/Schema/OpenAPI/Swagger/RAML 定义.。SOAP 客户端和消息传送客户端工具在 WSDL 选项卡(SOAP 客户端)中和 Schema 选项卡(消息传送客户端)中包括“约束”选项。REST 客户端还包括类似用于 WADL 和 RAML/OpenAPI/Swagger 定义的选项。当选中该选项时,在会话(例如,在夜间测试期间从命令行执行测试时)中执行测试时将发生以下情况。第一,将从给定位置解析定义文件。第二,从表单输入和表单 JSON 视图生成的请求将自动符合最近解析的定义文件。 下面将提供关于此特性的更多细节。
- 针对端点 URL,使用功能环境变量来管理全局变更,或在 SOAP 客户端中选择“WSDL”选项,以便根据 WSDL 自动更新 URL。
- 使用变更指导助手来识别请求更新的测试,然后通过应用变更模板更新可应用的测试。
- 使用 Parasoft 搜索替换功能来更新工具值,如断言工具、比较工具、数据库工具中的 Xpath 值。
- 为 WSDL、WADL 和/或与您的测试相关的模式创建回归测试。SOAtest 测试套件向导包括创建除了功能测试外 WSDL/WADL 测试的选项。其中一个 WSDL/WADL 测试是回归测试,它捕获当前版本的 WSDL/WADL 并作为一个变更指示器;无论何时在服务器上修改定义文件,测试都将失败,并因此向您发出更改警告。
- 使用回归控制测试套件级别的更新功能。
自动化表单输入更新
当选中“约束”选项时,将会自动更新 SOAP 客户端、消息桩、消息传送客户端中的表单输入视图。同样,也会应用到约束为 WADL、RAML 或 OpenAPI/Swagger 定义的 REST 客户端。此操作通过“刷新”定义文件(通过点击其中一个工具上的刷新按钮)来执行。Parasoft SOAtest 试图保留现有的表单输入设置,以便只需要进行极少的手动更改。Parasoft SOAtest 使用复杂的启发式来映射现有的测试数据。
例如,在不影响现有元素的情况下,出现新元素并删除已删除的元素。同时,在任何可能的情况下,元素类型的更改都将尝试携带当前值。根据新的定义文件重新映射测试数据不会总是成功的。通常,对于模式文件定义的数据类型的更改,此过程更有可能成功,因为这些更改相对较小。然而,对于文件类型文档定义的操作更改,此过程极少可能成功,因为这些更改相对较大。
使用变更指导助手、变更影响分析更新表单输入中指定的消息
有了变更指导助手,您可以执行变更影响分析来验证服务定义(如,重命名操作、添加的元素或类型、修改的命名空间等)的变更是如何影响消息传送工具传递的消息的。
该分析可以进行:
将创建 test 时访问的原始服务定义与相同服务定义的当前状态进行比较。
将原始服务定义与不同服务定义文件进行比较。
此分析结果有助于评估更新测试所需的变更的范围和性质。一旦定义了新服务如何映射到旧服务的变更模板(由您或其他团队成员,如架构师),您就可以应用该变更模板来单个或批量自动更新测试。
详情请参阅使用变更指导助手更新消息。
自动更新比较工具回归控制
使用 XML 比较工具是对服务响应应用验证流行且有效的一种流行且有效的方式。它提供了捕获整个响应消息以对其进行完整性验证的便利,允许通过右键点击并选择创建/更新回归控制,然后跟随向导在测试或测试套件级别上执行各种批量的更新机制。如果希望更有选择性地管理回归控制更新,则打开用于测试套件的编辑器,进入“执行选项”选项卡下的回归选项部分。在那儿,您可以选择在测试套件级别上更新回归控制时应该更新哪些测试。
使用搜索替换工具更新其他工具值
Parasoft 搜索替换功能帮助您识别和更新需要随着服务和环境的发展而更改的值。例如,如果元素或命名空间更改,您可以使用搜索和代替来更新断言工具、比较工具、数据库工具等工具中受影响的 Xpath 值。
详情请参阅使用搜索替换工具更新工具值。
更新测试的工作流
有了上述功能,测试人员将遵循以下步骤:
- 注意 WSDL/WADL/Schema 回归测试失败。
- 如果差异表明请求消息结构中发生了变更,则可能需要进行测试更新。
- 如果差异表明端点或消息/操作中的更改没有经过测试套件的测试,则更新回归控制并确保测试成功。
- 检查某些响应错误。
- 他们所表明服务器拒绝的请求消息是因为与其内容不匹配吗?如若如此,运行变更影响分析。
- 否则,失败可能与服务期望的数据更改或引入服务的实际回归/漏洞有关。
- 根据需求更新受影响的工具。您可以:
- 为简单更改启用自动表单输入更新。
- 应用变更模板来覆盖更多复杂的变更(例如,处理重命名操作、添加的元素或类型、修改的命名空间等)
- 使用搜索和替换功能更新其他工具值(如断言、XPaths)。
- 根据需求自动更新比较工具中的回归控制。
管理变更的其他建议和实践
- 在高波动性周期中测试服务时,使用 XML 断言器或 JSON 断言器代替差异回归控制。这允许您在与测试用例相关的消息的指定部分上配置验证,从而在服务器发展时最小化更新工作。
- 可在测试套件级别定义和管理 SOAP 头文件。点击工具栏上的添加属性,然后选择全局属性 > SOAP Headers 选项。注意,可以在该对话框中配置各种其他工件和配置,并在测试套件级别对其进行重复使用,以便减少重复,更好地管理更新活动。
- 对变更指导助手和 Parasoft 搜索和替换等功能未涵盖的测试资产执行批量更新相对简单,但如果需要对大量测试执行更新,高级用户可考虑直接对 .tst 文件内容执行查找/全部替换操作。SOAtest 的 .tst 文件以 XML 格式保存,可以在文本编辑器中打开 soa .tst 文件来执行此更新。要成功地做到这一点,最好的方法是搜索文件中的当前值(如此您便可在文件中定位到它),然后在编辑器中设计一个替换指令,执行所需的更改。请确保在直接编辑前已备份文件。
- 请遵循测试创建最佳实践。