SDD:先写设计文档,再写代码(传统瀑布式)
TDD:先写测试用例,再写代码(测试驱动)
BDD:先写自然语言需求,再写测试+代码(行为驱动,更贴近业务)
1. SDD(Software Design Document,软件设计文档)
核心:先画图纸,再施工
流程:需求 → 写详细设计文档(架构、模块、接口、数据库) → 编码 → 测试
特点:
文档先行,重设计、重规划
适合大型、稳定、需求少变的项目
缺点:文档易过时、周期长、反馈慢
比喻:盖房子先出完整施工图,工人按图施工,中途难改
2. TDD(Test-Driven Development,测试驱动开发)
核心:先写测试,再写代码(代码要能过测试)
流程:需求 → 写测试用例(先写会失败的测试) → 写代码让测试通过 → 重构优化
特点:
测试先行,代码跟着测试走
保证代码覆盖率,减少bug
缺点:初期写测试耗时,对简单小功能可能“杀鸡用牛刀”
比喻:先定好“验收标准”(比如“能装10斤水”),再做水桶,直到水桶达标
3. BDD(Behavior-Driven Development,行为驱动开发)
核心:用自然语言描述“用户行为”,再转测试+代码
流程:需求 → 用自然语言写“场景/规则”(业务人员也能看懂) → 转成自动化测试 → 写代码
特点:
语言通俗(接近中文/英文日常话),业务、开发、测试都能对齐
关注“用户做什么、系统该有什么行为”,而非技术细节
常用工具:Cucumber、Behave
比喻:
不说:“接口参数id=1,返回200”
而说:“当用户点击登录,输入正确密码,应该进入首页”
最简单记忆
SDD:先写文档,后写代码 → 重规划
TDD:先写测试,后写代码 → 重质量
BDD:先写场景,后写测试+代码 → 重业务
网友回复


