1. 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、MC/DC、路径覆盖的强弱关系与适用场景?
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、MC/DC、路径覆盖的强弱关系是什么?各自适用什么场景?
- 各覆盖准则的定义
- 强弱关系
- 适用场景
白盒覆盖准则的强弱关系(由弱到强):语句覆盖(每条语句至少执行一次)< 判定覆盖(每个判定的真假分支至少执行一次)< 条件覆盖(每个条件的真假至少执行一次)< 判定/条件覆盖(判定与条件都覆盖)< MC/DC(每个条件独立影响判定结果)< 路径覆盖(所有路径至少执行一次)。关系上:语句覆盖最强是"弱覆盖",判定覆盖强于语句覆盖但弱于条件覆盖;条件覆盖不保证判定覆盖(两者不互相包含);判定/条件覆盖强于两者;MC/DC 比判定/条件覆盖更强,要求条件的独立影响;路径覆盖最强但最贵。适用场景:一般功能单元用语句/判定覆盖(成本低);安全关键(航空、医疗、核能)用 MC/DC(DO-178C 要求);路径覆盖因路径爆炸仅用于小模块或关键算法。选择依据是"覆盖强度需求 × 成本",安全关键用 MC/DC,普通用判定/分支覆盖。
覆盖准则的强弱本质是"对代码行为验证的充分性"与"成本"的权衡。理解各准则定义与包含关系(哪些覆盖能推导哪些)是白盒测试的基础。MC/DC 是安全关键的标准,因为其"条件独立影响结果"的特性最强;路径覆盖理论上最强但实际因爆炸难以实现。