首页/开发/软件测试速查/条件组合覆盖(白盒)
用例设计方法62 条

条件组合覆盖(白盒)

判定/条件覆盖要求每个条件的真假取值都被覆盖;条件组合覆盖进一步要求每个判定中条件取值的组合都被覆盖,强度更高。

软件测试速查开发更新于 2026-10-13

条件覆盖是什么

条件覆盖关注复合判断里每个原子条件的取值是否都被测试到:条件覆盖要求每个条件真假都取过,判定覆盖只要求整个判断结果真假都出现,判定条件覆盖(DC)要求两者同时满足,条件组合覆盖要求每个判定内条件的全组合,修正条件判定覆盖(MC/DC)则要求每个条件能独立影响判定结果一次。安全关键软件常以 MC/DC 作为达标线。

基本信息

原子条件复合判断中不可再分的单个布尔表达式
条件覆盖每个原子条件真假各取至少一次
判定覆盖每个判断整体结果真假各取至少一次
判定条件覆盖条件与判定两类覆盖同时满足
条件组合覆盖每个判定内所有条件组合出现,数量随条件数指数增长
MC/DC每个条件独立改变判定结果一次,在证明强度与用例数量间折中

四种覆盖强度对比

覆盖类型覆盖对象用例规模典型应用
条件覆盖单个条件的真假小一般业务代码
判定覆盖判断整体的真假小常规单元测试门槛
判定条件覆盖两者同时中质量要求较高的模块
MC/DC条件独立影响判定中偏大航空航天、轨交、医疗
条件组合判定内全部组合指数级条件数很少的关键判断

典型使用场景

  • 单元测试评审:检查复合条件中的短路分支是否都有人测。
  • 安全关键模块:按 MC/DC 设计用例并留存分析记录供审计。
  • 缺陷复盘:条件覆盖盲区导致漏检时,补齐条件级用例。
  • 覆盖率工具配置:在流水线中启用条件覆盖率统计作为参考项。
  • 新人培训:用复合条件例子讲清条件与判定覆盖的差别。
短路求值要留意:很多语言从左到右短路,后面的条件可能从未执行,工具与用例都要确认实际求值路径。
条件数两个以内考虑组合覆盖:三层以上组合爆炸,MC/DC 更现实。
覆盖率高不等于逻辑正确:条件覆盖证明的是取值配齐,不是业务规则正确。

易错点

  • 混淆条件与判定覆盖:判定覆盖高但复合条件中个别条件从未取过真值。
  • 忽略短路副作用:依赖短路顺序的代码在条件覆盖下漏掉后半段执行场景。
  • 盲目上全组合:五六个条件的判定组合数上千,工期不允许还硬做。
  • MC/DC 记录缺失:分析过程没有留存,审计时无法证明达标。
  • 把覆盖当质量银弹:覆盖只是必要不充分条件,断言设计同样关键。

数据来源与参考

  • ISTQB CTFL 4.0 大纲(白盒测试技术)
  • DO-178C(MC/DC 背景资料)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌