专栏搜索: 作者 标题

0

支持

文章标题载入中...

作者:博客中国 2007-05-28 12:34:56 发表于:博客中国

点击收拢文章正文

“测试引导的“,英语有好几种表达如”Test-First“、”Test-Centric“、“Test-Driven”等等,测试引导的编程技术代表一种测试文化(Test Culture)为基础的技术哲学。我使用Mark Pilgrim写得书《Dive Into Python》(里面的13和14章)介绍测试引导的编程技术,看这里的朋友有没有兴趣。Pilgrim同学是学哲学专业的,想必对于编程的方法和技术哲学有更深的认识。在数学上有一种说法:用了一两次碰巧解决问题的是技巧,屡试不爽的技巧就成为了方法。方法就是工业行业标准生产技术和标准工艺流程了,所以我们把这叫做“工程方法”。工程方法的特征是“试错方法”,就是英语说的Trial-and-Error Method。任何工程都包含一个类似的阶段,要进行理论计算和理论设计,然后是实验测试阶段,取得工程设计数据,弥补理论计算和理论设计阶段不能回答的问题,最后制定设计方案。第一,任何工程都应该编写测试套件;第二,任何工程开始之前都应该首先编写测试套件。测试引导的工程方法有以下优势(我完全是照抄Pilgrim同学的):


  • 代码开发之前,强迫你以有效的方式考虑需求的细节。
  • 代码开发中,防止过度开发。通过了所有测试用例,程序的开发就完成了。
  • 重构代码时,确保新版和旧版功能一致。
  • 维护代码时,当你的代码更改导致别人代码出问题时帮你留住面子。你可以说:“但是先生,我检查代码时所有的单元测试都通过了......“。
  • 在团队开发时,可以使你有信心,保证自己提交的代码不会破坏其他人的代码,因为你可以先运行其他人的单元测试代码。没有人会出太大的偏差而导致代码无法集成。


Pilgrim同学用一个简单的实例来解释测试引导的工程方法,这是一个转换罗马数字-阿拉伯数字的应用程序,名字是roman.py 。从阿拉伯数字变到罗马数字的转换函数是toRoman(),把罗马数字转换成阿拉伯数字的是函数fromRoman(),它们的功能要求:


  1. toRoman 应该能返回 13999 中任意数的罗马数字表示。
  2. toRoman 在遇到 13999 之外的数字时应该失败。
  3. toRoman 在遇到非整数时应该失败。
  4. fromRoman 应该能将给定的有效罗马数字表示转换为阿拉伯数字表示。
  5. fromRoman 在遇到无效罗马数字表示时应该失败。
  6. 将一个数转换为罗马数字表示,再转换回阿拉伯数字表示后应该和最初的数相同。因此,fromRoman(toRoman(n)) == n 对于 1..3999 之间所有 n 都适用。
  7. toRoman 返回的罗马数字应该使用大写字母。
  8. fromRoman 应该只接受大写罗马数字 (也就是说给定小写字母进行转换时应该失败)。


在开发roman.py前,根据转换函数的要求先行开发测试组件,名字romantest.py 。roman.py开发几个了五个阶段,每一步都用测试组件romantest.py来测试:import unittest,并且分别import roman1.py来测试开发roman1的效果;其他对roman2.py、roman3.py、roman4.py和romgn5.py做同样的步骤。Python的测试包名字是Unittest。
  • 上一篇:

  • 下一篇:

发表评论

称  呼:    要留下称呼请注册(或者登录)博客中国帐号

主  页:

内  容:

[刷新评论] [更多评论]文章评论


  • 载入中,请稍后...
[郑重声明] 博客中国刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何投资或其他建议。转载需经博客网同意并注明出处。本网站有部分文章是由网友自由上传。对于此类文章本站仅提供交流平台,不为其版权负责。

百度提供的广告

我的导航

徒步者:hxianping@gmail.com

反病毒中心

博客中国48小时文章排行

48小时点击排行
48小时热评排行
48小时支持排行

博客中国精彩互动图文

博客中国最新文章列表

主编信箱| 关于本站| 广告服务| 联系我们| 服务条款| 隐私保护| 客服中心| 人员招聘| 友情链接| 导航| 注册
Copyright 2002 - 2005 Bokee.com, All Rights Reserved