0%

什么是测试驱动开发?

什么是测试驱动开发?

测试驱动的开发(Test-Driven Development, TDD)是针对传统意义上的开发流程而言的。一般针对软件开发都是先写代码,然后再对写好的代码进行调试,最后通过调试的代码产出为产品代码。TDD 的开发模式是把这个过程颠倒过来。在 TDD 开发的时候,我们首先根据我们实际的需求写测试代码,然后根据测试代码,然后再来开发我们实际的产品代码。

测试驱动开发与传统开发方式的优势

那使用 TDD 的开发模式相比于传统的“后期调试式编程”(Debug-Later Programming, DLP)而言有哪些优势呢?

结合我自己在实际开发中遇到的问题,DLP 的开发模式最让我头疼的是找 BUG 的过程。因为有些情况下,我实在是不知道这些 BUG 出现的位置。TDD 最大的区别就是先写好了针对模块的单元测试代码,事先划定好了框架。

TDD 的好处

《测试驱动的嵌入式 C 语言开发》书里列出了 TDD 的好几个好处。

1
2
3
4
5
6
7
8
产生的代码更少
调试的时间更短
边际效应所带来的 BUG 更少
单元测试是“不会说谎的文档”
内心的平静
改善设计
对进度的监控
有趣且回报丰厚

我反观自己的开发过程,我觉得至少 TDD 的开发模式让我有了几点改变:1、软件模块化更好了;2、代码的目标更明确,编码时更清楚自己的任务;3、对自己的代码更有信心;4、养成了重构代码的习惯。

TDD 的微循环

其中《测试驱动的嵌入式 C 语言开发》里面提到的 TDD 微循环,实际上就是让自己在进行 TDD 模式的编码时,建议遵循的行为规范,记录在下面用于以后的查询:

  1. 增加一个小的测试;
  2. 运行所有的测试并期待新测试失败,也可能根本连编译都通不过;
  3. 为了让测试通过来做一些小改动;
  4. 运行所有的测试并期待新的测试通过;
  5. 重构,以移除重复并改进代码的表达方式;

其中,我觉得给我影响最大的是把“重构”这个过程引入进了这个开发的流程中。帮助我养成了重构代码的习惯。这个是我受益最大的地方了。