白盒测试覆盖题

先贴完整逻辑代码

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
相关推荐
miofly2 分钟前
GitHub 日榜趋势速报 | 2026-10-14
开源·github
高频因子挖掘机29 分钟前
量化回测为什么不能随便选前复权?从收益率计算到成交价格的三个误区
后端·github·api
高频因子挖掘机2 小时前
回测收益为什么可能不真实?从时间戳、数据可用性到未来函数检查
后端·github·api
风娜4 小时前
IT 疑难杂症诊疗室:从现象到根因的系统排查方法论
人工智能·github
怕浪猫9 小时前
2028编程圈很火的10个Skills
算法·面试·github
高频因子挖掘机11 小时前
只取最近 60 个交易日,却每次拉全历史:量化脚本变慢的原因与改法
后端·github·api
鬼手点金12 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
阿里嘎多学长13 小时前
2026-10-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
伍六琪14 小时前
github 2FA认证教程
github
鸿蒙开发16 小时前
我把自己的应用上线了:从买服务器、域名和 DNS,到备案与 HTTPS
后端·github