在以下逻辑覆盖标准中,哪一项说法是正确的(条件覆盖不一定强于判定覆盖,两者无法比较)。
软件测试中的逻辑覆盖准则有明确的强度层级,从强到弱大致排序为路径覆盖、组合条件覆盖、判定/条件覆盖、条件覆盖与判定覆盖(二者强度相当,无法直接比较)、语句覆盖。其中,语句覆盖是最基础的标准,仅要求覆盖所有可执行语句;判定覆盖需确保每个判定语句的真假分支都至少执行一次;条件覆盖关注单个条件的真假取值,每个基本条件都要取到一次真和一次假;判定/条件覆盖则同时满足判定覆盖和条件覆盖的双重要求;组合条件覆盖要求覆盖判定中所有条件的真假组合情况,强度高于条件覆盖,能完全满足条件覆盖的测试要求;路径覆盖是最严格的标准,需要覆盖程序所有可能的执行路径。需要特别注意,条件覆盖仅聚焦单个条件的取值情况,不考虑条件组合对判定结果的影响,因此无法保证覆盖判定的所有分支,二者不存在绝对的强弱关系;此外,组合条件覆盖针对的是条件的所有真假组合而非判定的组合,这是实践中容易混淆的关键点。
本题考察了软件测试中逻辑覆盖准则的强弱关系。常见的强度关系如下:
根据逻辑覆盖的覆盖强度排序:路径覆盖 > 组合条件覆盖 > 判定/条件覆盖 > 条件覆盖 ~ 判定覆盖 > 语句覆盖。其中条件覆盖和判定覆盖一般不比较。
A. 条件覆盖强于组合条件覆盖错误。条件覆盖并不一定覆盖所有的判定分支(例如多个条件之间的组合影响最终结果)。 条件覆盖(Condition Coverage):要求每个判断中的每个条件都至少取过一次真和一次假。它关注的是单个条件的取值情况。 组合条件覆盖(Multiple Condition Coverage, MCC):要求判定中所有条件的可能组合都至少执行一次。它不仅要求每个条件都取过真/假,还要求各种条件组合的效果都被测试到。因此,组合条件覆盖更严格、更强,它能满足条件覆盖的要求,而反过来不一定成立。
B. 条件覆盖不一定强于判定覆盖,两者无法比较 正确。条件覆盖测试每个基本条件为真为假的情况,但是不考虑条件组合情况,所以最终的结果不一定能覆盖判定覆盖的结果,两者无法比较,正确。
C. 判定/条件覆盖弱于判定覆盖错误。
D. 条件组合覆盖要求测试用例覆盖每个判定的所有可能组合错误。应该是覆盖每个条件的所有可能组合。
