路径覆盖理论上覆盖强度最高,但因路径数量可能呈指数级增长(尤其含循环或多个判定时)
在软件测试的逻辑覆盖准则中覆盖强度从低到高依次为语句覆盖最弱每条可执行语句至少执行一次。判定覆盖分支覆盖每个判定的“真”和“假”分支至少各执行一次。条件覆盖每个逻辑条件的可能取值真/假至少出现一次。判定-条件覆盖同时满足判定覆盖和条件覆盖。条件组合覆盖也称多重条件覆盖覆盖每个判定中所有条件的所有可能组合如两个布尔条件有4种组合。路径覆盖最强覆盖程序中所有可能的执行路径即控制流图中从入口到出口的所有路径。⚠️ 注意路径覆盖理论上覆盖强度最高但因路径数量可能呈指数级增长尤其含循环或多个判定时常不可行称为“路径爆炸”问题故实践中常采用其变体如基本路径覆盖、循环边界覆盖等。✅ 因此本题中覆盖强度最高的是D. 路径覆盖路径覆盖要求测试所有从程序入口到出口的可行执行路径。其难以完全实现的主要原因包括路径爆炸Path Explosion若程序包含多个判定节点如if、while或嵌套循环路径数量呈指数级增长。例如n个独立二分支判定最多产生2n2^n2n条路径含循环时若未限定迭代次数路径数甚至为无穷如while (condition)可能执行0次、1次、2次……无限次。不可行路径Infeasible Paths控制流图中存在语法上可达但逻辑上不可能执行的路径如if (x 0 x 0)的两个分支无法同时满足识别和排除这些路径需复杂的数据流/约束求解分析自动化难度高。环境与状态依赖某些路径依赖外部输入、时间、并发状态或硬件响应如网络超时、文件不存在难以在测试环境中稳定复现。维护成本过高代码微小变更如新增一个if可能导致路径数翻倍测试用例需全面重构违背测试的经济性与可维护性原则。✅ 常用替代策略兼顾有效性与可行性基本路径覆盖McCabe圈复杂度法基于控制流图的圈复杂度V(G)E−N2PV(G) E - N 2PV(G)E−N2PE边数、N节点数、P连通分量数确定线性无关路径的最小数目生成对应测试用例。覆盖这些路径可保证判定覆盖部分条件交互。边界值分析 判定覆盖/条件组合覆盖针对关键判定点结合输入边界设计用例提升缺陷检出率。循环覆盖对每个循环测试 0次、1次、典型多次、最大合法次数、超出边界次数等避免穷举所有循环路径。模型检测/符号执行辅助使用工具如 CBMC、KLEE自动探索路径并发现不可行路径或生成反例。风险驱动测试优先覆盖高风险模块如金融计算、安全校验的主路径和异常路径而非全路径。