首页/开发/软件测试速查/测试覆盖率基础
测试基础与分层67 条

测试覆盖率基础

覆盖率度量测试执行了多少被测对象:代码行、分支、条件、路径与需求覆盖等;它是必要性与盲区指标,不是质量结论。

软件测试速查开发更新于 2026-10-13

测试覆盖率是什么

覆盖率度量测试执行了多少被测对象:行覆盖、语句覆盖、分支覆盖、条件覆盖、路径覆盖、需求覆盖等口径各有侧重。它回答的是「哪些代码没被跑到」,是发现盲区的工具;但它不度量断言质量——跑过一行代码不等于验证了这行的行为。把覆盖率当方向灯而不是终点线,才不会掉进刷数字的陷阱。

基本信息

常见口径行覆盖、语句覆盖、分支覆盖、条件覆盖、路径覆盖、需求覆盖
获取方式覆盖率工具(coverage.py、JaCoCo、Istanbul 等)配合测试执行数据
使用方式增量覆盖率做门禁,覆盖缺口清单做改进输入
审阅方式定期抽样阅读未被覆盖的代码段
度量边界覆盖率高不等于质量高,只说明执行过

常见口径对照

口径测什么主要盲区
行/语句覆盖每行代码是否执行过条件只走一个分支也算覆盖
分支覆盖if/else 等分支两个方向多条件组合仍可能漏
条件覆盖每个布尔条件的真假取值条件间组合关系不保证
路径覆盖执行路径的组合路径数爆炸,实际难全做
需求覆盖需求项是否有用例对应依赖需求拆分质量

典型使用场景

  • 增量门禁:新代码覆盖率低于阈值则 CI 报警或阻断。
  • 盲区清单:列出未覆盖代码段,人工判断哪些需要补用例。
  • 重构安全网:改动前确认相关代码有执行覆盖再动手。
  • 发布证据:向干系人展示关键模块的覆盖情况与趋势。
  • 评审输入:结合覆盖缺口讨论用例设计的遗漏原因。
  • 工具选型:按语言生态选择 coverage.py、JaCoCo、Istanbul 等。
高覆盖率不等于高质量:断言缺失的测试也能贡献覆盖率。覆盖率应结合缺陷数据与评审判断。
门禁盯增量更合理:新代码要求高覆盖,老代码看趋势改善;一刀切的全量阈值会把老项目直接冻结。
覆盖缺口要有人读:工具产出的未覆盖清单应定期抽样审阅,转化为用例或明确的「不需要覆盖」结论。

易错点

  • 把覆盖率当作考核指标:写无断言测试刷数字,看着 90% 实际质量没动。
  • 只统计行覆盖:条件与分支盲区未被发现,边界逻辑全靠运气。
  • 对老项目设全量高阈值:CI 永远红灯,团队习惯性忽略告警。
  • 覆盖率工具配置不当:分支模式未开启,报告的覆盖率虚高。
  • 追着数字补测试不考虑价值:为 2% 的历史遗留代码写大量廉价用例,投入产出失衡。

数据来源与参考

  • coverage.py 官方文档(coverage.readthedocs.io)
  • JaCoCo 官方文档(jacoco.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌