计算机科学及编程导论(麻省理工)

计算机科学及编程导论(麻省理工)

5 (18人评价)
  • 课时:(24)

  • 学员:(655)

  • 浏览:(25702)

  • 加入课程

测试与调试的笔记

相关课时:
测试与调试2012-12-01
笔记详情:

Lecture 11: Testing and debugging

 

本节课主要讲了两个内容,正如标题所述,测试和调试。测试和调试多有不同之处,而本课的偏重点在于基本概念,或者说理论基础。因此,本课并没有举出程序例子。

 

测试和调试是两种不同的过程。测试(Testing)是比较多组输入值和输出值,看是否符合题目要求或规格说明书(Specification)。而调试(Debugging)则是找出程序中的错误并加以改正的过程。

测试有两种不同的分类,如下:

  • 单元测试(Unit Test):逐一验证各个单独的程序段,如函数(function)和类(class)
  • 集成测试(Integration Test):验证整个程序

调试的内容大概分为以下两个方面:

  • 方法(Function):解题的正确性
  • 性能(Performance):运算效率和速度

一个比较常用和有效的调试方法是用二分法搜索出错点,具体操作如下:

  1. 在程序中间位置输入print statement,将程序分为上下两部分;
  2. 如果输出值和预计值不符,则错误在程序上半部分;相符则在下半部分;
  3. 再将剩下的程序二分,重复操作第二步。

 

在上节课的最后提到了异常处理,上一篇笔记并没有特别详细说明,因为课上讲的内容并不是很完整。在参考《王纯业Python学习笔记》和《Python基础教程》第二版之后,整理出如下两个try-except的使用方式:

 

使用方式①(在上篇笔记中提到的格式):

    try:

        statement 1

    except ExceptionType:

        statement 2

这个使用方式的意思是这样的:

  1. 首先执行statement 1,如果没有exception也就是异常发生,那么就一切正常,跳过except继续运行程序;
  2. 如果发生了exception就比较ExceptionType,如果一致就执行statement 2;
  3. 不一致就直接返回,把exception抛给函数的调用者,判断是否和这一级的ExceptionType一致,如此一级一级向上抛,直到有try语句捕获了exception;
  4. 若没有任何try语句可以捕获exception,那么程序就异常退出,程序崩溃。

 

使用方式②(较为复杂的使用方式):

    try:

        statement 1

    except (ExceptionType1, ExceptionType2):

        statement 2

    except(ExceptionType3, ExceptionType4):

        statement 3

    except:

        statement 4

不难看出,这个使用方式相比于前一个更为高级,也更为细致。在同一级别的比较中,不同的ExceptionType可以做不同的操作。若是exception与所述的ExceptionType 1-4都不符合也有except语句去执行statement 4。这个结构就跟if-elif-elif-else的结构相似,但作用不同。

 

总结:这是一堂调试基础课,可以略过。

0 0

你感兴趣的课程

理论基础 数学之美
2万+浏览/ 704学员/ 4.4评分
免费
2万+浏览/ 931学员/ 4.7评分
¥9.90
2万+浏览/ 824学员/ 4.8评分
免费