单元测试十二信条

http://www.developertesting.com/archives/month200705/20070504-000425.html

http://www.agitar.com/downloads/TheWayOfTestivus.pdf

Testivus的方式——从一个古代软件创业公司得到的单元测试的智慧

ByAlbertoSavia

2077年4月26日

总结:

一些对于开发者和单元测试的好建议。用一些神秘的东方古老的智慧来包装,希望得到您的注意。

如果你写代码,写测试

学生问大师程序员:

“什么时候我可以停止写测试?”

大师回答:

“当你停止写代码的时候”

学生问:

“什么时候我可以停止写代码?”

大师回答:

“当你成为一个经理的时候。”

学生问:

“什么时候我可以成为一个经理?”

大师回答:

“当你停止写测试的时候。”

学生赶紧去写测试。

留下一些打滑的痕迹。

如果代码值得编写,那么就值得拥有测试。

不要被单元测试的教条所捆绑

教条说:

“做这个。

只做这个。

只用这种方法来做。

因为我叫你做,你就做。”

教条是不灵活的。

测试需要灵活。

教条扼杀创造性。

测试需要创造性。

拥抱单元测试的信条

信条说:

“做好事,好事就会发生。

用你所知道的方法来做。

用你喜欢的方法来做。”

信条是灵活的。

测试需要灵活。

信条依靠创造性。

测试需要创造性。

统一考虑编码和测试

当你写代码的时候,考虑测试。

当你些测试的时候,考虑代码。

当你统一考虑测试和代码的时候,

测试很简单,但吗很美丽。

测试比单元更重要

学生问伟大的程序员大师FlyingFeathers:

“是什么使一个测试称为单元测试。”

这个问答的程序员大师回答:

“如果它跟数据库对话,它不是一个单元测试。

如果它通过网络通讯,它不是一个单元测试。

如果它接触文件系统,它不是一个单元测试。

如果它不能在同一时间和其它任何单元测试一起运行,它不是一个单元测试。

如果你有一些特殊的环境来运行它,他不是一个单元测试。”

其它大师程序员跳出来开始争辩。

“对不起,我问了这个问题。”学生说。

那个晚上后来他接到了一个更伟大的程序员大师的字条。字条上说:

“那个伟大的程序员大师FlyingFeathers的回答不是一个优秀的指导。

遵守它,大部分时间你都没法做好。

但你不需要被任何教条捆绑。

就写你需要的测试。”

学生睡得很好。

其它大师继续争论到漫漫长夜。

测试的最好时间是当你的代码还新鲜的时候

你的代码就像粘土。

新鲜的时候,它很软,可塑。

随着时间过去,他变得坚硬,脆弱。

如果你在代码新鲜的时候写测试,

容易改变,测试很简单。

代码和测试都变得更强。

测试不运行很浪费

经常运行你的测试。

不要让他们变馊。

当他们通过的时候值得高兴。

当他们失败的时候也值得高兴。

今天不完美的测试比某天完美的测试更好

完美是好的敌人。

不要等待最好,而要做得更好。

不要等待更好,要把它做好。

写你今天能写的测试

一个丑陋的测试比没有测试好

当你的代码很丑陋的时候,你的测试可能也很丑陋。

你不喜欢写丑陋的测试。

但丑陋的测试比没有测试好。

不要让丑陋的测试阻止你写测试,

让丑陋的测试阻止你写更丑陋的测试。

有时候,测试证明方法是对的

学生问两个程序员大师:

“我不能不通过Moking和违反封装来测试这段代码,

我该怎么办?”

一个程序员大师回答:

“Mocking不好,你不应该违反封装。

重写这段代码来使你正确的测试它。”

另一个程序员大师回答:

“Mocking好,测试胜过封装。”

学生迷惑了,出去喝啤酒。

在一个水池边,他看到了最伟大的程序员大师一边喝啤酒,一边吃布法罗辣鸡翅。

“最伟大的程序员大师,”学生说,“我以为你不喝酒,

你不是素食者么?”

大师笑着回答:

“有时候,啤酒能够治疗你的口渴,

而鸡翅能治疗你的饥饿啊。”

学生不再困惑了。

只有傻瓜不用工具

农夫不用犁不是一个好农夫。

会计不用算盘不是一个好会计。

有些任务最好用手来做。

有些任务最好用工具。

当你用工具可以做的更好的时候,用手不够高贵。

当你不需要用手的时候,用手不够聪明。

好的测试会失败

学生走到大师程序员跟前说:

“我所有的测试一直都通过。难道我不应该晋升么?”

大师打了学生一个耳光,说:

“如果你的测试一直是通过的,那么你需要些更好的测试。”

学生摸着红红的脸颊到HR那里告状。

但那是另外一个故事了。

Testivus之路

如果你写代码,写测试

不要被单元测试的教条所捆绑

拥抱单元测试的信条

统一考虑代码和测试

测试比单元更重要

测试的最好时间是当你的代码还新鲜的时候

测试不运行很浪费

今天不完美的测试比某天完美的测试更好

一个丑陋的测试比没有测试好

有时候,测试证明方法是对的

只有傻瓜不用工具

好的测试会失败

中文版PPT:

http://wenku.baidu.com/view/9d18e64069eae009581bec19.html?st=1

相关推荐