白盒测试覆盖题

先贴完整逻辑代码

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
相关推荐
Flandern11116 小时前
Pull Requests(PR)
学习·github·pr
网络研究院8 小时前
AgentGG:开源的代理式 SAST 扫描器
开源·github·工具·网络研究观·agentgg
凤炎忻9 小时前
【GitHub】GitHub Actions 快速入门
github·自动化运维
逛逛GitHub10 小时前
YouTube 一哥手搓了个 AI 工作台,一周就 5 万多 Star 。
github
七牛云行业应用10 小时前
Codex CLI 和 Codex 桌面端完整教程:两种入口的功能对比与选择指南
前端·后端·github
小雨青年10 小时前
GitHub Spark:自然语言能把全栈 AI 应用做到什么程度
人工智能·github
阿里嘎多学长11 小时前
2026-06-08 GitHub 热点项目精选
开发语言·程序员·github·代码托管
本地化文档11 小时前
black-docs-l10n
python·github·gitcode·sphinx
代码钢琴师12 小时前
从零设计一个 Java 分布式限流库:throttle4j 架构解析
github
用户0651281963312 小时前
Go开发者的工具箱:gookitgoutil,900+实用函数汇集
github