覆盖率阈值是什么
为覆盖率设通过线并接入流水线:行覆盖、分支覆盖、函数覆盖率任一或组合达线,才允许合并或发布。阈值应基于当前基线渐进提高,关注增量代码与关键模块,而不是一次拉到远期目标;覆盖率是过程指标,为数字补无断言测试反而增加维护成本。
基本信息
| 常见指标 | 行覆盖率、分支覆盖率、函数覆盖率 |
|---|---|
| 设置方式 | 项目整体阈值或增量代码阈值 |
| 数据来源 | JaCoCo、coverage.py、Istanbul 等报告 |
| 渐进策略 | 基线之上逐步上调,例如每季度加两个百分点 |
| 展示 | 报告接入合并请求页面,显示覆盖率变化 |
典型使用场景
- 合并门禁:新增代码覆盖率低于线不放行。
- 整体警戒:总体覆盖率不得低于当前记录基线。
- 关键模块加严:核心路径单独设更高要求。
- 趋势调整:按季度把基线向上修正。
- 报告归档:覆盖率数据随版本可追溯。
pytest 覆盖率阈值
pytest 覆盖率阈值
- name: Tests with coverage
run: pytest --cov=app --cov-fail-under=80JaCoCo 阈值规则片段
JaCoCo 阈值规则片段
<rule>
<element>BUNDLE</element>
<limits>
<limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit>
</limits>
</rule>指标与盲区
| 指标 | 含义 | 盲区 |
|---|---|---|
| 行覆盖率 | 执行过的代码行比例 | 有执行无断言也算 |
| 分支覆盖率 | 条件分支走过比例 | 复杂逻辑的真正重点 |
| 增量覆盖率 | 新代码覆盖比例 | 比总量更公平 |
覆盖率是过程指标:为数字补无断言的测试,反而增加维护成本。
报告格式要统一,JaCoCo、Cobertura、lcov 等标准格式平台才能解析,把覆盖率挂到合并请求上展示差异。
阈值别一次性定到远期目标:历史缺口会堵住所有人,先在基线附近设线再逐步抬高。
报告要能跳转定位:只看百分比不够,未覆盖的行与分支应能一键打开对应报告页面。
统计口径写进文档:排除哪些目录、合并哪些套件,团队按同一口径解读数字。