ATDD 是什么
ATDD(验收测试驱动开发)是在编码之前,由业务(客户)、开发、测试三方共同澄清用户故事,先定义可执行的验收标准与验收测试,再开展实现:先对齐期望、再动手编写。与 TDD 关注单元级设计、BDD 关注行为描述语言不同,ATDD 强调验收视角与三方协作,实践中常与两者配合使用,能显著减少「做完了但不是要的」这类返工。
基本信息
| 参与者 | 业务(客户)、开发、测试三方 |
|---|---|
| 产出 | 可执行的验收标准与验收用例 |
| 时机 | 迭代计划与开发之前 |
| 关键活动 | 实例化需求、示例映射、三方评审确认 |
| 衔接方式 | 验收用例自动化后进入回归集 |
典型使用场景
- 迭代启动会:用示例映射澄清业务规则与异常分支,当场暴露理解差异
- 需求模糊时:把抽象描述翻译成可判定的验收条件,避免开发自行脑补
- 验收自动化:把验收标准固化为自动化测试,随版本持续回归
- 三方评审:业务、开发、测试同场确认边界值、例外与错误提示
- 活文档:验收用例作为系统当前行为的说明,供新人查阅
- 外包与跨团队交付:验收标准即验收依据,减少交付争议
验收标准示例
验收标准示例
用户故事:登录连续失败超过 5 次锁定账号 10 分钟
验收标准:
第 5 次失败:提示剩余 0 次机会,账号进入锁定状态
锁定期间输入正确密码:拒绝登录并提示可解锁时间
锁定到期后:允许登录且失败计数清零
# 每条标准都写成可判定通过与失败的句子,三方逐条确认与 TDD BDD 的关系
| 实践 | 关注点 | 典型载体 |
|---|---|---|
| ATDD | 验收视角与协作澄清 | 验收标准、验收测试 |
| TDD | 单元级设计驱动 | 单元测试、重构循环 |
| BDD | 行为描述语言 | Given-When-Then 场景 |
ATDD 与 BDD 的区别主要在语境:ATDD 强调验收视角,BDD 强调行为描述语言,实践中经常重叠使用。