白盒测试覆盖题

先贴完整逻辑代码

java

运行

复制代码
if (温度 < 高温值 && 温度 > 低温值) {
    显示正常温度;   // 分支1
} else {
    if (温度 >= 高温值) {
        高温报警;  // 分支2
    } else {
        低温报警;  // 分支3
    }
    蜂鸣警报;     // 分支4
}

先定义 3 个条件

A:温度<高温值B:温度>低温值外层判定:A && B内层判定:C:温度≥高温值


1. 语句覆盖(最弱)

规则:所有代码行全部跑一遍就行要执行到 4 行代码:

  1. 正常显示
  2. 高温报警
  3. 低温报警
  4. 蜂鸣警报

设计 3 组最简用例

  1. 温度介于高低温之间 → 走正常显示
  2. 温度≥高温值 → 高温报警 + 蜂鸣
  3. 温度≤低温值 → 低温报警 + 蜂鸣

结论:语句覆盖最少 = 3 条用例特点:最简单,漏洞最多。


2. 判定覆盖(分支覆盖,常考)

规则:每一个 if 的真、假都必须走一次 本题一共两个 if 判断

  1. 第一个 if:A&&B
    • 真:正常区间
    • 假:超出区间
  2. 第二个 if:C
    • 真:超高温
    • 假:超低温

必须全部走完:

  • 外层 if 真
  • 外层 if 假
  • 内层 if 真
  • 内层 if 假

刚好还是 3 组用例全覆盖:

  1. 正常温度(外层真)
  2. 超高温(外层假、内层真)
  3. 超低温(外层假、内层假)

结论:判定覆盖最少 = 3 条用例


3. MC/DC 修正条件判定覆盖(考试重点)

核心一句话

每个条件都能单独决定整个判断的结果 外层判断:A && B两个独立条件:A = 温 <高温 ,B = 温> 低温

&& 逻辑 MC/DC 必背 3 种情况

  1. A 真、B 真 → 整体为真
  2. A 真、B 假 → 整体为假
  3. A 假、B 真 → 整体为假

作用:

  • 固定 B 不变,改 A,结果变 → A 独立生效
  • 固定 A 不变,改 B,结果变 → B 独立生效

这 3 组刚好对应题目三种场景:

  1. A 真 B 真 → 温度正常
  2. A 真 B 假 → 温度过低
  3. A 假 B 真 → 温度过高

同时顺便把内层 if 真假也覆盖完结论:MC/DC 最少 = 3 条用例


最终标准答案(直接背)

  1. 语句覆盖:3
  2. 判定(分支)覆盖:3
  3. MC/DC 覆盖:3
相关推荐
GoGeekBaird1 小时前
别再给每个 AI 做自我介绍了:我做了一个「个人上下文」管理系统
后端·github·agent
莫晓燚2 小时前
Ansible 13 个常用模块---企业实战
git·github
程序员柒叔4 小时前
Diagram Design 解构:45 种图型如何用语义路由与 SVG 质量门交付
人工智能·github·agent·skills
逛逛GitHub4 小时前
9 个神级 GitHub 项目助你蹭上抖音、小红书 Vibe 知识大赏热点。
github
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(119):EvoLife——让具身 Agent 把主动问到的答案沉淀为可复用的空间经验
论文阅读·人工智能·学习·开源·github
后台模板学习7 小时前
GitHub Actions 与 Jenkins 在日志监
运维·github·jenkins
miofly7 小时前
GitHub 今日推荐|auto-ontology:给 Agent 装上企业数据的语义索引
python·开源·github
miofly9 小时前
GitHub 日榜趋势速报 | 2026-11-04
开源·github
钱栈up18 小时前
GitHub 热榜上手|Orca:让多个编码 Agent 并排跑
github
wflynn1 天前
GitHub 日榜趋势速报 | 2026-11-02
开源·github