赞
踩
注: 上述逻辑覆盖测试的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)。用例及其遍历的路径如下所示:
1.A=2,B=0,X=4,ace
2.A=1,B=1,X=1,abd
缺点:条件覆盖和判定/条件覆盖不一定会发现逻辑表达式中的错误。尽管看上去所有条件的所有结果似乎都执行到了,但由于有些条件会屏蔽掉后面的条件,并不一定能全部执行得到。例如,上述测试用例①满足了条件A=2后,就不再执行对条件X>1的判断;测试用例②中不满足条件A>1后,就不再执行对条件B=0的判断。
满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:
第一个判定的取值情况 第二个判定的取值情况
生成的测试用例,以及它们遍历的路径和覆盖的组合如下:
- A=2,B=0,X=4 ace 覆盖组合1,5
- A=2,B=1,X=1 abe 覆盖组合2,6
- A=1,B=0,X=2 abe 覆盖组合3,7
- A=1,B=1,X=1 abd 覆盖组合4,8
缺点:多重条件覆盖不一定能覆盖到每条路径,路径acd就被遗漏掉了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。