白盒测试的5种逻辑覆盖法

文章目录

    • 判定覆盖法 Decision Coverage (DC)
    • 条件覆盖 Condition Coverage (CC)
    • 判定-条件覆盖 Condition-Decision Coverage
    • 条件组合覆盖 Multiple Condition Coverage (MCC)
    • 修正的条件/判定覆盖 Modified Condition/Decision Coverage (MC/DC)
    • 5种覆盖的关系

判定覆盖法 Decision Coverage (DC)

判定覆盖法的基本思想:
设计若干测试用例,运行被测程序,使得程序中每个判断的取真和取假分支至少经历一次,即判断的真假值都至少被满足一次。
由于一个判定代表程序一个分支,因而判定覆盖也被成为分支覆盖。
问题在于:T and T = T , T or T =T. F and F = F , F or F =F. 对于一个双条件判定而言,如果采用(T,T)和(F,F)去测试,那么程序中的and换成or,或者or换成and的错误是发现不了的。
满足判定覆盖一定满足语句覆盖(每个可执行的语句至少执行一次)

条件覆盖 Condition Coverage (CC)

条件覆盖比判定覆盖的粒度更小,它要求使得程序中每个判断的每个条件的所有可能取值至少被满足一次。
满足条件覆盖不一定满足判定覆盖。这就引出了判定-条件覆盖。

判定-条件覆盖 Condition-Decision Coverage

判定-条件覆盖是需要同时满足判定覆盖和条件覆盖的逻辑覆盖法,即所有判断的每个结果和所有条件的所有可能取值至少满足一次。
问题在于:and 与 or互换的bug还是测不出来。这就引入了条件组合覆盖。

条件组合覆盖 Multiple Condition Coverage (MCC)

条件组合覆盖要求:每个判断的真假结果和导致真假结果的所有组合都至少出现一次。
条件组合覆盖虽然能覆盖前面提到的3种覆盖方式,但还是有可能无法覆盖全部基本路径。
除了不够充分外,还有浪费的弊端,这就引出了修正的条件/判定覆盖。

修正的条件/判定覆盖 Modified Condition/Decision Coverage (MC/DC)

修正的条件/判定覆盖是对条件组合覆盖做的优化。
它不要求每个判断导致真假结果的所有组合都出现过,而是要求每个条件都独立地影响过判断的结果。

5种覆盖的关系

5种覆盖的包含关系为
白盒测试的5种逻辑覆盖法_第1张图片

你可能感兴趣的:(软件测试技术)