FIRST 原则是什么
FIRST 是衡量单元测试质量的五条通用标准:Fast(快)、Independent(独立)、Repeatable(可重复)、Self-validating(自校验)、Timely(及时)。出自《Clean Code》第 9 章,与《单元测试的艺术》中的实践要点一致;它不是口号,而是五条可以逐条检查的验收线,评审时拿它对照即可。
基本信息
| Fast | 执行快,可高频运行 |
|---|---|
| Independent | 用例互不依赖,可任意顺序执行 |
| Repeatable | 任何环境重复执行结果一致 |
| Self-validating | 通过或失败自动判定,无需人工比对 |
| Timely | 在编码期同步编写,而不是上线前补 |
| 用法 | 五条逐条对照,先修最弱的一环 |
FIRST 一览
| 原则 | 含义 | 反面例子 |
|---|---|---|
| Fast | 执行快,可高频运行 | 每个用例启动一次数据库 |
| Independent | 用例互不依赖 | 依赖前一条用例的数据 |
| Repeatable | 任何环境重复执行结果一致 | 依赖当前时间或外部服务 |
| Self-validating | 自动判定通过或失败 | 需要人工比对输出 |
| Timely | 在编码期同步编写 | 上线前集中补写 |
典型使用场景
- 用例评审:用 FIRST 五条对照,找出脆弱的用例。
- 新人培训:讲清好测试的标准,比抽象原则更可操作。
- 套件改造:把慢、互依赖的老套件按五条逐步重构。
- CI 接入:Fast 与 Repeatable 是进入流水线的前提。
- 技术债评估:统计违反各条的数量,量化改造收益。
- 排错语言:解释「这条用例为什么不稳定」时的共同词汇。
FIRST 侧重单元测试;集成与端到端测试在 Fast 上可适当放宽,但 Independent 与 Repeatable 仍是底线。
Fast 不只指单条快,更指套件反馈总量可控:超过分钟级的反馈循环,开发就会绕过测试。
对照检查清单
- Fast:套件整体运行时长是否在可接受范围。
- Independent:随机顺序执行是否仍然通过。
- Repeatable:换机器、换目录、换时区是否结果一致。
- Self-validating:报告是否无需人工比对。
- Timely:用例是否早于或同期于实现编写。