软件测试的艺术(原书第3版)
上QQ阅读APP看书,第一时间看更新

第3章 代码检查、走查与评审

多年以来,软件界的大多数人都持有一个想法,即编写程序仅仅是为了提供给机器执行,并不是供人们阅读的,软件测试的惟一方法就是在计算机上执行它。20世纪70年代早期,一些程序员最先意识到阅读代码对于构成完善的软件测试和调试手段的价值,通过他们的努力,原有的观念开始发生变化。

今天,并不是所有的软件测试人员都要阅读代码,但是研读程序代码作为测试工作的一部分,这个观念已经得到了广泛认同。以下几个因素会影响到特定的测试和调试工作需要人工实际阅读代码的可能性:软件的规模和复杂度、软件开发团队的规模、软件开发的时限(例如时间安排表是松散还是紧密)等,当然还有编程小组的技术背景和文化。

基于这些原因,在深入研究较为传统的基于计算机的测试技术之前,我们首先讨论非基于计算机测试的过程(即“人工测试”)。人工测试技术在查找错误方面非常有效,以至于任何编程项目都应该使用其中的一种或多种技术。应该在程序开始编码之后、基于计算机的测试开始之前使用这些方法。同样,也可以在编程过程的更早阶段就开始设计和应用类似的方法(例如在每个设计阶段的末尾),但是这些内容超出了本书讨论的范围。

在开始讨论人工测试技术之前,有一条重要的注意事项:由于包含了人为因素在内,导致很多方法的正规性要差于由计算机执行的数学证明,人们可能会怀疑某些如此简单和不正规的东西是否有用。反之亦然。这些不正规的方法并没有妨碍测试取得成功;相反,它们从以下两个方面显著地提高了测试的功效和可靠性。

首先,人们普遍认识到错误发现得越早,改正错误的成本越低,正确改正错误的可能性也越大。其次,程序员在开始基于计算机的测试时似乎要经历一个心理上的转变。从内部产生的压力似乎会急剧增长,并产生一个趋势,要“尽可能快地修正这个缺陷”。由于这些压力的存在,程序员在改正某个由基于计算机测试发现的错误时所犯的失误,要比改正早期发现的问题时所犯的失误更多一些。