`
shijunjuan
  • 浏览: 46924 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

单元测试十二信条

阅读更多
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
分享到:
评论

相关推荐

    高一语文上册第四单元综合测试.doc

    8. 玄学与儒家信条:玄学是魏晋时期的一种哲学思潮,与儒家信条有所不同,谢灵运的山水诗中体现了玄学的哲理和对自然美的追求。 9. 文化历史背景:山水诗的发展与当时的社会文化背景紧密相连,反映了不同时期文人士...

    软件测试基本原理08261768

    这意味着在软件开发的每个阶段都应当进行质量评估和控制,例如代码审查、单元测试、集成测试等。通过这种方式,可以在早期发现并纠正错误,从而减少后期修复的成本和时间。 #### 原理三:模块化设计 模块化设计是...

    刺客(Java游戏).rar

    JAR文件是Java类文件和其他资源(如图像、声音等)的集合,被压缩在一个单一的可下载单元中。这种打包方式有利于减少网络传输的时间,同时也方便了代码的管理和分发。Java虚拟机在运行时会解压JAR文件,并加载其中的...

    SwiftFanorona:和斯威夫特一起玩。 Fanorona 是我最喜欢的一些刺客信条游戏中常见的游戏

    7. **测试和性能优化**:通过Xcode的集成测试工具,开发者可以编写单元测试和集成测试来确保游戏逻辑的正确性。此外,Swift的性能分析工具可用于识别和优化代码瓶颈。 8. **版本控制与协作**:项目名中的...

    NPDP全真模拟考试题.pdf

    19. 在一次冲刺迭代中完成的小工作单元是Product Backlog Item,对应选项A。 20. 产品开发流程初期,快速了解市场机会、技术需求和能力是首要任务,对应选项C。 21. 识别和创造性地解决问题的方法是设计思维...

    AAA级

    10. 软件测试:在测试领域,"AAA级"测试可能意味着全面的测试覆盖,包括单元测试、集成测试、系统测试和用户验收测试,以确保产品质量。 综上所述,"AAA级"是一个广泛使用的术语,涵盖了IT行业的多个方面,每个领域...

    TronNet:使用Node.js和Socket.io的多人Javascript Tron游戏

    10. **测试与部署**:学习如何编写单元测试和集成测试,以及如何将项目部署到云服务器或平台,如Heroku或AWS。 以上就是围绕TronNet项目可能涉及的技术和知识点,深入学习这些内容可以帮助开发者创建自己的多人在线...

Global site tag (gtag.js) - Google Analytics