背景

当前已有的 E2E 测试方案存在以下问题:

  1. 用例不全。有一些网络相关的功能(如 DNS 等)以及某些特殊场景(如版本升级)没有覆盖。
  2. 同一个用例重复运行。某些不依赖部署方式的测试用例,在所有的 E2E 流水线中都会执行一遍,浪费时间和资源。
  3. 版本覆盖不全。某些用例只在较新的版本中进行了测试。
  4. 每个分支的用例独立维护,不便于管理和维护。

目标

实现一套集中式管理的 E2E 测试方案,补全测试用例,覆盖多版本、多场景,提高代码质量。

设计

测试框架

基于 Ginkgo + Gomega。

管理方式

在代码仓库中单独创建一个 E2E 测试分支,集中管理。

运行方式

所有测试均在 Github Actions 中运行。

高优先级的用例(如功能性用例,通过 Label 标注),通过 PR 触发运行,Github Actions 流水线任务自动拉取 E2E 分支代码,运行其中的高优先级用例(通过 Label 标注和过滤)。流水线运行结果直接展示在 PR 中。

全量测试(全版本、全场景、所有用例)于每天凌晨 01:00 定时执行。通过 Github Actions 的 Matrix 功能,对不同版本、不同场景等变量的多种组合分别进行测试。

覆盖版本

覆盖主线 master 分支以及长期维护分支(当前为 release-1.8/release-1.9/release-1.10)。

覆盖场景