第七章 软件测试编码完成之后, 就是对源程序进行测试
软件测试是一项“劳民伤财”的工作,统计表明,开发大规模的软件,有40% 以上的精力是耗费在软件测试上( 40-20-40 规则, Myers 认为软件测试占大约50% 的项目时间和超过50% 总成本)
为了保证软件的正确可靠、为了防患于未然,无论怎样强调软件测试的重要性,都不过分
关于软件测试, 曾有种种似是而非的说法,众多的术语和测试技术,也常使我们眼花缭乱
在这里我试尝给大家勾画出一个清晰的逻辑轮廓
1 基本概念7
1 软件测试的目的(与地位)说测试不能不提到G
Myers 的经典著作 《软件测试技巧》 ,他在书中说道:“测试是为了 发现错误 而执行程序的过程
Dijkstra则说:“程序测试能证明错误的存在,但不能证明错误不存在
”在这里, 他们明确指出: 测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错
(其实你也证明不了)在软件开发过程中,分析、设计、编码等工作都是建设性的,唯独测试带有“破坏性”,因为它抱着“吹毛求疵”的目的,明确宣布要在程序中“找岔子”
他们认为这种吹毛求疵的态度是至关重要的(态度决定一切
如果你是为了证明程序无错而去进行测试,错误就可能在你的眼皮底下漏过, 反之, 只要你抱着证明程序有错的目的去测试,就会尽心尽力去找程序中的错误
根据 Myers 的说法,测试又是一个“(在计算机上)执行程序的过程”
分析和设计阶段都要对文档进行技术审查和管理复审,源程序完成后,也要进行代码复审(code review )
这些审查对减少软件错误有重要作用,但都不能代替在计算机上进行的测试,R
Pressman认为,测试可视为分析、设计、编码3 个阶段的“最终复审( ultimate review )”,可见测试在软件质量保证中的重要地位
现在我们干脆把M