1.2 什么是测试驱动开发测试驱动开发(TDD)是一种增量式软件开发技术。简单地说,就是在没有失败的单元测试的前提下不可以写产品代码。这些测试要很小,而且要自动化。用测试来驱动其实很合理。相对于直接工作在产品代码上,TDD的实践者们会先用测试来表达他们希望产品代码会有什么样的行为。然后这个测试显然会失败。只有在这时,他们才开始写产品代码,以便让测试通过。测试自动化是TDD的关键。在TDD的进程中,首先会生成新的自动化测试,紧跟着是满足这些测试的产品代码。一套单元测试伴随着产品代码同时不断增长,它也是像产品代码一样具有价值的资产。每次微小改动代码时,这套测试都会运行一次。这样不仅保证了新代码是可工作的,同时也保证了已存在的代码与新的改动兼容。软件是很脆弱的,任何改动都可能产生意料之外的结果。如果只有手工测试,我们很难负担这么多测试来预防所有意料之外的情况发生。重新测试的代价太高了,所以我们只去运行那些我们认为必需的手工测试。有时我们没那么幸运,引入了bug却没发现。如果使用TDD,测试会帮我们检查这些意料之外的情况,我们不用放弃检查之前的那些代码的行为。尽管你的确要写很多有价值的自动化测试,但是TDD并不是一种测试技术。它是解决编程问题的一种方法。它能帮助软件开发人员做出更好的设计决策。对于方向错误,或者疏漏了实际约束的解决方案,测试将会给出明确的警告。测试抓住了产品代码预期的行为。TDD还很有趣!这就像一个游戏,你在技术迷宫中将软件引向高可靠的方向,同时还避免了无聊的调试过程。伴随着每一个测试的通过都会有新的成就感,并能感受到向目标更近了一步。自动化测试会记录那些假设,抓住决策,并且让我们能专心面对下一个挑战。
相关资源:TDD测试驱动开发PDF及源码.zip