InfoQ

新闻

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

作者 Vikas Hazrati & Deborah Hartmann译者 张逸 发布于 2008年3月6日 上午6时29分

社区
Agile
主题
敏捷技术,
质量交付,
单元测试
标签
评论,
争论,
测试驱动开发,
Fun,
测试
在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

6 条回复

回复

怎么舒服怎么来 发表人 cao yunfei 发表于 2008年3月6日 下午6时29分
Re: 怎么舒服怎么来 - 其实中国有位程序员叫张恂,两年之前就这么说了 发表人 Charlie Zhang(张恂) 发表于 2008年3月6日 下午7时13分
Re: 怎么舒服怎么来 发表人 柳 轻眉 发表于 2008年3月6日 下午8时19分
Re: 怎么舒服怎么来 发表人 上 里巴人 发表于 2008年3月7日 上午1时49分
我看 发表人 雷 陈 发表于 2008年3月6日 下午8时24分
Re: 我看 - 微软的敏捷前传 发表人 Charlie Zhang(张恂) 发表于 2008年3月6日 下午9时39分
  1. 返回顶部

    怎么舒服怎么来

    2008年3月6日 下午6时29分 发表人 cao yunfei

    先写测试用例后编码,或者在编码后编写测试用例,怎么舒服怎么来。终于有同学这么说了。

  2. 返回顶部

    Re: 怎么舒服怎么来 - 其实中国有位程序员叫张恂,两年之前就这么说了

    2008年3月6日 下午7时13分 发表人 Charlie Zhang(张恂)

    太极敏捷:UDD over TDD

    2008-3-6 6:29pm cao yunfei

    先写测试用例后编码,或者在编码后编写测试用例,怎么舒服怎么来。终于有同学这么说了。


    这个顺序其实并不重要,也不是重点。而据我所知,大部分程序员习惯的是前者。难道“在编码后编写测例”就不敏捷了?问题并没有这么简单。

    “怎么舒服怎么来”,这句话恰合太极敏捷之意。

    敏捷 OO 教练 张恂
    www.zhangxun.com

  3. 返回顶部

    Re: 怎么舒服怎么来

    2008年3月6日 下午8时19分 发表人 柳 轻眉

    记得庄表伟也早就说过,把测试和编码比作左腿和右腿,走路的时候无论是先迈左腿后迈右腿,还是先迈右腿再迈左腿,都可以平平稳稳的走下去,只要别一直单腿蹦。

  4. 返回顶部

    我看

    2008年3月6日 下午8时24分 发表人 雷 陈

    还是开发和测试同行比较的好,并进行小范围的快速集成。

  5. 返回顶部

    Re: 我看 - 微软的敏捷前传

    2008年3月6日 下午9时39分 发表人 Charlie Zhang(张恂)

    2008-3-6 8:24pm lei chen

    还是开发和测试同行比较的好,并进行小范围的快速集成。


    没错,所以微软采用了程序员、测试员 1:1 的配置,并做到了超过我们想象的、大规模软件(可能以数十万行、百万行计)的 daily (nightly) build and smoke test,如果谁破坏了 build,第二天早上还要带小丑帽 ...

    我还记得当时 Excel 的交付(上世纪 90 年代中期)好像只比原计划晚了一周!

    这些可都是在 10 多年前做到的,您说敏捷不敏捷?这才是真正赚钱的敏捷,超敏捷。

    本命年高龄程序员 兼
    敏捷 OO 教练 张恂
    www.zhangxun.com

  6. 返回顶部

    Re: 怎么舒服怎么来

    2008年3月7日 上午1时49分 发表人 上 里巴人

    Scrum里面的“回顾”或者说敏捷中的“迭代”,都和测试有着很大的关系。通过不断地测试,代码才能足够结实,而且借用上面的比喻,有时候单腿蹦起来看起来比双脚快,其实走长路还是两只脚来的更快些。

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!