低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

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

2007 年 4 月 29 日

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

副标题为“单元测试,教条越少,效果越好"。该文讲述了喜玛拉雅远征队的一个故事,据说他们找到了史前文字:

他们遇到所有令人称奇的事情中最为神奇的事:在山洞里发现了一个程序员留下的一张字条,上面写道: > “我们又一次比预期时间提前完成了软件发布。所有的测试都通过了,我们正享受着剩余的时间,正要远航。”

这些老程序员的秘密何在?远征队搜索了每一个角落。除了各种各样的 Dilbert 日历, 他们还发现了“Testivus 之路”。是谁写了这本神奇手册? 手册中的内容是否就是那些老程序员可以提供的完成任务的秘诀呢?

该文收录了《Testivus 之路》的所有内容,还包括对 12 信条的诠释。12 个信条如下: > 1. 写代码,就一定要写测试

  1. 不要受单元测试的教条所限
  2. 相信单元测试将会带来的成果
  3. 统一考虑编码和测试
  4. 测试比单元代码重要
  5. 测试的最佳时机是代码刚写完之时
  6. 测试不会白费
  7. 当天有瑕疵的测试也比后补的完美测试好
  8. 不好的测试也比没有测试强
  9. 测试有时可以验证意图
  10. 只有傻瓜不用工具
  11. 用好的去测试不好的

这里有一个“ Testivus 之路”的例子: > 一个学生问编程大师:

“我什么时候能不写测试了?” 大师回答说:
“当你不写代码的时候。”

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

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

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

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

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

如果要写某段代码,
那么,必定是要有测试代码的。

查看英文原文: Archeology: Testing Sacred Text Found - - - - - -

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

2007 年 4 月 29 日 05:04436
用户头像

发布了 100 篇内容, 共 17.2 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

从一个HTTP请求来读懂HTTP、TCP协议

互联网架构师小马

渣渣2本学历CRUD一年半,决定改变现状,努力学习两个月成功拿到美团30k offer

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营第二周作业

邢永春

架构训练营-week6-作业

于成龙

CAP 架构训练营

玩转华为云开发|老板万万没想到:刚入职的我一人就搞定人脸识别开发

华为云开发者社区

软件开发 模块化流程 人脸识别 API 华为云

架构师训练营 W02 作业

Geek_f06ede

架构师训练

第1周 架构方法-作业

SuGeek

架构师训练营 1 期第 6 周:技术选型(二) - 作业

piercebn

极客大学架构师训练营

Java程序员必会的三个技能:Spring+MySQL+并发编程

Java架构师迁哥

一整套Java线上故障排查技巧,爱了!爱了!

互联网架构师小马

架构师训练营第 1 期第 6 周作业

好吃不贵

极客大学架构师训练营

架构师训练营第 1 期第 6 周学习总结

好吃不贵

极客大学架构师训练营

CAP 原理

黄立

CAP

作业一:

丁乐洪

钻石与小度:智能语音助手背后的“马斯洛需求模型”

脑极体

三分钟带你分清Mysql 和Oracle之间的误区

华为云开发者社区

MySQL 数据库 oracle 安全 关系型数据库

架构师训练营第六周课后练习

薛凯

阿里内部首发Spring Cloud全套微服务架构笔记,速拿去怼面试官!

Java架构追梦

Java 编程 面试 微服务架构 SpringCloud

RabbitMQ之路由和通配符模式,附源码注释讲解

小Q

Java 学习 架构 面试 RabbitMQ

Double Kill!! 数据联邦修炼之路

脑极体

全网首发,做第一人纯源码讲解RabbitMQ实践,收藏吧

小Q

Java 学习 架构 面试 RabbitMQ

Mysql中,这21个写SQL的好习惯,你值得拥有呀

捡田螺的小男孩

MySQL sql SQL优化 sql习惯

架构训练营-week6-学习总结-技术选型(二)

于成龙

架构训练营

牛皮了!字节面试官爆肝七天七夜总结了一份算法面试笔记

互联网架构师小马

Java 程序员 字节跳动 面试 算法

十八般武艺玩转GaussDB(DWS)性能调优(二):坏味道SQL识别

华为云开发者社区

数据库 sql 性能调优 GaussDB 算子

云小课|云数据库RDS实例连接失败了?送你7大妙招轻松应对

华为云开发者社区

数据库 网络 ssl RDS实例 端口

架构师训练营 W02 总结

Geek_f06ede

架构师训练

写时复制集合 —— CopyOnWriteArrayList

程序员小航

Java 源码 并发 源码阅读 JUC

牛皮!GitHub上标星90.6K的Java面试指南+笔记

互联网架构师小马

Java GitHub 学习 程序员 面试

使用抓包工具fiddler和apipost进行接口测试

测试人生路

测试工具 fiddler

阿里五位MySQL封神大佬耗17个月总结出53章性能优化法则

996小迁

Java MySQL 大数据 架构 面试

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

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