软件工程导论——详解白盒测试和黑盒测试中的各种方法

/资料参考软件工程导论《第六版》张海藩著/
/资料参考来源https://www.jianshu.com/p/3152765ec902/
/资料参考来源https://blog.csdn.net/LOVEYSUXIN/article/details/82592588/
/资料参考来源https://www.cnblogs.com/dayu2019/p/11555447.html/

1.白盒测试

覆盖程度
路径覆盖 > 多重条件覆盖 > 判定/条件覆盖 > 条件覆盖 > 判定覆盖 > 语句覆盖

一 逻辑覆盖
1.语句覆盖
语句覆盖:它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。通常语句覆盖被认为是“最弱的覆盖”,原因是它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,因此在实际运用中语句覆盖很难发现代码中的问题。
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第1张图片
语句覆盖必须把所有语句均执行一次我们设置测试用例
必须首先满足 A>1 AND B=0
由此不妨设A=2 B=0
再执行X=X/A 由下一步可知必须满足A=2 OR X>1 才可以执行X=X+1 故我们可以对X取任意值,设X=2
则执行 A=2 B=0 X=2则可以满足语句覆盖的全部测试用例。
语句覆盖的缺点:语句覆盖是“最弱的覆盖”,它难以发现程序中的错误。①程序中存在一条x的值未发生改变的路径abd没有测试。②它无法发现判定的错误,比如第一个判定条件也许应该是“或”,而不是“与”。③无法发现条件的错误,比如第二个判断中的条件X>1,也许事实上应该是X>0。
2.判定覆盖
测试用例要保证让被测试程序中的每一个分支都至少执行一次。让所有的判定都取到所有可能取值,即每个判定都取到”真“、”假“各一次。
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第2张图片
使用此准则测试小程序,只需要涵盖路径ace和abd,或涵盖路径acd和abe,就可以使得两个判定为“真”和为“假”的分支都执行一次。如果选择后一种情况,生成的用例及其遍历的路径如下:

A=3,B=0,X=3 acd
A=2,B=1,X=1 abe
缺点:这两组测试用例都存在同一个问题:当判定由多个条件组合构成时,它未必能发现每个条件的错误。如果第二个判定把条件X>1错误的写成了X<1,我们设计的测试用例仍然无法找出这个错误。
3.条件覆盖
每个条件的所有可能结果至少执行一次。
1.A=2 B=0 X=4 执行路径acd
2.A=1 B=1 X=1 执行路径abd
3.A=2 B=0 X=1执行路径abe
4.A=1 B=1 X=2执行路径abe
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第3张图片

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

重点:区分判定和条件覆盖
条件覆盖通常比判定覆盖强 因为它使表达式中每个条件都取得两个不同的结果,而判定覆盖却只关心整个判定表达式的值。

4.判定/条件覆盖
判定条件覆盖是设计足够的测试用例,得使判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。缺点是忽略了条件的组合情况。
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第4张图片
可以设计下述两组测试用例满足判定/条件覆盖标准:
1.A=2 B=0 X=4 ace
2.A=1 B=1 X=1 abd
缺点:条件覆盖和判定/条件覆盖不一定会发现逻辑表达式中的错误。尽管看上去所有条件的所有结果似乎都执行到了,但由于有些条件会屏蔽掉后面的条件,并不一定能全部执行得到。例如,上述测试用例①满足了条件A=2后,就不再执行对条件X>1的判断;测试用例②中不满足条件A>1后,就不再执行对条件B=0的判断。
5.条件组合覆盖
每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。(注意“可能”二字,因为有些组合的情况难以生成。)
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第5张图片
针对该图,共有8钟可能的条件组合
1.A>1 B=0
2.A>1 B不等于0
3.A<=1 B=0
4.A<=1 B不等于0
5.A=2 X>1
6.A=2 X<=1
7.A不等于2 X>1
8.A不等于2 X<=1
生成的测试用例,以及它们遍历的路径和覆盖的组合如下:

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就被遗漏掉了。
6.点覆盖(点覆盖和边覆盖考察的很少了解即可)
程序执行路径至少经过流图的每个结点一次
7.边覆盖
程序执行路径至少经过流图的每个边一次
8.路径覆盖
每条路径至少执行一次,每个条件的所有可能结果至少执行一次。
软件工程导论——详解白盒测试和黑盒测试中的各种方法_第6张图片
所有的路径有
abd ace acd abe
需要设置四组测试用例
A=1 B=1 X=1执行路径abd
A=2 B=0 X=2执行路径ace
A=2 B=0 X=2 执行路径acd
A=2 B=1 X=2执行路径abe

你可能感兴趣的:(软件工程导论——详解白盒测试和黑盒测试中的各种方法)