InfoQ

新闻

考古学新发现:代码测试的“神旨”

作者 Deborah Hartmann译者 乔梁 发布于 2007年4月29日 上午5时4分

社区
Agile
主题
敏捷技术
标签
Fun,
测试,
测试驱动开发
Agitar Software的Alberto Savoia找到了一篇堪称珍品的“远古文章”,并在Artima Blog上贴了出来,名为“Testivus之路——软件开发初期的单元测试名言”。该文为开发者提供了关于单元测试的一些建议,并戏称其为“可与古老东方名言相提并论的十二条”。

副标题为“单元测试,教条越少,效果越好"。该文讲述了喜玛拉雅远征队的一个故事,据说他们找到了史前文字:
他们遇到所有令人称奇的事情中最为神奇的事:在山洞里发现了一个程序员留下的一张字条,上面写道:
“我们又一次比预期时间提前完成了软件发布。所有的测试都通过了,我们正享受着剩余的时间,正要远航。”
这些老程序员的秘密何在?远征队搜索了每一个角落。除了各种各样的Dilbert日历,他们还发现了“Testivus之路”。是谁写了这本神奇手册?

手册中的内容是否就是那些老程序员可以提供的完成任务的秘诀呢?
该文收录了《Testivus之路》的所有内容,还包括对12信条的诠释。12个信条如下:
  1. 写代码,就一定要写测试
  2. 不要受单元测试的教条所限
  3. 相信单元测试将会带来的成果
  4. 统一考虑编码和测试
  5. 测试比单元代码重要
  6. 测试的最佳时机是代码刚写完之时
  7. 测试不会白费
  8. 当天有瑕疵的测试也比后补的完美测试好
  9. 不好的测试也比没有测试强
  10. 测试有时可以验证意图
  11. 只有傻瓜不用工具
  12. 用好的去测试不好的
这里有一个“Testivus之路”的例子:
一个学生问编程大师:
“我什么时候能不写测试了?”

大师回答说:
“当你不写代码的时候。”

学生又问道:
“那我什么时候能不写代码了?”

大师回答说:
“当你成为一个管理者时。”

学生小心翼翼地问:
“那我什么时候成为一个管理者呢?”

大师回答道:
“当你不写测试的时候。”

学生头也不回
冲过去就开始写测试了。

如果要写某段代码,
那么,必定是要有测试代码的。
查看英文原文:Archeology: Testing Sacred Text Found
译者简介:乔梁,BJUG成员,在IT领域工作多年,先后从事过软件开发、架构设计、技术管理等工作,目前从事项目管理工作。关心软件技术领域发展,对软件生命周期管理及过程改进方面的内容很感兴趣,对敏捷方法论亦有所了解。他的个人Blog为:http://blog.csdn.net/tony1130。为InfoQ中文站贡献内容,请邮件至china-editorial@infoq.com

没有回复

回复

深度内容

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业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!