四、判定-条件覆盖(分支-条件覆盖)
1、概念:
设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。
2、测试用例:
数据 | C1 | C2 | C3 | P1 | P2 | 路径 | {x=3, y=3} | T | T | T | T | F | a-b-e-f | {x=-3, y=0} | F | F | F | F | T | a-c-d-f | 所有条件的可能取值都满足了一次,而且所有的判断本身的判定结果也都满足了一次。
3、测试的充分性:
达到100%判定-条件覆盖标准一定能够达到100%条件覆盖、100%判定覆盖和100%语句覆盖。
五、条件组合覆盖
1、概念:
设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。
注意:
a、条件组合只针对同一个判断语句内存在多个条件的情况,让这些条件的取值进**尔乘积组合。
b、不同的判断语句内的条件取值之间无需组合。
c、对于单条件的判断语句,只需要满足自己的所有取值即可。
2、测试用例:
数据 | C1 | C2 | C3 | P1 | P2 | 路径 | {x=-3, y=0} | F | F | F | F | F | a-c-e-f | {x=-3, y=2} | F | T | F | F | F | a-c-e-f | {x=-3, y=0} | T | F | F | F | F | a-c-e-f | {x=3, y=3} | T | T | T | T | T | a-b-d-f | C1和C2处于同一判断语句中,它们的所有取值的组合都被满足了一次。
3、测试的充分性:
100%满足条件组合标准一定满足100%条件覆盖标准和100%判定覆盖标准。
但上面的例子中,只走了两条路径a-c-e-f和a-b-d-f,而本例的程序存在三条路径。
六、路径覆盖
1、概念:
设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。
2、测试用例:
数据 | C1 | C2 | C3 | P1 | P2 | 路径 | {x=3, y=5} | T | T | T | T | T | a-b-d-f | {x=0, y=2} | F | T | T | F | T | a-c-d-f | 这条路径不可能 | | | | | | a-b-e-f | {x=-8, y=3} | F | T | F | F | F | a-c-e-f | 所有可能的路径都满足过一次。
3、测试的充分性:
由上表可见,100%满足路径覆盖,但并不一定能100%满足条件覆盖(C2只取到了真),但一定能100%满足判定覆盖标准(因为路径就是从判断的某条分支走的)
七、六种逻辑覆盖的强弱关系
在外面很多的教程都认为这六种逻辑覆盖从弱到强的排列顺序是:
语句覆盖->判定覆盖->条件覆盖->判定-条件覆盖->条件组合覆盖->路径覆盖
但经过上面的分析,它们之间的关系实际上可以用下图表示:

而路径覆盖很难在该图表示出来。
|