测试驱动开发的有效性


      最近一直在看《Making Software》一书。提及这本书不是因为它带来了技术上的冲击,而是因为它在提醒我思考一些东西。

      三年来一直进行着TDD,没有编码的时候也会关注着TDD,可以说是孤独但坚持着。今天看到了《Make Software》中的《How Effective Is Test-Driven Development?》章节。本章中各个专家总结了各种研究报告,从效率、内部质量和外部质量等方面对测试驱动开发的有效性进行了阐述:

      对于寻求可操作的建议的从业者我们的专家小组建议服用TTD“药片”,认真观察它的效果和副作用,并适时增加或减少用量。评审过数据后团队的每个成员都给出了具体的“药方”:

      我们已经罗列了证据,每个读者都必须自己来决定。

      首先确定哪种质量对你最重要。比如你是否更关注效率和外部质量?你是否允许投入更多来制作更高质量的测试?本章中的证据仅仅对那些基于各个读者的具体目标做决定时才有用。

      我服用了TDD“药片”并上瘾了。我的个人经验是TDD可以改善效率,但是我们的研究报告缺乏这方面的证据。如果我没有已经开始使用TDD,我会让我的团队先服用小剂量来确定他们是否可以发现长期的效率改善。如果没有副作用,我会慢慢增加用量并继续观察。

      尽管TDD很有前景,不过有效性方面的不确定以及比较高的前期成本可能阻碍对它的采用。但是,它还是可以鼓励良好的编程和开发习惯,最终造就更高质量的程序员和测试。

      TDD看起来很有前景,不过我们需要面对的是它在刚开始采用的时候口感很差。很多人更喜欢原先那套。毕竟,花大量的时间写一堆会失败的测试很难让你感觉到有效率。另一方面,在我一生中我还从没有写过比现在更干净的代码。 能够修改原来代码、点击“Run Tests”按钮然后就可以确认没有影响到任何其他东西的感觉真是好极了。

      本章中所包含的证据表明TDD可能可以解决你的问题,不过你不能将它看成一副万能药。你的TDD之旅可能因为包括你的经验、行业背景在内因素的不同而不一样。作为一名从业者,能够知道什么时候可以从TDD中得到成效是一个很重要的资产。