侧边栏壁纸
博主头像
colo

欲买桂花同载酒

  • 累计撰写 1823 篇文章
  • 累计收到 0 条评论

测试覆盖率的基本概念与计算

2025-12-11 / 0 评论 / 4 阅读

题目

测试覆盖率的基本概念与计算

信息

  • 类型:问答
  • 难度:⭐

考点

测试覆盖率的定义,覆盖率类型,简单计算

快速回答

测试覆盖率是衡量测试完整性的指标,表示被测代码被测试执行的程度。主要类型包括:

  • 语句覆盖率:被执行的代码行比例
  • 分支覆盖率:代码中逻辑分支被覆盖的比例
  • 路径覆盖率:代码执行路径被覆盖的比例

计算公式:
覆盖率 = (已覆盖的代码单元数 / 总代码单元数) × 100%

解析

1. 测试覆盖率原理

测试覆盖率量化测试用例对源代码的覆盖程度,是评估测试有效性的基础指标。核心目标是识别未被测试的代码区域,降低未测试代码带来的风险。

2. 主要覆盖率类型

  • 语句覆盖率:最基础指标,计算被执行的代码行比例
    示例:
    function sum(a, b) {
      if (a > 0) {  // 分支1
        return a + b; // 语句1
      }
      return b;     // 语句2
    }
    若测试仅调用sum(1,2),则:
    - 语句覆盖率 = 2/3 ≈ 66.7%(未执行语句2)
  • 分支覆盖率:衡量逻辑分支(如if/else)的覆盖情况
    上例中:
    - 分支覆盖率 = 1/2 = 50%(未覆盖a≤0的分支)
  • 路径覆盖率:覆盖所有可能的执行路径(高阶指标,初级较少要求)

3. 计算示例

假设函数有:
- 总语句数:10行
- 测试执行了:7行
覆盖率 = (7/10) × 100% = 70%

4. 最佳实践

  • 目标设定:根据项目风险设定合理阈值(如核心模块≥80%)
  • 工具使用:结合JaCoCo(Java)、Coverage.py(Python)等自动化工具
  • 关注重点:优先保证关键路径和复杂逻辑的覆盖

5. 常见错误

  • 追求100%覆盖:高覆盖率≠高质量测试,可能包含无效断言
  • 忽略分支覆盖:仅看语句覆盖会遗漏未测试的逻辑分支
  • 工具误读:未排除配置文件和测试代码本身

6. 扩展知识

  • 行覆盖 vs 分支覆盖:行覆盖更易达到,分支覆盖更能暴露逻辑缺陷
  • 覆盖率陷阱:覆盖率高仍可能遗漏边界条件(如sum(0,5)
  • 进阶指标:条件覆盖、MC/DC覆盖(航空等高安全领域)