测试驱动开发是什么
TDD(Test-Driven Development)以红-绿-重构的短循环驱动开发:先写一个失败测试明确目标(红),再写最少代码让它通过(绿),最后在测试保护下重构(重构)。Kent Beck 在《Test-Driven Development: By Example》中把它总结为三定律。TDD 的测试首先是设计工具——迫使接口在实现前就被想清楚,其次是安全网——重构敢动的前提。
基本信息
| 循环 | 红(失败测试)→ 绿(最小实现)→ 重构 |
|---|---|
| 出处 | Kent Beck《Test-Driven Development: By Example》 |
| 产出 | 细粒度测试与可演进的接口设计 |
| 节奏要求 | 每步以秒到分钟计,一次只解决一个问题 |
| 边界 | 测试是设计工具与安全网,不替代验收与探索式测试 |
循环示意
循环示意
1. 写一个失败测试(Red) # 明确期望行为与接口
2. 写最少代码让它通过(Green)# 不提前实现未要求的逻辑
3. 在测试保护下重构(Refactor)# 改善结构,测试保持绿
4. 重复典型使用场景
- 核心算法与领域逻辑:复杂分支用测试先行把边界想清楚。
- 缺陷修复:先写复现缺陷的测试,再修到绿,防止回归。
- 接口设计:用调用方的视角先写测试,接口自然好用。
- 重构前建网:为待改造模块补测试,重构不慌。
- 新人练习:用小题目体会红绿节奏与「最小实现」纪律。
- 结对编程:一人写测试一人写实现,循环互换。
TDD 的测试是设计工具与安全网,不能替代验收测试与探索式测试。
「最小实现」纪律是核心:绿灯阶段只写让测试通过的最少代码,贪多会把设计讨论带回实现细节里。
修复缺陷时 TDD 的形态是「先红后绿」:能复现缺陷的测试先写出来,修复后它转绿,从此锁住这类回归。
节奏感来自纪律:每一步都保持全部测试为绿再进入下一轮,长时间红着的状态会让安全网失去意义。