---
name: testing-quality
when: '测试质量, 测试规范, 测试策略, 单元测试, 集成测试, 测试覆盖, E2E测试, 测试反模式'
scope:
  - backend
  - frontend
products:
  - '*'
id: ka-pattern-testing-quality
asset_kind: pattern
lifecycle_status: active
owner_mechanism_id: mc-general-pattern
authority: supporting
routes:
  - '*'
primary_triggers:
  - 测试质量
  - 测试规范
  - 测试策略
  - 单元测试
  - 集成测试
  - 测试覆盖
  - E2E测试
  - 测试反模式
priority: P2
specificity: 3
version: 1.1.0
last_reviewed: '2026-06-01'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
stages: ["编码与单元测试"]
---

## 决策规则
- 每个接口至少覆盖：正常流程、参数缺失、权限不足、业务异常、边界值
- 端到端业务测试必须从浏览器页面模拟真实用户操作，直接 API 调用只能补充不能替代
- 测试失败必须在源逻辑修复，禁止修改测试来适配 Bug
- 测试数据准备必须走业务 API 或页面操作，禁止直接 SQL INSERT 业务数据
- 禁止在测试脚本中硬编码凭据，必须从环境变量或配置文件读取
- Docker 部署必须从全新镜像构建，禁止 docker commit 和热补丁
- 单元测试覆盖率核心逻辑必须 ≥ 80%，关键路径（支付/权限）必须 100%
- 测试方法命名必须清晰表达测试场景（如 shouldReturn401WhenTokenExpired）
- 测试数据必须使用工厂方法或 Builder 构建，禁止硬编码 magic values
- 集成测试必须使用测试容器（Testcontainers）或内存数据库，禁止依赖外部环境
- 每个修复的 bug 必须有对应的回归测试，防止问题复现

## 验收项
- [AC-01] 接口测试覆盖正常+异常+边界
- [AC-02] E2E 测试从浏览器模拟用户操作
- [AC-03] 测试失败修复源逻辑而非改测试
- [AC-04] 测试数据走业务 API 非 SQL 直写
- [AC-05] 核心逻辑覆盖率 ≥ 80%
- [AC-06] 测试方法名清晰表达场景
- [AC-07] 测试数据工厂构建
- [AC-08] Bug 修复有回归测试
