浅谈测试驱动开发(TDD)

李群 www.ihere.org

2004 年 11 月 19 日

测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量。本文从开发人员使用的角度,介绍了 TDD 优势、原理、过程、原则、测试技术、Tips 等方面。

 

背景

一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。

下面是该文章的链接。http://www.ibm.com/developerworks/cn/linux/l-tdd/index.html

 

读后有几段话,摘录在此。

 

需求向来就是软件开发过程中感觉最不好明

 

 

确描述、易变的东西。这里说的需求不只是

 

 

指用户的需求,还包括对代码的使用需求。

 

 

很多开发人员最害怕的就是后期还要修改某

 

 

个类或者函数的接口进行修改或者扩展,为

 

 

什么会发生这样的事情就是因为这部分代码

 

 

的使用需求没有很好的描述。测试驱动开发

 

 

就是通过编写测试用例,先考虑代码的使用

 

 

需求(包括功能、过程、接口等),而且这

 

 

个描述是无二义的,可执行验证的。

 

 

 

 

测试驱动开发也是一种代码设计的过程。

 

 

 

开发人员通常对编写文档非常厌烦,但要使用、理解别人的代码时

 

通常又希望能有文档进行指导。而测试驱动开发过程中产生的测试

 

用例代码就是对代码的最好的解释。

 

 

 

快乐工作的基础就是对自己有信心,对自己的工作成果有信心。当

 

前很多开发人员却经常在担心:“代码是否正确?”“辛苦编写的

 

代码还有没有严重bug?”“修改的新代码对其他部分有没有影

 

响?”。这种担心甚至导致某些代码应该修改却不敢修改的地步。

 

测试驱动开发提供的测试集就可以作为你信心的来源。

 

 

 

当然测试驱动开发最重要的功能还在于保障代码的正确性,能够迅

 

速发现、定位bug。而迅速发现、定位bug是很多开发人员的梦

 

想。针对关键代码的测试集,以及不断完善的测试用例,为迅速发

 

现、定位bug提供了条件。

 

 

 

测试驱动开发的基本过程如下:

1) 明确当前要完成的功能。可以记录成一个 TODO 列表。

2) 快速完成针对此功能的测试用例编写。

3) 测试代码编译不通过。

4) 编写对应的功能代码。

5) 测试通过。

6) 对代码进行重构,并保证测试通过。

7) 循环完成所有功能的开发。

 

 

 

 

 

posted on 2008-08-31 22:36  黄剑父  阅读(317)  评论(0编辑  收藏  举报