加载中...

代码覆盖率(Code Coverage)是衡量测试执行期间源代码被运行到的比例的指标,通过在编译或运行时对代码插桩统计得到,是评估测试充分性的常用参考。
行覆盖率:被执行的代码行占比;分支覆盖率:每个条件判断的真假分支是否都被执行;函数覆盖率:被调用过的函数占比;条件覆盖率:复合条件中每个子条件的取值组合;路径覆盖率:完整执行路径的覆盖,数量随分支呈指数增长,一般只作理论参照。航空领域标准 DO-178C 还要求更严格的 MC/DC 覆盖。
各语言生态均有成熟工具:Java 的 JaCoCo、JavaScript 的 Istanbul(nyc)、Python 的 coverage.py、Go 内置的 go test -cover 等,结果可上报到 Codecov、SonarQube 等平台并在 CI 中设阈值卡点。
覆盖率高只说明代码被执行过,不代表行为被正确断言,把覆盖率当 KPI 会催生大量无断言的凑数测试。它更适合反向使用:低覆盖区域提示测试盲区。变异测试是弥补其不足的手段之一。

登录 后参与讨论
暂无讨论,来发表第一条评论吧