`
walkes
  • 浏览: 26401 次
社区版块
存档分类
最新评论

TDD简介(转)

阅读更多

TDD = Test Driven Development,是从04年开始软件开发领域的一大热点,google一下英文可以找到大量的内容,不过国内这方面的讨论不多。

顾名思义,TDD是一种测试驱动的开发模式,属于XP-极限编程的核心内容之一。TDD的开发流程是:设计某一功能,编写其测试函数(注意,这时实现这个功能的代码其实还不存在),使测试失败,编写代码,使测试通过,增加新的测试,编写更多的代码来pass更多的测试。

TDD的好处主要有几个:
1、采用“进化”式的开发流程,由于新产生的任何代码必须pass已存在的所有测试,所以可以尽早发现新代码引发的潜在bug,将发现bug的时间大大缩短,提高了初期代码的质量。稍微有点经验的人都知道,bug发现得越早,越容易解决。(在修复了一个存在于系统中4年的bug以后,我对这一点体会颇深)
2、在测试的驱动下,任何新加入的代码都必须是阶段可测的,这就迫使程序员划分程序的逻辑结构,提取相对独立代码,更多的采用OOP继承来描述逻辑层次。更进一步的,促使程序员更多的采用接口,来实现mock object。
3、由于任何新代码都有配套测试代码,自然而然的,测试代码就成为了新模块的描述文档,其中包含了如何建立使用新模块以及期望达到什么样的效果。

TDD在软件工业中的应用刚刚开始,它对软件开发各个阶段的影响正在被尝试、发现、评估和讨论。而TDD的具体实现也有很多内容值得深入探索,已经有成为一项专门产业的趋势。例如我刚刚完成了一套框架,团队成员可以随时加入获新建测试项目,每当发布新的版本时,系统将自动编译所有代码以及测试代码,初始化测试数据库,自动运行所有测试程序,在WEB服务器上生成测试报告,将报告链接email给相关人员。可以预见,不久的将来一定会有专门的商业软件来实现这些功能。到那时,传统的编译可能就要改名为编译/测试了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics