首先声明,这是对读过的一篇文章的总结原文章链接https://www.jianshu.com/p/62f16cd4fef3
首先说一下什么叫TDD,他有两种,一种是狭义的TDD既UTDD,一种是广义的TDD。这里要说的是狭义的TDD,也就是UTDD(unit Test Driven Development):单元测试驱动开发。TDD是敏捷开发中的一项核心实践和技术,是一种设计方法论,原理就是再开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
TDD有三层含义:
1.测试驱动开发
2.任务驱动开发,要对问题进行分析并进行任务分解。
3.测试保护下的设计改善。TDD并不能直接提高设计能力,他只是给你更多的机会
为什么要TDD:
传统编码方式:
1.需求分析,想不清楚细节,管他呢,先开始写
2.发现需求细节不明确,去跟业务人员确认
3.确认好几次终于写完所有逻辑
4,运行起来测试,靠,果然不工作,
5.调试,许久后,终于工作了
6.转测试,测出bug,debug,打补丁,
7.终于,代码可以工作了
8.一看测试代码烂的像坨屎,还得让QA测试,还得加班。。。
TDD编码方式:
1.先分解任务,分离关注点
2.列example,用实例化需求,澄清需求细节
3.写测试,只关注需求,程序的输入输出,不关心中间