首页/开发/软件测试速查/单元测试 FIRST 原则
测试基础与分层67 条

单元测试 FIRST 原则

Fast(快)、Independent(独立)、Repeatable(可重复)、Self-validating(自校验)、Timely(及时):衡量单元测试质量的五条通用标准。

软件测试速查开发更新于 2026-10-13

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:用例是否早于或同期于实现编写。

易错点

  • 用例顺序执行时通过、单独执行失败,违反独立性且难排查
  • 用当前时间或随机数做断言而不注入固定值,结果不可重复
  • 慢用例拖累整个套件,本地开发干脆不跑测试
  • 需要人工比对输出的用例混入自动化套件,报告不可信
  • 上线前集中补写单测,测试围绕实现写而不是围绕行为写

数据来源与参考

  • Robert C. Martin《Clean Code》第 9 章
  • Roy Osherove《The Art of Unit Testing》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌