什么是测试驱动开发?
测试驱动的开发(Test-Driven Development, TDD)是针对传统意义上的开发流程而言的。一般针对软件开发都是先写代码,然后再对写好的代码进行调试,最后通过调试的代码产出为产品代码。TDD 的开发模式是把这个过程颠倒过来。在 TDD 开发的时候,我们首先根据我们实际的需求写测试代码,然后根据测试代码,然后再来开发我们实际的产品代码。
测试驱动开发与传统开发方式的优势
那使用 TDD 的开发模式相比于传统的“后期调试式编程”(Debug-Later Programming, DLP)而言有哪些优势呢?
结合我自己在实际开发中遇到的问题,DLP 的开发模式最让我头疼的是找 BUG 的过程。因为有些情况下,我实在是不知道这些 BUG 出现的位置。TDD 最大的区别就是先写好了针对模块的单元测试代码,事先划定好了框架。
TDD 的好处
《测试驱动的嵌入式 C 语言开发》书里列出了 TDD 的好几个好处。
1 | 产生的代码更少 |
我反观自己的开发过程,我觉得至少 TDD 的开发模式让我有了几点改变:1、软件模块化更好了;2、代码的目标更明确,编码时更清楚自己的任务;3、对自己的代码更有信心;4、养成了重构代码的习惯。
TDD 的微循环
其中《测试驱动的嵌入式 C 语言开发》里面提到的 TDD 微循环,实际上就是让自己在进行 TDD 模式的编码时,建议遵循的行为规范,记录在下面用于以后的查询:
- 增加一个小的测试;
- 运行所有的测试并期待新测试失败,也可能根本连编译都通不过;
- 为了让测试通过来做一些小改动;
- 运行所有的测试并期待新的测试通过;
- 重构,以移除重复并改进代码的表达方式;
其中,我觉得给我影响最大的是把“重构”这个过程引入进了这个开发的流程中。帮助我养成了重构代码的习惯。这个是我受益最大的地方了。