白盒测试的逻辑覆盖辨析(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)

白盒测试逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)

逻辑覆盖测试:

  • 语句覆盖:每条语句至少执行一次
  • 判定覆盖:每一判定的每个分支至少执行一次
  • 条件覆盖:每一判定中的每个条件,分别按真、假至少各执行一次
  • 判定/条件覆盖:同时满足判定覆盖和条件覆盖的要求
  • 条件组合覆盖:求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次

注: 上述逻辑覆盖测试的5种标准从上至下发现错误的能力由弱变强
表1 逻辑覆盖测试的5种标准
在这里插入图片描述

接下来详细介绍每一种覆盖的条件

一、语句覆盖:

在这里插入图片描述
只需要遍历路径ace,便将程序中的所有语句便都执行了一次。生成的用例及其遍历路径如下:

A=2,B=0,X=4 ace

缺点:语句覆盖是“最弱的覆盖”,它难以发现程序中的错误。①程序中存在一条x的值未发生改变的路径abd没有测试。②它无法发现判定的错误,比如第一个判定条件也许应该是“或”,而不是“与”。③无法发现条件的错误,比如第二个判断中的条件X>1,也许事实上应该是X>0。

二、判定覆盖

在这里插入图片描述

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

A=3,B=0,X=3 acd
A=2,B=1,X=1 abe

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

A=2,B=0,X=2 ace
A=3,B=1,X=1 abd

缺点:这两组测试用例都存在同一个问题:当判定由多个条件组合构成时,它未必能发现每个条件的错误。如果第二个判定把条件X>1错误的写成了X<1,我们设计的测试用例仍然无法找出这个错误。

三、条件覆盖

在这里插入图片描述

第一个判断的所有条件的可能取值情况是A>1或A≤1,B=0或B≠0。第二个判断的所有条件可能的取值情况为A=2或A≠2,X>1或X≤1。生成的用例及其遍历的路径如下所示:

A=1,B=0,X=3 abe
A=2,B=1,X=1 abe

缺点:条件覆盖并不一定总能覆盖全部分支。测试用例虽然满足了条件覆盖准则,但是只涵盖了程序的路径abe。但是,条件覆盖还是要比判定覆盖强一些,因为条件覆盖可能会使判断中各个条件的结果都取“真”或着取“假”,而判定覆盖却做不到这一点。

四、判定/条件覆盖

判定/条件覆盖
在这里插入图片描述

判定/条件覆盖,既要考虑到单个判定中每个条件的可能情况(A>1或A≤1,B=0或B≠0,A=2或A≠2,X>1或X≤1),也要考虑到每个判定的可能情况(路径ace和abd,或路径acd和abe)。用例及其遍历的路径如下所示:

A=2,B=0,X=4 ace
A=1,B=1,X=1 abd

缺点:条件覆盖和判定/条件覆盖不一定会发现逻辑表达式中的错误。尽管看上去所有条件的所有结果似乎都执行到了,但由于有些条件会屏蔽掉后面的条件,并不一定能全部执行得到。例如,上述测试用例①满足了条件A=2后,就不再执行对条件X>1的判断;测试用例②中不满足条件A>1后,就不再执行对条件B=0的判断。

五、条件组合覆盖

在这里插入图片描述

满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:
第一个判定的取值情况 第二个判定的取值情况

  1. A>1,B=0 5. A=2,X>1
  2. A>1,B≠0 6. A=2,X≤1
  3. A≤1,B=0 7. A≠2,X>1
  4. A≤1,B≠0 8. A≠2,X≤1

生成的测试用例,以及它们遍历的路径和覆盖的组合如下:

A=2,B=0,X=4 ace 覆盖组合15
A=2,B=1,X=1 abe 覆盖组合26
A=1,B=0,X=2 abe 覆盖组合37
A=1,B=1,X=1 abd 覆盖组合48

缺点:多重条件覆盖不一定能覆盖到每条路径,路径acd就被遗漏掉了。

  • 26
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值