白盒测试 | 用例设计方法之判定覆盖

2022-03-14 14:16:54 浏览数 (1)

判定覆盖也被成为分支覆盖(Branch Coverage)是设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。使设计的测试用例保证程序中每个判断的每个取值分支(ture or false)至少经历一次。

使用此准则测试小程序,只需要涵盖路径ace和abd,或涵盖路径acd和abe,就可以使得两个判定为“真”和为“假”的分支都执行一次。如果选择后一种情况,生成的用例及其遍历的路径如下:

用例1:A=3,B=0,X=3 acd

执行用例1 ,判定(A > 1 and B == 0)为真 ,执行X = X / A ,X =3/3=1; 判定(A == 2 or X > 1)为假,不执行X = X 1 ; 覆盖路径acd,序结束

用例2:A=2,B=1,X=1 abe

执行用例2 ,判定(A > 1 and B == 0)为假,不执行X = X / A ; 判定(A == 2 or X > 1)为真,执行X = X 1,x=1 1=2 ; 覆盖路径abe,程序结束

我们仅有50%的可能性遍历到X值未发生改变的路径,即,只有我们选择涵盖路径ace和abd的情况,而不是涵盖路径acd和abe时。对应的测试用例如下:

用例1:A=2,B=0,X=2 ace

执行用例1 ,判定(A > 1 and B == 0)为真 ,执行X = X / A ,X =2/2=1; 判定(A == 2 or X > 1)为真,执行X = X 1 ,x=2 1=3; 覆盖路径ace,程序结束

用例2:A=3,B=1,X=1 abd

执行用例1 ,判定(A > 1 and B == 0)为假 ,不执行X = X / A ; 判定(A == 2 or X > 1)为假,不执行X = X 1 ; 覆盖路径abd,程序结束

【优点】:分支(判定)覆盖具有比语句覆盖更强的测试能力。同样分支(判定)覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

【缺点】:往往大部分的分支(判定)语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

0 人点赞