python编程导论_第四课

Chapter 6 测试和调试

本章谈论测试和调试。我们写出的的代码,往往不会在第一次测试时就能顺利运行。所以我们需要测试代码,以确定是否可能有错误。我们还将讨论调试的相关技术。

测试的目的主要是证明错误的存在,而不是证明程序没有错误。在测试时,我们经常需要将代码和规范结合起来,进行各种路径探索。基于代码探索路径的方式成为白盒测试,基于规范探索路径的方式成为黑盒测试。

黑盒测试

我们通过特定规范执行路径。测试者和开发者是独立的,因此测试套件不会受代码中错误的影响,且具体实现改变时,测试套件仍然适用。由于规范经常是不完整的,很难估算黑盒测试对输入空间的覆盖程度。

白盒测试

我们通过代码执行路径。由于代码中反映的路径定义得非常清楚,白盒测试套件对输入空间的覆盖程度相对比较容易故事。白盒测试需要尽量保证路径完备性,如果白盒测试套件可以测试程序中所有潜在路径,我们就认为它是路径完备的。但很多时候,路径完备不可能达成,比如循环或递归,它们取决于循环次数和递归深度。

白盒测试提供了一些经验准则:

  • 测试所有if语句的所有分支。
  • 必须测试每个except子句(参见第7章) 。
  • 对于每个for循环,需要以下测试用例:
    • 未进入循环(例如,如果使用循环遍历列表中的所有元素,则必须测试空列表);
    • 循环体只被执行一次;
    • 循环体被执行多于一次;
  • 对于每个while循环:
    • 包括上面for循环中的所有用例;
    • 还要包括对应于所有跳出循环的方式的测试用例。例如,对于以while len(L) > 0 and not L[i] == e开始的循环,测试用例应该包括因为len(L)不大于0和因为L[i] == e而跳出循环的情况。
  • 对于递归函数,测试用例应该包括函数没有递归调用就返回、只执行一次递归调用和执行多次递归调用的情况。

执行测试

测试一般分为两个阶段。第一个阶段称为单元测试。在这个阶段中,测试者构建并执行测试,用来确定代码的每个独立单元(例如,函数)是否正常工作。第二个阶段称为集成测试,用来确定整个程序能否按预期运行。在实际工作中,测试者会不断重复这两个阶段,因为如果集成测试没有通过,那就还需要对单个模块做出修改。

调试

调试就是定位出我们代码中错误的位置。我们会将调试作为一个搜索过程,每次实验就要尽力缩减搜索空间。最好的方法是使用二分查找,分离并检测错误的来源。

Chapter 7 异常和断言

本章我们将学习两种方法,以处理Python代码不按预期运行或者不正常运行。
第一种叫做异常,其中代码会从结构方面处理非预想中的情况,从而用户可以理解代码怎么出错了以及可能的解决方法。
第二种我们将处理断言,这种方法能够保证我们所给出的所有输入输出的假设都正确。

异常

程序发生异常时,没有必要导致程序终止,而应该由程序进行处理。如果知道了代码可能发生异常,那么我们应该处理异常。
异常也可以用作控制流,使程序更加简洁。

断言

Python语言中的assert语句为程序员提供了一种确保程序状态符合预期的简单方法。

习题总结

L7 PROBLEM 4
白盒测试除了考虑路径完备性,还有一些常见的经验规则值得我们参考。Problem4考查的是递归函数的经验准则:测试用例应该包括没有递归调用、一次递归调用和多次递归调用的情况。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容