白盒测试方法探究.ppt

判定覆盖 Decision Coverage 判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。 判定覆盖又称为分支覆盖。 对于图例,如果选择路径L1和L2,就可得满足要求的测试用例: (A1) (B==0) (A==2) || (X1) X=X/A X=X+1 真 T 假 F a b d c e 开始 判定覆盖 【(2, 0, 4),(2, 0, 3)】 覆盖 ace【L1】 【(1, 1, 1),(1, 1, 1)】 覆盖 abd【L2】 (A==2) and (B==0) or (A1) and (B==0) and (X/A1) 判定覆盖 not (A1) and not (A==2) and not (X1) or not (B==0) and not (A==2) and not (X1) 判定覆盖 如果选择路径L3和L4,还可得另一组可用的测试用例: 【(2, 1, 1),(2, 1, 2)】覆盖 abe【L3】 【(3, 0, 3),(3, 1, 1)】覆盖 acd【L4】 not (A1) and (X1) or not (B==0) and (A==2) or not (B==0) and (X1) (A1) and (B==0) and not (A==2) and not (X/A1) 判定覆盖 1 6 3 5 2 7 8 9 4 10 说明:以上仅考虑了两出口的判断,我们还应把判定覆盖准则扩充到多出口判断(如Case语句)的情况。因此,判定覆盖更为广泛的含义应该是使得每一个判定获得每一种可能的结果至少一次。 判定覆盖 【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。 【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。 条件覆盖Condition Coverage 在设计程序中,一个判定语句是由多个条件组合而成的复合判定,判定(a)(b||c)包含了三个条件:a,b和c。为了更彻底的实现逻辑覆盖,可以采用条件覆盖。 条件覆盖Condition Coverage 条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。 在图例中,我们事先可对所有条件的取值加以标记。 条件覆盖Condition Coverage 例如:对于第一个判断, 条件 A>1 取真为 ,取假为 条件 B=0 取真为 ,取假为 对于第二个判断: 条件A=2 取真为 ,取假为 条件X>1 取真为 ,取假为 (A1) (B==0) (A==2) || (X1) X=X/A X=X+1 真 T 假 F a b d c e 开始 条件覆盖Condition Coverage 测试用例 覆盖分支 条件取值 【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 条件覆盖 或 测 试 用 例 覆盖分支 条件取值 【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 条件覆盖 【优点】:增加了对条件判定情况的测试,增加了测试路径。 【缺点】:条件覆盖不一定包含判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。 判定-条件覆盖 判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法, 就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判定的可能结果也至少出现一次。 设计测试用例覆盖4个条件的8种取值以及4个判定分支。 (A1) (B==0) (A==2) || (X1) X=X/A X=X+1 真 T 假 F a b d c e 开始 判定-条件覆盖 测 试 用 例 覆盖分支 条件取值 【(2, 0, 4),(2, 0, 3)】L1(c, e) 【(1, 1, 1),(1, 1, 1)】L2(b, d) (A=2) and (B=0) or (A1) and (B=0)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档