白盒测试用例设计方法
1、语句覆盖
被测程序的每一个语句至少覆盖一次
以图为例:
只需要遍历路径ace即可覆盖所有语句
A=2,B=0,X=2
2、条件覆盖
如果一个判断语句中包含多个条件,每个条件至少被满足一次
以图为例:
第一个判断的所有条件的可能取值情况是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
3、判定
程序中每个判断的真假值至少覆盖一次
以图为例:
只需要涵盖路径ace和abd,或涵盖路径acd和abe,就可以使得两个判定为“真”和为“假”的分支都执行一次。如果选择后一种情况,生成的用例及其遍历的路径如下:
A=3,B=0,X=3 acd
A=2,B=1,X=1 abe
4、判定条件
判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次
以图为例:
既要考虑到单个判定中每个条件的可能情况(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
5、条件组合
每个判断中各种可能的条件组合至少都出现一次
以图为例:
满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:
生成的测试用例,以及它们遍历的路径和覆盖的组合如下:
A=2,B=0,X=4 覆盖组合1,5 ace
A=2,B=1,X=1 覆盖组合2,6 abe
A=1,B=0,X=2 覆盖组合3,7 abe
A=1,B=1,X=1 覆盖组合4,8 abd
6、路径
使程序的每个路径都执行一次
以图为例:
由控制流图画出流程图
方法一:我们通常采用控制流图的边(弧)序列和节点序列表示某一条具体路径。
(1)弧a和弧b相乘,表示为ab,它表明路径是先经历弧a,接着再经历弧b。
(2)弧a和弧b相加,表示为a+b,它表明两条弧是“或”的关系,是并行的路段。
在路径表达式中,将所有弧均以数值1来代替,再进行表达式的相乘和相加运算,最后得到的数值即为该程序的 独立路径数 = (1+11)(1+11)= 22 = 4。
方法二:与弧的计算方式类似,还可以通过必经节点个数 i,再找出必经节点下的路径数 w(i) ,计算路径数。流程图中共有2个必经节点②⑥,且先经历②再经历⑥,没有并行的独立节点,独立路径数 = w(1)*…w(i) = 22 = 4。
两种方法计算得到的路径数均为4条,它们分别覆盖了abd、abe、acd、ace:
A=1,B=0,X=1 abd
A=1,B=0,X=2 abe
A=3,B=0,X=1 acd
A=2,B=0,X=3 ace
路径覆盖 > 条件组合覆盖 > 判定/条件覆盖 > 条件覆盖 > 判定覆盖 > 语句覆盖