← 中文资源

简体中文版本

测试覆盖缺口分析工作流

把覆盖率对照变更频率与故障历史,优先补"高频变更低覆盖"象限,按缺口闭合度量进展。

阅读英文原文

目标

把总覆盖率从 71% 提到 74% 很容易——给稳定的工具类文件补测试就行。而风险真正住在那些每周都在改、上过两次事故、覆盖率只有 34% 的文件里。象限分析(覆盖率 × 变更频率 × 事故史)把测试力气精准砸向那里,全局百分比几乎不动,风险却实实在在下降。

步骤要点

  1. 覆盖率联结变更频率:对每个模块做覆盖率对每月提交数的散点,圈出“高频变更低覆盖”象限并排名。
  2. 叠加事故历史:标记近两个季度引发过生产事故的文件,把它们置顶到缺口队列最前面。
  3. 按类型分类缺口:区分缺失的是正常路径、错误处理、边界值还是集成缝隙,各自对应不同测试写法。
  4. 按缺口而非百分比写测试:对顶部缺口按类型补测试,接受全局百分比微动而风险大降,注入 bug 时新测试应能失败拦截。
  5. 设变更触发的文件级门禁:象限内文件的 PR 要么维持要么提升该文件覆盖率,防止缺口重新打开。

排错提示

总覆盖涨了但事故文件还是裸奔是百分比幻觉,看文件级而不是仓库级;补的都是正常路径说明分类没做,错误处理与边界才是事故的重灾区;缺口修了又开是没上门禁,对高风险文件做覆盖率不降检查。

适用边界

象限分析的价值依赖变更与事故数据的准确性,映射不完整的仓需要先修文件归因;覆盖率高不等于测得好,断言质量仍需评审把关。

代码示例

quadrant (coverage x churn/month):
                 low churn      high churn
  high cover       61% of code     22%   (fine)
  low cover        14%   (later)   3%    (FIRST)

top of queue (incident-marked):
  checkout/promo.ts     34%  9 commits/mo  2 incidents
  api/webhooks.ts       21%  7 commits/mo  1 incident
  (utils/string.ts      88%  0 commits/mo      -- skip)

gap types: promo.ts -> boundary + error paths
  12 tests added; global % moved 71.2 -> 71.9 (risk: down)