单元测试十二信条

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

http://www.agitar.com/downloads/TheWayOfTestivus.pdf
Testivus的方式——从一个古代软件创业公司得到的单元测试的智慧
By Alberto Savia
2077年4月26日
总结:
一些对于开发者和单元测试的好建议。用一些神秘的东方古老的智慧来包装,希望得到您的注意。

如果你写代码,写测试
学生问大师程序员:
“什么时候我可以停止写测试?”

大师回答:
“当你停止写代码的时候”

学生问:
“什么时候我可以停止写代码?”

大师回答:
“当你成为一个经理的时候。”

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

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

学生赶紧去写测试。
留下一些打滑的痕迹。

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

不要被单元测试的教条所捆绑
教条说:
“做这个。
只做这个。
只用这种方法来做。
因为我叫你做,你就做。”

教条是不灵活的。
测试需要灵活。

教条扼杀创造性。
测试需要创造性。

拥抱单元测试的信条
信条说:
“做好事,好事就会发生。
用你所知道的方法来做。
用你喜欢的方法来做。”

信条是灵活的。
测试需要灵活。

信条依靠创造性。
测试需要创造性。

统一考虑编码和测试
当你写代码的时候,考虑测试。
当你些测试的时候,考虑代码。

当你统一考虑测试和代码的时候,
测试很简单,但吗很美丽。

测试比单元更重要
学生问伟大的程序员大师Flying Feathers:
“是什么使一个测试称为单元测试。”

这个问答的程序员大师回答:
“如果它跟数据库对话,它不是一个单元测试。
如果它通过网络通讯,它不是一个单元测试。
如果它接触文件系统,它不是一个单元测试。
如果它不能在同一时间和其它任何单元测试一起运行,它不是一个单元测试。
如果你有一些特殊的环境来运行它,他不是一个单元测试。”

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

“对不起,我问了这个问题。”学生说。
那个晚上后来他接到了一个更伟大的程序员大师的字条。字条上说:

“那个伟大的程序员大师Flying Feathers的回答不是一个优秀的指导。
遵守它,大部分时间你都没法做好。
但你不需要被任何教条捆绑。
就写你需要的测试。”

学生睡得很好。
其它大师继续争论到漫漫长夜。

测试的最好时间是当你的代码还新鲜的时候
你的代码就像粘土。
新鲜的时候,它很软,可塑。
随着时间过去,他变得坚硬,脆弱。

如果你在代码新鲜的时候写测试,
容易改变,测试很简单。
代码和测试都变得更强。

测试不运行很浪费
经常运行你的测试。
不要让他们变馊。
当他们通过的时候值得高兴。
当他们失败的时候也值得高兴。


今天不完美的测试比某天完美的测试更好
完美是好的敌人。
不要等待最好,而要做得更好。
不要等待更好,要把它做好。
写你今天能写的测试


一个丑陋的测试比没有测试好
当你的代码很丑陋的时候,你的测试可能也很丑陋。

你不喜欢写丑陋的测试。
但丑陋的测试比没有测试好。

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


有时候,测试证明方法是对的
学生问两个程序员大师:
“我不能不通过Moking和违反封装来测试这段代码,
我该怎么办?”

一个程序员大师回答:
“Mocking不好,你不应该违反封装。
重写这段代码来使你正确的测试它。”

另一个程序员大师回答:
“Mocking好,测试胜过封装。”

学生迷惑了,出去喝啤酒。
在一个水池边,他看到了最伟大的程序员大师一边喝啤酒,一边吃布法罗辣鸡翅。
“最伟大的程序员大师,”学生说,“我以为你不喝酒,
你不是素食者么?”

大师笑着回答:
“有时候,啤酒能够治疗你的口渴,
而鸡翅能治疗你的饥饿啊。”

学生不再困惑了。

只有傻瓜不用工具
农夫不用犁不是一个好农夫。

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

有些任务最好用手来做。
有些任务最好用工具。

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


好的测试会失败
学生走到大师程序员跟前说:
“我所有的测试一直都通过。难道我不应该晋升么?”

大师打了学生一个耳光,说:
“如果你的测试一直是通过的,那么你需要些更好的测试。”

学生摸着红红的脸颊到HR那里告状。
但那是另外一个故事了。

Testivus之路
如果你写代码,写测试
不要被单元测试的教条所捆绑
拥抱单元测试的信条
统一考虑代码和测试
测试比单元更重要
测试的最好时间是当你的代码还新鲜的时候
测试不运行很浪费
今天不完美的测试比某天完美的测试更好
一个丑陋的测试比没有测试好
有时候,测试证明方法是对的
只有傻瓜不用工具
好的测试会失败


中文版PPT:
http://wenku.baidu.com/view/9d18e64069eae009581bec19.html?st=1

猜你喜欢

转载自shijunjuan.iteye.com/blog/1683253