白盒测试(White-box Testing)又称结构测试、逻辑驱动测试,是根据被测程序的内部结构设计测试用例的方法。
白盒测试的核心:看代码设计测试用例,覆盖程序的逻辑路径。
白盒测试的覆盖率指标用于衡量测试的充分性,从弱到强依次为:

⚠️ 覆盖强度对比(必记!)
语句覆盖 < 判定覆盖 ≤ 条件覆盖 < 判定/条件覆盖 < 条件组合覆盖 ≤ 路径覆盖
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;
① 语句覆盖

② 判定覆盖(分支覆盖)

③ 条件覆盖

④ 路径覆盖

覆盖率对比总结


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

夜雨聆风