知识卡片
测试状态覆盖
内容
代码覆盖率只能说明哪些行被执行过,不能说明重要状态是否被验证。更有价值的是覆盖业务状态、边界和失败路径,让测试网真正捕获会伤人的缺陷。
参考来源
- 位置:《程序员修炼之道:通向务实的最高境界(第2版)》第9章《务实的项目》话题51「务实的入门套件」(源文件:_epub-src/text/part0018_split_003.html)
- 结论依据:原文用一个接受两个整数的三行函数为例,说明代码行覆盖率无法反映100万个逻辑状态中哪个会出错,主张测试应覆盖状态而非代码行,直接支持卡片论点。
- 原始内容:"重要的是程序可能具有的状态数。状态和代码行并不等价。……这个三行的函数有1,000,000个逻辑状态,其中999,999个可以正常工作,而另一个则不能……提示93 测试状态覆盖率,而非代码覆盖率。"