本文结构:
什么是TDD
为什么要TDD
怎么TDD
FAQ
学习路径
延伸阅读
什么是TDDTDD有广义和狭义之分,常说的是狭义的TDD,也就是UTDD(UnitTestDrivenDevelopment)。广义的TDD是ATDD(AcceptanceTestDrivenDevelopment),包括BDD(BehaviorDrivenTestDevelopment)和Consumer-DrivenContractsDevelopment等。本文所说的TDD指狭义上的TDD,也就是「单元测试驱动开发」。
TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD是XP(ExtremeProgramming)的核心实践。它的主要推动者是KentBeck。
TDD有三层含义:
Test-DrivenDevelopment,测试驱动开发。
Task-DrivenDevelopment,任务驱动开发,要对问题进行分析并进行任务分解。
Test-DrivenDesign,测试保护下的设计改善。TDD并不能直接提高设计能力,它只是给你更多机会和保障去改善设计。
为什么要TDD传统编码方式VSTDD编码方式传统编码方式
需求分析,想不清楚细节,管他呢,先开始写
发现需求细节不明确,去跟业务人员确认
确认好几次终于写完所有逻辑
运行起来测试一下,靠,果然不工作,调试
调试好久终于工作了
转测试,QA测出bug,debug,打补丁
终于,代码可以工作了
一看代码烂的像坨屎,不敢动,动了还得手工测试,还得让QA测试,还得加班...
TDD编码方式
先分解任务,分离北京中科医院都是假的北京中科医院都是假的