python编程导论_第四课

2018-07-27  本文已影响0人  fourup

Chapter 6 测试和调试

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

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

黑盒测试

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

白盒测试

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

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

执行测试

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

调试

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

Chapter 7 异常和断言

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

异常

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

断言

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

习题总结

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

上一篇下一篇

猜你喜欢

热点阅读