TDD精神障碍综合征
近期,我的一些关于TDD、设计模式、同步乃至数独问题的博客好像招惹了很多TDD反对者的怨言。不乏有人态度粗鲁、具攻击性、嘲枫、轻蔑而且不成熟。嗯,万圣节就快到了。 尽管他们自圆其说,但确实也提出了一点儿合理的疑问。为了公平起见,我想在这里回答会比较合适。
TDD有科学依据吗?
确有充足的依据。
我们发现使用测试优先的同学一般会编写更多的测试,并且编写更多测试的同学趋于有更多的产出。我们还观察到,基本质量随着程序员的测试而线形增长,并与所选择的开发策略无关。
有87.5%的开发人员报告说这让他们更好的理解需求。95.8%的开发人员报告说花在调试上的时间减少了。78%的开发人员报告总体来说应用TDD增加了产出。50%的开发人员发现总体说开发时间减少了。92%的开发人员觉得TDD伴随着更高质量的代码。79%的开发人员相信TDD造就了更简单的设计。 实际上,我发现Matt的一些内容来自于一个Laurie Williams和Boby Goerge在2003年做的更为著名的研究(也在上述Google搜索中可以找到)。研究中提到了一个设定的试验,其中包括了三家不同公司。尽管Matt的总结是基于这个研究的,还是值得一说。 在Goerge-William的试验团队中,应用到TDD的团队表示的比没有使用TDD的要花更多达16%的时间。显然,以下测试数据相比会更加准确。没有应用TDD的团队没能通过三分之一的研究者隐藏的测试用例,而应用TDD的团队通过了7项中的6项。引用Kent Beck的话说:“如果必须让它工作起来的话,我可以做的更快!” 这项试验中另一有趣观点是TDD团队产出的一套自动化测试用例有着更高的测试覆盖率(大多数情况下都接近100%),相比之下,没有TDD的团队尽管曾声称也要产出这样的一套测试,但未能达成。
我相信还有更多的研究内容,毕竟这只是来自一次的Google检索的结果。我觉得奇怪TDD反对者会从Google搜索中找不到什么。
有哪些项目是基于 TDD 开发的呢? 实际上, 还不少。下面是这些项目的列表,他们都编写了一套自动化的单元测试,而且有很高的覆盖率。这些是我确实知道使用 TDD 的,我就知道这些。其他的,我只能猜测了。如果你知道其他的,请发表留言补充。
还有其他的吗?我确信有。这些只不过是个简短的网页搜索。如果你知道更多,请添加留言。 (原文链接网址: http://blog.objectmentor.com/articles/category/uncle-bobs-blatherings ; Robert C. Martin 的英文 blog 网址: http://www.butunclebob.com/ArticleS.UncleBob ) 本文作者Robert C. Martin Robert C. Martin 是Object Mentor 公司总裁,面向对象设计、模式、UML 、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt 获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method 的作者。Martin 是Pattern Languages of Program Design 3 和More C++ Gems 的主编,并与James Newkirk 合著了XP in Practice 。他是国际程序员大会上著名的发言人,并在C++ Report 杂志担任过4 年的编辑。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |