跳转到文档内容
版本:v2.9.0

端到端测试

概述

本文档提出为 HAMi 增加端到端(E2E)测试支持,以确保其在 Kubernetes 生态系统中的功能性和兼容性。它引入了用于验证整个工作流的机制,并保证系统满足生产级要求。

动机

E2E 测试用于验证系统的完整功能,确保最终用户体验与开发者的设计规范保持一致。

虽然单元测试和集成测试能够提供有价值的反馈,但在分布式系统中它们往往是不够的。一些细微的变更可能通过了单元测试和集成测试,却仍然在系统层面引入了意想不到的问题。

全面的 E2E 测试覆盖对于降低回归风险、提升可靠性,以及保持对系统与 Kubernetes 无缝集成的信心至关重要。

目标

  • 搭建 E2E 测试的基础环境。
  • 定义 HAMi 的 E2E 测试范围和场景。
  • 实现覆盖关键工作流和边界情况的 E2E 测试。
  • 确保与 Kubernetes 的兼容性。
  • 建立一个可靠且可复用的测试框架,以便未来扩展。

非目标

  • 针对单个功能的单元或集成测试(已在其他地方覆盖)。
  • 超出基础场景的性能基准测试。

提案

测试范围

  • 核心功能: 验证基础操作和工作流。
  • 边界情况: 测试异常场景或无效输入,以确保健壮性。
  • 兼容性:
    • 验证与不同异构设备的集成。
    • 验证与不同 Kubernetes 版本的集成。
    • 验证与不同 CUDA 版本的集成(可选)。
  • 错误处理: 确保具备适当的错误消息和恢复机制。

实现细节

  • 测试在本地环境中运行。
  • 测试使用 Ginkgo 框架编写。
  • 所有测试使用隔离的 namespace,以避免冲突。
  • 每次测试运行后会自动清理资源。
  • CI 集成确保测试针对 PR、每日构建和发布版本运行。

用户故事

故事 1: 通过 Helm 部署实现 E2E 测试自动化。

故事 2: 通过资源校验实现 E2E 测试自动化。

故事 3: 通过 Kubernetes 资源部署实现 E2E 测试自动化。

风险与缓解措施

资源限制

测试集群可能会遇到资源约束,例如 CPU、内存或存储不足。这可能导致测试失败、性能下降或部署过程中的超时。

环境不稳定性

网络延迟、间歇性故障或集群节点故障等不稳定性问题,可能导致测试失败或行为不一致。测试应当针对瞬时错误进行重试,并对持续存在的错误给出确定性的报告。

CNCFHAMi 是 CNCF Sandbox 项目