Ron Jeffries的《Extreme Programming Adventures in C#》已经出版了,怕书堆着读不完了,所以这几天逼着自己把Kent Beck的《Test Driven Development: By Example》读完了。正好看到sam111谈到这书,所以我也来凑凑热闹。
Test-Driven Development(TDD),是Extreme Programming (XP)–极限编程的一个重要组成部分。JGTM’2004前不久曾经欣喜若狂地介绍过XP里另一个重要部分,Pair Programming。
以前看到过别人提起“测试驱动开发”,当时我还以为是测试驱动程序的呢,所以没在意。今天看了sam111贴子的连接,才明白是怎么回事。(Test-Driven Development,是不是翻译成“测试为主导的开发”比较好?)
《Test Driven Development: By Example》作者是XP运动的开山鼻祖之一的Kent Beck,他的另一本经典著作是《Extreme Programming Explained: Embrace Change》。
TDD的目的,用Ron Jeffries的话来说,是为了产生Clean code that works,采用自动化的测试来主导开发过程,通常的做法是:
1。只在自动化的测试失败时才写新的编码
2。消除重复编码
在实践中通常的开发周期是这样的,
1。Write a test(写测试编码)
2。Make it run(使其运行,采取任何手段,包括hardcode跟测试相关的值等)
3。Make it right(使其变成好的编码,采用refactoring-重构方法消除重复编码)
这本书分成三部分。在第一部分(共17章)里,作者通过一个多国货币的例子,简单明了地演示了TDD的过程。从货币涉及的操作出发,先从简单的继承法引进多国货币,然后用重构方法反复消除重复编码,最后回复到单个类。第二部分是讲怎么用Python语言用TDD编写测试架构(有点象performing brain surgery on yourself)。第三部份总结了TDD开发中的模式。
总的感觉是,这本书是TDD方面不可多得的入门教材,但也感到TDD的实习人员需要精通OOP以及Refactoring的种种实践,否则很难从头到尾一贯性地实行TDD的精神。
在MSDN上有二篇谈及TDD的文章:
1。Unit Testing and Test-First Development(Eric Gunnerson)
2。Get Test Infected with NUnit: Unit Test Your .NET Data Access Layer(Steven A. Smith)
这里还有一个包含丰富资源的连接:
当然别忘了在.NET中开发TDD时必备的测试架构:
以及