本节书摘来自华章计算机《 测试反模式:有效规避常见的92种测试陷阱》一书中的第1章,第1.4节,作者:(美) Donald G. Firesmith 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.4 为何测试很关键
国家标准和技术研究院(NIST)的报告[NIST 2002]指出,不足的测试方法和工具每年花费美国经济在222亿美元~595亿美元之间,有大约一半的费用由软件开发商以额外的测试的形式承担了,而另一半则由软件的用户以故障避免和缓解的工作量的形式承担了。同一项研究指出,25%~90%的软件开发预算通常花费在测试上。
测试是目前最重要的在系统开发和维护过程中使用的标准的验证和确认方法。这并不是因为测试一定是用最有效的方式来验证系统是否如它应该的表现。(参阅表1.1。)相反,这是因为与其他类型的验证总和比起来,更多的精力、资金和时间都花费在测试上。
根据Capers Jones所述,大多数形式的测试只能发现约35%的代码缺陷[Jones 2013b]。类似地,平均来说,单个程序员在自己的软件中发现了不到一半的缺陷。
例如,Capers Jones分析了在2013年年初完成的项目的缺陷识别有效性的数据,并将结果总结在表1.1中[Jones 2013a]。由此,使用需求审查发现了需求缺陷的87%和所有软件及其文档的缺陷的25.6%。类似地,代码的静态分析发现了代码缺陷的87%和所有缺陷的33.2%。最后,使用所有这些静态验证方法的项目发现了所有缺陷的95%。
" >
如表1.2所示,静态验证方法能更有效地累计发现缺陷,令人奇怪的是除了文档缺陷之外。