使用输出中继让测试更稳健和灵活

概述

💡

初次接触 Output Relay? 如果你还不熟悉 Output Relay 的概念,建议先阅读《理解 Output Relay》,其中包含可视化图解和核心术语说明。

本指南聚焦于 Output Relay 的实际应用和最佳实践。

📝

对于所有新建且包含 Output Relay 的 Pipeline,推荐使用 kind: rule/v1.3rule/v1.2 继续兼容历史 Pipeline,但不具备 case 级并行执行能力。

输出中继的典型用例

一个典型的用例是多个API请求依赖的测试。例如:

  • 用例A:为用户获取系统访问令牌。
  • 用例B:使用用例A中获得的令牌调用“获取用户列表”服务,并从列表中获取用户ID。
  • 用例C:使用用例A中的令牌和用例B中的用户ID调用“用户详情服务”以获取用户的位置信息。

在这个场景中,用例B依赖于用例A的输出,而用例C则依赖于用例A和用例B的输出。输出中继帮助保持每个测试用例的独立性,同时允许实现这些依赖关系,避免编写复杂的代码逻辑。

关键概念

关于 Output Relay 的完整概念说明,包括输出用例(Output Case)输入用例(Input Case)Relay 变量以及数据流向图解,请参阅《理解 Output Relay》

⚠️

核心约束: 你只能从通过测试用例获取 relay 数据。如果 Output Case 失败,其 relay 数据不可用。详见《约束和限制》

如何使用输出中继

编写输出用例和输入用例

要使用输出中继,首先必须定义输出用例和输入用例。有关如何编写输出用例和输入用例的更多详细信息,请参考《通过中继管理测试用例》

配置包含输出用例和输入用例的测试管道

编写完输出用例和输入用例后,下一步是将它们正确排列在同一个测试管道中。有关如何使用输出中继配置管道的详细步骤,请参考《测试管道编写指南及示例》

执行逻辑与标准管道

启用了输出中继的测试管道与标准管道在执行逻辑上的关键区别,是测试用例之间存在显式的数据依赖关系。在 rule/v1.3 中,没有显式依赖的同层 case 可以并行调度;但只要某个 case 依赖 relay 输出,平台就要求提供 relay 的测试脚本先稳定完成,再启动消费 relay 的测试脚本。因此,Output Relay 不是“强制全部串行”,而是“在并行能力下仍保持数据依赖正确”。

常见的错误配置与系统响应

一些常见的错误配置示例如下:

  • 错误配置示例1:用例B设置为只有在用例A失败时才执行。系统将拒绝此配置。
  • 错误配置示例2:用例B依赖于用例A的输出,但用例A未声明任何输出。在这种情况下,系统不会拒绝配置,但在管道详情页面上,用户不会看到任何标记为“中继输出用例”的测试用例。此提示会提醒用户检查依赖设置,确保其符合预期。

常见问题及最佳实践

输出中继的最佳使用场景

输出中继功能最适合以下场景:

  • 多步骤功能测试,其中每个步骤都依赖于前一个步骤的输出。
  • API调用链,使用中继数据减少冗余。
  • 集成测试,需要重复使用前一步骤中的凭据或其他动态数据。

常见错误及故障排除方法

以下是一些常见错误及其排除建议:

  • 未声明输出变量:如果输出用例未正确声明其输出变量,系统将使用输入用例的初始值。如果测试结果不符合预期,请检查依赖配置并确保正确声明了输出和输入变量。
  • 不合逻辑的测试配置:如果输入用例设置为在输出用例失败时执行,系统将拒绝此配置。此情况可能发生在用户错误设置执行顺序时。请调整管道逻辑,确保测试用例执行顺序符合预期的依赖关系。

编写高效的中继依赖测试用例

为了充分利用输出中继功能,用户应遵循以下最佳实践:

  • 明确区分管道中的执行逻辑(如whenpassedwhenfailed)与输出中继引入的依赖关系(如ref),避免管道配置中的混淆。
  • rule/v1.3 中,如果某个下游 case 依赖 relay 输出,请避免把它放在可能与提供 relay 的测试脚本同时 ready 的 sibling 关系中。
  • 保持测试用例的原子性,确保每个测试用例仅执行单一、独立的功能。
  • 明确声明输出和输入变量,确保依赖关系透明。
  • 避免创建过于复杂的依赖链,保持测试用例的简洁和可维护性。

还有疑问?

我们的团队随时为您服务。欢迎联系我们,我们会尽快回复。