跳转至

E2E 回归测试 SSOT

SSOT Key: ops.e2e 核心定义: 定义自动化测试框架架构、测试分级策略及 CI 集成规范。


1. 真理来源 (The Source)

原则:测试代码是验证 SSOT 真实性的唯一标准。

本话题的配置和状态由以下物理位置唯一确定:

维度 物理位置 (SSOT) 说明
测试代码 e2e_regressions/ Pytest 测试套件
CI 流程 .github/workflows/ Workflow 定义

Code as SSOT 索引


2. 架构模型

```mermaid flowchart LR CI[GitHub Actions] -->|Trigger| Runner[Test Runner] Runner -->|Pytest| Suite[Test Suite]

Suite -->|HTTP/TCP| L1[Bootstrap]
Suite -->|HTTP/TCP| L2[Platform]
Suite -->|SQL/Redis| L3[Data]

Suite -->|Report| Dashboard[GitHub PR Comment]

```

测试分级 (Test Pyramid)

级别 标记 (Mark) 运行时长 目的
Smoke @pytest.mark.smoke < 1min 部署后的冒烟测试 (核心路径)
Critical @pytest.mark.critical < 5min 关键功能验证
Full (无) > 10min 完整回归

3. 设计约束 (Dos & Don'ts)

✅ 推荐模式 (Whitelist)

  • 模式 A: 每一个 SSOT 文档的 "The Proof" 章节必须链接到具体的测试文件。
  • 模式 B: 测试用例应尽量保持幂等性(Idempotent),可重复运行。

⛔ 禁止模式 (Blacklist)

  • 反模式 A: 禁止 在测试代码中硬编码敏感信息(必须通过 Env 注入)。
  • 反模式 B: 禁止 依赖外部不稳定服务(如公网 API)导致 Flaky Test。

4. 标准操作程序 (Playbooks)

SOP-001: 运行本地测试

  • 触发条件: 开发新功能前
  • 步骤:
    1. 配置环境变量 (参考 e2e_regressions/.env.example,若未设置 INTERNAL_DOMAIN 会尝试从 1Password init/env_vars 读取)。
    2. 指定环境:
    3. DEPLOY_ENV=production|staging|pr-test
    4. DEPLOY_ENV=pr-test 时必须设置 PR_NUMBER(用于 report-pr-<num>.<domain>)。
    5. 如需使用自定义域名,设置 E2E_ALLOW_CUSTOM_DOMAIN=true,并显式设置各服务 URL(如 DOKPLOY_URLFINANCE_REPORT_URL)。
    6. 运行(任选其一):
    7. 仓库根目录: uv run pytest e2e_regressions/tests -m smoke -v
    8. 进入 e2e_regressions/: uv run pytest tests -m smoke -v

SOP-002: 添加新测试

  • 触发条件: 补充 SSOT 覆盖率
  • 步骤:
    1. e2e_regressions/tests/ 下创建新文件。
    2. 编写测试函数 test_xxx
    3. 在对应 SSOT 文档中添加链接。

5. 评分体系 (Scoring)

权重:按团队目标可调整。


6. 验证与测试 (The Proof)

行为描述 测试文件 (Test Anchor) 覆盖率
测试框架自身 conftest.py ✅ Meta-Test

Used by