本章要回答的三个问题:为什么先写红灯、再让它变绿,能倒逼出更好的设计,而不是把工序倒着干?怎么把"测试要写什么"用自然语言表达清楚,让产品和开发用同一种语言对话?一整套灯挂进持续集成流水线之后,为什么绿灯反而可能骗人?
前四章教的是"手动开灯、看灯判断病情"。但一个工程组织要真正从测试里受益,得让灯"自己亮、自动拦、还会报质量账"。这一章就是手术室:先把 TDD 的红-绿-重构循环讲透,它让测试从"事后补"变成"先行牵引";再用 BDD 把测试语言从代码抽象提到业务场景,解决"测试写了什么连产品都看不懂"的问题;接着讲可测试性设计——很多灯装不上,根子在被测代码本身就不让装;然后把灯全部接进 CI 流水线,提交一次红灯立刻拦截;最后用覆盖率与度量拆穿"灯全绿不等于健康"的幻觉。这一章是全册由"操作"走向"工程治理"的转折。
| 节号 | 回答的问题 | 关键产出 |
|---|---|---|
| 5.1 TDD 红绿重构 | 先红灯再绿灯怎么帮设计 | 红-绿-重构循环图与最小失败用例 |
| 5.2 BDD 行为驱动 | 怎么把测试写成业务语言 | Given-When-Then 范式示例 |
| 5.3 可测试性设计 | 代码怎么天生好测 | 难测三件套诊断与改造 |
| 5.4 CI/CD 测试关卡 | 灯怎么自动亮自动拦 | 分层 CI 流水线关卡图 |
| 5.5 覆盖率与度量 | 灯绿不等于健康 | 覆盖率口径对比与虚假绿灯案例 |
第 5 章把"工程治理"的路铺好,第 6 章则去挑顺手的工具:单元测试框架、Mock 库、集成测试与报告工具。这里学的 TDD、BDD、CI 门槛,都需要落到具体框架和命令上才能兑现,所以第 6 章是第 5 章想法的物理载体。
这张图把第 5 章的五节排成一条递进的自动化主线:先学会让红灯牵引设计,再让测试会讲业务语言,接着把代码改造成天生好测,然后全部接进 CI 自动拦截,最后用覆盖率这把尺子审视"绿得干不干净"。