# 测试最佳实践（精简版）

> 面向机器执行与一致性判断的最小规则集

## 1. 核心原则（必须）
- FIRST：Fast / Independent / Repeatable / Self-validating / Timely
- 行为优先：断言“结果与副作用”，避免断言实现细节
- 失败先核对文档/契约，再判断实现问题

## 2. 命名规范（必须）
- 统一格式：`should <期望行为> when/given <条件>`
- 避免：`test1`、`works`、`tmp` 等无语义命名

## 3. 结构模板（推荐）
- AAA：Arrange / Act / Assert
- Given-When-Then（等价表达）

## 4. 断言规范（必须）
- 至少断言关键输出字段或关键状态变化
- 避免仅 `toBeTruthy()` / `toBeDefined()` 无语义断言
- 异常路径必须校验异常类型或错误码

## 5. Mock 规则（必须）
- 单元测试必须隔离外部依赖（DB/HTTP/时间/随机/消息）
- 集成测试禁止 Mock 数据库
- Mock 要最小化且可读

## 6. 测试数据（必须）
- 每个用例数据独立，禁止用例间共享状态
- 必须有清理/回滚策略
- 避免依赖当前时间或全局顺序

## 7. 反模式清单（禁止）
- 测试相互依赖
- 依赖真实外部服务
- 仅日志无断言
- 只覆盖成功路径
- 硬编码等待（E2E）

## 8. 评审清单（简版）
- 命名是否描述“条件 + 期望”
- 是否覆盖核心边界与异常
- 断言是否具体且可验证
- 是否存在共享状态或隐式依赖
