跳到正文

测试覆盖率

Test Coverage

中级通用

测试覆盖率(Test Coverage)表示测试触及了多少预先定义的代码或需求范围,常见口径包括代码行和分支。它帮你发现测试遗漏在哪里,例如支付失败分支从未被执行;但覆盖率高不等于测试能发现错误。

你可能会说:「帮我看看现有测试漏掉了哪些代码路径,尤其是支付失败和退款的情况。」

读之前建议先了解

动手看看

支付回调 · 测试报告
代码行覆盖率
80% · 4/5 行
100% · 5/5 行
分支覆盖率
50% · 1/2 条
100% · 2/2 条
可统计代码行
01 读取支付结果
02 判断是否成功
03 发送支付收据
04 记录失败原因
05 返回处理结果
判断结果的两条路径
支付成功 → 发送收据已执行
支付失败 → 记录原因未执行
支付失败 → 记录原因已执行
运行的测试用例
查看覆盖率口径

先切换测试用例,再切换覆盖率口径;高亮的面板会告诉你,这次统计的是代码行,还是判断后的两条路径。

只测成功支付时,失败路径从没运行过。代码行覆盖率是 4/5,分支覆盖率是 1/2;看分支更容易定位这处遗漏。

即使显示 100%,如果测试没有核对收据金额或失败原因,代码写错了也可能照样通过。覆盖率不是测试质量分数。

要点

  1. 1

    先说清楚统计的范围和口径

    你看到的百分比取决于怎么算:行覆盖率看代码行是否被执行,分支覆盖率看不同判断路径是否走到。还要确认统计包含哪些文件;同一个数字换了口径或范围,就不能直接比较。

  2. 2

    没覆盖的地方能提示测试缺口

    假设后台有一段退款逻辑,成功退款的路径被测到了,余额不足的路径却没走到。覆盖率报告能帮我们定位这个缺口,再决定是否补一条有价值的测试,而不是只盯着总百分比。

  3. 3

    执行过不等于验证过结果

    测试运行时经过某行代码,这行就可能被记为已覆盖;但如果测试没有检查退款金额或账户状态,计算错误仍可能漏掉。所以你还得看断言是否对应业务规则,不能把覆盖率当成质量结论。

容易混淆的地方

测试用例是你设计的一次输入、操作与预期结果;测试覆盖率是用某种口径衡量这些测试触及了多少范围。它也不同于测试通过率:全部测试通过,只说明现有测试没报错,没说明遗漏了多少路径。覆盖率报告适合找空白,不负责证明断言写得对。

什么时候用

适合用

  • AI Agent 刚为订单模块补完单元测试,你想检查取消、退款等分支是否仍有遗漏。
  • 准备合并一次权限逻辑修改,你想定位新代码中哪些判断路径没有被测试触及。
  • 团队要持续观察核心模块的测试缺口,可以固定统计口径,对比每次改动后的覆盖范围。

不适合用

  • 你想知道新用户能否看懂注册流程;这是体验问题,更适合做可用性测试或观察用户操作。
  • 你担心接口在高并发下响应变慢;代码覆盖率回答不了容量问题,可以改做负载测试。
  • 你要检查线上支付是否偶发失败;覆盖率看不到实际运行状况,更适合查监控和服务端日志。

练一练

AI Agent 为退款功能写了测试,报告显示行覆盖率为 92%,但余额不足时的退款处理没有测试。你接下来怎么判断?

让 AI 帮你做

请为退款模块运行测试并生成覆盖率报告,说明统计范围、行覆盖率和分支覆盖率。重点找出退款失败、重复请求等未覆盖路径;对重要缺口补测试,并写明每条测试验证了什么结果。不要只为提高百分比而增加没有有效断言的测试。

接下来学什么