白盒测试—六种覆盖

语句覆盖

语句覆盖:覆盖所有的基本语句。如果在下图中只要覆盖B和D就满足语句覆盖的条件了。
在这里插入图片描述
设计测试用例满足语句覆盖:

测试用例 覆盖路径
a=2,b=0,x=2 SABCDE

但是,语句覆盖有一个缺点:它发现不了程序中的逻辑运算错误,假如我们在写程序的时候将第一个判定写成了 a>1 || b == 0,那么语句覆盖的测试用例将测试不出来这种错误。

判定覆盖

判定覆盖:使得程序中每个判断的真假值至少取一次。
设计测试用例满足判定覆盖:

测试用例第一个判定,第二个判定 覆盖路径
a=2,b=0,x=3 TTSABCDE
a=1,b=0,x=1FFSACE

或者

测试用例第一个判定,第二个判定 覆盖路径
a=3,b=0,x=3 TFSABCE
a=2,b=1,x=1FTSACDE

可见由上面的例子,满足判定覆盖,至少需要2个测试用例就可以满足了。但是,如果将判定条件X>1错写成X<1,用最后一个测试用例来测试却不影响结果,所以判定覆盖无法确定判断内部条件的错误。

条件覆盖

条件覆盖:使得程序中每个判定中的每一个条件的真假值至少取一次。
第一个判断的4种情况:

条件表达式的值类别
a>1T记为T1
a≤1 F记为F1
b=0 T记为T2
b≠0F记为F2

第二个判断的4种情况

条件表达式的值类别
a=2T记为T3
a≠2 F记为F3
x>1 T记为T4
x≤1F记为F4

设计测试用例满足条件覆盖:

测试用例覆盖条件路径判定结果
a=2,b=1,x=1T1 F2 T3 F4SACDEFT
a=1,b=0,x=3F1 T2 F3 T4SACDEFT

由上面的测试用例可以看出,第一个判定只取到了F,第二个判定只取到了T,所以满足条件覆盖不一定满足判定覆盖。条件覆盖只考虑判定中的条件,而不考虑判定结果。

判定—条件覆盖

判定条件覆盖:顾名思义,既要满足判定覆盖,又要满足条件覆盖。
设计测试用例满足判定—条件覆盖:

测试用例覆盖条件路径判定结果
a=2,b=0,x=3T1 T2 T3 T4SABCDETT
a=1,b=1,x=1F1 F2 F3 F4SACEFF

上面的测试用例,既满足判定覆盖,又满足条件覆盖。

条件组合

条件组合覆盖:所谓条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
条件组合覆盖也是既满足判定覆盖,又满足条件覆盖,但是有可能会漏掉路径,测试也不完全。
在这里插入图片描述
对于每个判断,要求所有可能的条件取值的组合都必须取到。在图中的每个判断各有两个条件,所以各有4个条件取值的组合。我们取4个测试用例,就可用以覆盖上面8种条件取值的组合。在这儿我们只考虑每个判定内的条件组合,如果让两个判定的条件组合,则需要16个测试用例。

测试用例覆盖组合路径覆盖条件判定结果
a=2,b=0,x=3①⑤SABCDET1 T2 T3 T4TT
a=2,b=1,x=1②⑥SACDE T1 F2 T3 F4FT
a=1,b=0,x=3 ③⑦SACDEF1 T2 F3 T4FT
a=1,b=1,x=1④⑧SACEF1 F2 F3 F4FF

上面的程序有4条不同的路径:SABCDE、SACDE、SACE、SABCE,可见上面的条件组合测试用例,漏了最后一条路径。

路径覆盖

路径覆盖:覆盖所有的路径。
满足路径覆盖的测试用例只要在上面的测试用例再加一条就可以了:

测试用例路径
a=3,b=0,x=3SABCE
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值