乐于分享
好东西不私藏

软件评测师考试2周冲刺指南:白盒测试覆盖率语句覆盖、分支覆盖、条件覆盖路径覆盖实例讲解

软件评测师考试2周冲刺指南:白盒测试覆盖率语句覆盖、分支覆盖、条件覆盖路径覆盖实例讲解
⚡ 下午卷203题固定考点 · 独立模块必须拿下
白盒测试覆盖率计算是软件评测师考试的必考题型给你一段代码或程序流程图,让你计算语句覆盖、分支覆盖、路径覆盖所需的最少测试用例数。今天这篇文章,通过实例帮你彻底搞懂,考到就是送分!
白盒测试概述

白盒测试(White-box Testing)又称结构测试、逻辑驱动测试,是根据被测程序的内部结构设计测试用例的方法。

白盒测试的核心:看代码设计测试用例,覆盖程序的逻辑路径
对比项
白盒测试
黑盒测试
关注点
内部逻辑结构
外部功能行为
测试依据
源代码、详细设计
需求规格说明书
适用阶段
单元测试
系统测试、验收测试
测试人员
开发人员
测试人员
六种覆盖率类型

白盒测试的覆盖率指标用于衡量测试的充分性,从弱到强依次为:

⚠️ 覆盖强度对比(必记!)

语句覆盖 < 判定覆盖 ≤ 条件覆盖 < 判定/条件覆盖 < 条件组合覆盖 ≤ 路径覆盖

圈复杂度与独立路径数
圈复杂度(Cyclomatic Complexity)是McCabe提出的一种软件度量,用于衡量程序的复杂程度,也等于程序的独立路径数

McCabe圈复杂度公式

V(G) = E - N + 2

E = 控制流图的边数N = 控制流图的节点数

另一个常用公式

V(G) = P + 1

P = 判定节点的数量(if/while/for等分支数)

💡 公式选择建议

  • 如果给出了程序流程图
    :用 V(G) = E - N + 2
  • 如果只给出代码
    :用 V(G) = P + 1,数一数有几个if/while等判定
  • 两个公式计算结果相同,选择方便的计算方式即可
实例讲解

示例程序

📝 程序代码

if (A > 1 && B == 0) {    X = X / A;    }if (A == 2 || X > 1) {    X = X + 1;}return X;

① 语句覆盖

② 判定覆盖(分支覆盖)

③ 条件覆盖

④ 路径覆盖

覆盖率对比总结

覆盖类型
关注点
本例用例数
强度
语句覆盖
语句是否执行
1个
最弱
判定覆盖
判定的真假分支
2个
较弱
条件覆盖
每个条件的真假
2个
中等
判定/条件覆盖
判定+条件同时满足
2~4个
较强
条件组合覆盖
条件的所有组合
4个以上
较强
路径覆盖
所有独立路径
3~4个
最强
真题演练
答题技巧

✅ 下午卷203题答题步骤

  1. 画出控制流图
    :根据代码画出程序的控制流图
  2. 标注节点和边
    :给每个节点和边编号
  3. 计算圈复杂度
    :V(G) = E - N + 2 或 V(G) = P + 1
  4. 找独立路径
    :列出所有独立路径
  5. 设计测试用例
    :为每条路径设计输入数据
  6. 写出预期输出
    :根据程序逻辑计算预期结果