从狭义上说TDD就是「单元测试驱动开发」,我是把它看做一种开发的模式,也可以说是开发时的一种套路,百度百科的说法是这样的:
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只适用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
说了一大堆,具体呢我也看不懂,下面就来分析分析,具体了解一下TDD测试开发
编码开发
想必各位在写项目的时候都会遇到这种情况,不知道自己这段要写成什么样,怎么才算结束;交流成本高,与测试的杠精各种杠,要么不合格,要么设计过度了等等一系列的问题
运行测试
而测试的也会遇到一些问题,跟开发意见不统一,被开发各种嫌弃;测试时间长,测试代码覆盖率不高
而TDD就解决了这些问题
TDD的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
TDD 的好处
1提前澄清需求:先写测试提前了澄清需求细节
2降低开发者负担:通过明确的流程,让开发一次只关注一个点,思维负担更小。
3快速反馈:便于开发测试之间的交流
4更好的单元测试:测试代码覆盖率高
5代码质量更高:能够迅速发现、定位bug
6更利于开发人员写文档:开发人员写文档是一件很头疼的事情,不过通过测试案例的参考,写文档思路更佳
当然,有好处就也会有坏处,而坏处正是目前“TDD”已死这种说法不断出现的原因
TDD的坏处
1工期紧,时间短,写TDD太浪费时间
2业务需求变化太快,修改功能都来不及,根本没有时间来写TDD
3写TDD对开发人员的素质要求非常高,普通的开发人员不会写
从目前的趋势上来看,大多都不会用TDD,主要还是赶时间、门槛高和客户改需求等原因
欢迎关注微信公众号:看到我请叫我滚去学习