Cockburn 谈测试:真正的程序员都有良好的单元测试

  • Deborah Hartmann Preuss
  • Vikas Hazrati
  • 张逸

2008 年 3 月 6 日

话题:敏捷测试语言 & 开发文化 & 方法

在 InfoQ 发布了Bob Martin 和 Jim Coplien 关于“TDD、CDD 和专业化”的讨论的视频后,Alistair Cockburn 在博客上发表了自己的观点,他认为有太多开发人员在说到“TDD”的时候,真正想要表达的其实只是他们拥有良好的单元测试(GUTs)。

Alistair 写下了对这次讨论的观察:

Bob,你在一开始提到的 TDD 就是在编码之前先进行测试,而这就是专业化的标志。最后,你又提到专业化的标志就是拥有良好的单元测试,而 TDD 则是达成这一目标的一种方法而已。

他认为,Bob 对于如何才是真正的专业化的主张发生了转变。尽管 Bob 是以 TDD 开始说明,但他似乎同意专业化就是需要有良好的单元测试。

Alistair 相信,至今为止一直没有合适的术语像表示 TDD 一样来表示“良好的单元测试”。如果过去能有一个类似“GUTs”的术语来表示良好的单元测试,那么人们就可以海阔天空地讨论 GUTs,而无需表明测试究竟是在编码前编写,还是在编码后编写。在极限编程摘要中,他提到:

要点就是:我们需要一个术语表示“我拥有良好的单元测试”,以区别于这句话过去所表达的含义。

现在,单元测试与编码的前后关系,把那些编写测试的人分成了截然不同的两个阵营。类似于“GUTs”这样的术语将有助于这两个阵营回到同一个平台上进行对话。此外,他还提到,如果情况果真如此,那么:

……Bob 可以声明拥有 GUTs 就是现代的专业程序员的标志。……

……Bob 可以独立声明 TDD 是得到 GUTs 的更好的方式,以及……

……Cope 也可以反驳,即使 GUTs 堆积成山,也无法像 CDD 一样涵盖状态空间……

……等等……

Alistair 似乎同意单元测试的重要性是毫无折扣可讲的。开发团队可能打算实践 TDD,或者在编码后编写测试用例,怎么舒服怎么来。真正的问题是他们应该拥有 GUTs。


编者按:就像阿基米德那样,“浴盆中”的 Alistair Cockburn 会因为找到问题的答案而欢呼Eureka[译注:希腊语,意为“找到了”,来自于阿基米德的故事]! 他阅读了我们的采访稿,这证明至少有一个赤裸的敏捷专家(Naked Agilist) 阅读了 InfoQ。(提示:请打开这个链接[译注:指 Naked Agilist 的链接],它会彻底消除你心中的奇怪想法:-)

查看英文原文:Cockburn on Testing: Real Programmers have GUTs
敏捷测试语言 & 开发文化 & 方法