100% 代码覆盖率是否意味着已测试? 笔记

100% 代码覆盖率是否意味着已测试?

有一个工程组织乐于报告、工程领导者乐于接收的数字:100% 代码覆盖率。它具有一种令人满足的完整性特质。但这种完整性究竟指什么?它暗示每一行代码都已被测试,每一个分支都已被检查,每一个条件都已被验证。它看起来像是工作圆满完成的一份数学证明。然而事实并非如此。在许多组织中,这个数字所承诺的内容与其实际交付的内容之间的差距,是质量项目中代价最高昂的误解。代码覆盖率衡量的是测试执行的代码比例,而非测试验证的行为比例。这两者截然不同,将二者混淆会导致产生覆盖率良好却危险地测试不足的系统。工程师知晓覆盖率数值,高管信任覆盖率数值,而系统则以覆盖率数值无法检测的方式发生故障。