白盒测试覆盖题

先贴完整逻辑代码

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
相关推荐
MicrosoftReactor36 分钟前
技术速递|GitHub Copilot App 中的堆叠会话与拉取请求
ai·github·copilot·agent
dong_junshuai1 小时前
每天一个开源项目#67 Orca:4.3万星的并行 AI 编程控制台
程序员·开源·github
峰向AI2 小时前
AI 画图要好看,还是要可信?小孩子才做选择,我两个都要!
github
ZJU_统一阿萨姆3 小时前
【Git】Github 开源许可证详解
git·开源·github
fthux11 小时前
装闭 RenoPit 源码解析(07):装修闭坑知识库与AI Prompt构建
人工智能·ai·开源·github·open source·renopit
fthux15 小时前
装闭 RenoPit 源码解析(06):SSE如何实时推送AI装修分析进度
人工智能·ai·开源·github·open source·renopit
是烨笙啊17 小时前
拯救 GitHub stars 体验:从 Agent Skill 到浏览器插件
github
小弥儿17 小时前
GitHub今日热榜 | 2026-08-11:图原生基础设施首日登顶
学习·开源·github
码流怪侠19 小时前
用 WiFi 信号数人头:howmanypeoplearearound 项目深度解析
后端·开源·github
大强同学21 小时前
零成本部署0penList,三步搞定,我一分钱没花!
github