《软件测试的艺术》读书笔记(第三章)
第三章:代码检查、走查与评审
前言:
多年以来,软件界的大多数人都持有这样一个想法,即编写程序仅仅是为了提供给机器执行,并不是给人们阅读的,软件测试的唯一方法就是在计算机上执行它。20世纪70年代早期,一些程序员最先意识到阅读代码对于构成完善的软件测试和调试手段的价值,通过他们的努力,原有的观念开始发生变化。
今天,并不是所有的软件测试人员都要阅读代码,但是研读程序代码作为测试工作的一部分,这个观点已经得到了广泛认同。
因此,我们在基于计算机的测试技术之上提出了人工测试技术。
[3] [1] 代码检查
代码检走查以及可用性测试是三种主要的人工测试方法。这些测试方法可以应用在软件开发的任何阶段,包括一个应用程序编码基本结束或者每一个模块(单元)编码结束之后。
所谓代码检查就是以组为单位阅读代码,然后进行以下两条活动:
- 由程序编码人员逐条讲述程序的逻辑结构。在讲述过程中,小组的其他成员应提问题、判断是否存在错误。在讲述过程中,很可能是程序编码人员本人而不是其他小组成员发现大部分错误。换句话说,对着大家大声朗读程序,这种简单的做法看起来是一个非常有效的错误检查方法。
- 参考常见的错误编码列表分析程序(错误列表将在下一节中介绍)。
代码检查的衍生功效:
- 程序员通常会得到编程风格、算法选择及编程技术等方面的反馈信息。
- 其他参与者也可以通过接触程序员的错误和编程风格而同样受益匪浅。
- 代码检查能够尽可能早的返现程序中脆弱的部分。
[3] [2] 用于代码检查的错误列表
代码检查过程的一个重要部分就是对照一份错误列表,来检查程序是否存在常见错误。
该错误列表很大程度上是独立于编程语言的,也就是说,大多数错误都可能出现在任意语言编写的程序中。
[3] [2] [1] 数据引用错误
- **是否有引用的变量未赋值或未初始化?**这可能是最常见的编程错误,在各种环境中都可能发生。在引用每个数据项(如变量、数组元素、结构中的域)时,应试图非正式地“证明”该数据项在当前位置具有确定的值。
- 对于所有的数组引用,是否每一个下标的值都在相应维规定的界限内?
- 对于所有的数组引用,是否每一个下标的值都是整数? 虽然在某些语言中这不是错误,但这样做是危险的。
- 对于所有的通过指针或引用变量的引用,当前引用的内存单元是否分配? 这就是所谓的“虚调用”(dangling reference)错误。当指针的生命周期大于所引用内存单元的生命周期时,错误就会发生。当指针引用了过程中的