1.5 测试的局限性

尽管因其关键本质,测试具有许多陷阱,使得它远不如应有的有效和高效。当已完成的系统投入运行时,仍有相当数量的遗留缺陷,从这个意义上讲,测试相对是无效的。当考虑到查找缺陷所花费的大量精力、资金和时间时,测试也是相对低效的。

据Capers Jones所述,大多数类型的测试只能发现约35%的软件缺陷[Jones 2013]。这与后面更详细的关于缺陷检出率作为测试类型和测试能力的函数的分析一致,如表1.3所示[McConnell 2004]。

表1.3 缺陷检出率

来源:McConnell 2004

如表1.4所示,无论何种缺陷类型,没有任何单一类型的测试在发现缺陷时非常有效。即使在一个一般的项目上使用所有这些测试方法时,仍然只能识别出4/5的代码缺陷。

表1.4 缺陷检出率

来源:Jones 2013b