白盒测试覆盖题

先贴完整逻辑代码

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
相关推荐
程序员天天困11 小时前
Loop Engineering 实战:/goal 命令让 AI 自己写完整项目
github
徐小夕11 小时前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
小爷毛毛_卓寿杰12 小时前
我把 397B 的「Agentic 大脑」塞进了 Xinference,一键部署 Nex-N2
人工智能·架构·github
小爷毛毛_卓寿杰14 小时前
我把一个 3B 模型塞进了 Xinference,然后它干掉了 DeepSeek V3.2
人工智能·开源·github
凌奕14 小时前
别用文档约束你的 Agent:聊聊 Agent 开发流程的思想
llm·github·agent
HelloGitHub19 小时前
《HelloGitHub》第 123 期
开源·github
逛逛GitHub1 天前
这个 GitHub 有意思啊,Claude Code + Obsidian = 知识库王炸。
github
ZaferLiu2 天前
当Agent需要动手干活:Tool还是MCP?
github
鹏毓网络科技4 天前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
嘻嘻仙人4 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github