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给相关人员。可以预见,不久的将来一定会有专门的商业软件来实现这些功能。到那时,传统的编译可能就要改名为编译/测试了。
分享到:
相关推荐
单元测试 TDD EASYMOCK 的一般用法说明 实例
华为LTE TDD系统原理培训PPT文档
LTE_TDD与LTE_FDD技术简介和比较
TDD测试驱动开发,准备的资料,我自己用的,公司只能上CSDN社区
Laravel开发-tdd 时分双工
GSM TDD noise 分析,但愿对GSM RF感兴趣的您有所帮助
C语言的TDD参考示例代码,主要包含了书中所参考的源代码
使用phpunit 一步一步使用tdd开发模式,减少bug数,提高项目质量
极限编程+TDD开发
TDD 测试
GSM TDD 板振说明及分析方法、解决方法总结
TDD实战 - Test Driven Development in Action
3GPP采用“求同存异”的原则进行L1E FDD和TDD的标准制定工作.将两种制式的协议实现在相同的规范中描述,并尽可能保证其协议实现相同,如遇到无法融合的差异,则仅针对差异部分进行分别描述。标准制定的这种指导思想...
Test Driven: Practical TDD and Acceptance TDD for Java Developers (PDF英文版)
关于TDD的认识和理解,非得要那么的字吗?我恶心了
抑止TDD noise 的措施及解决方案
TDD敏捷开发入门到精通 Agile 02 pdf
测试驱动开发的艺术Test.Driven.TDD.and.Acceptance.TDD.for.Java.Developers
我的博客 学习TDD(4)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerRegister]及 学习TDD(5)--实例2:基于ZooKeeper的服务器注册和探测类[实战ServerDetector] 的配套代码