浅谈测试驱动开发(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) 循环完成所有功能的开发。