白盒测试之逻辑覆盖准则

逻辑覆盖准则

白盒测试关注的目标是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。

需要测试的逻辑结构图(源程序)

白盒测试之逻辑覆盖准则

语句覆盖准则

语句覆盖准则:将程序中的每条语句至少执行一次
用例设计:在a处设置 m=2,n=0,x=3,每条语句将被执行一次,将会遍历程序路径ace。

判定覆盖准则

判定覆盖准则:要求每个判断都必须有“是”和“否”的结果,并且每条语句都至少被执行一次。
用例及其遍历的路径:

路径 用例
acd x=3,m=3,n=0
abe x=1,m=2,n=1

不能发现条件错误x>1写成了x<1

条件覆盖准则

条件覆盖准则:要求将一个判断中的每个条件的所有可能的结果至少执行一次,同时要求对程序或子程序的每一个入口点都至少调用一次。

用例及其遍历的路径:

路径 用例
ace x=4,m=2,n=0
adb x=1,m=1,n=1

条件覆盖准则并不总是能满足判定覆盖。如测试判断条件IF(A&&B), A 为TRUE ,B 为FALSE;A 为FALSE,B为TRUE,这是满足条件覆盖准则的用例,很明显并不满足判断覆盖准则,因为这不能是IF 语句中的THEN被执行到。

判定/条件覆盖准则

判定/条件覆盖准则: 要求将一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。

不一定能就完全能够发现逻辑表达式中的错误,如x>1写成了x>0。这是因为:如果“与”表达式中有个条件为“假”,那么就无需计算该表达式的后续条件;如果“或”表达式中有个条件为“真”,那么后续条件也无需计算。

多重条件覆盖准则

多重条件覆盖准则:要求将判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

所有的条件组合

编号 条件组合
1 m>1,n=0
2 m>1,n<>0
3 m<=1,n=0
4 m<=1,n<>0
5 m=2,x>1
6 m=2,x<=1
7 m<>2,x>1
8 m<>2,x<=1

用例及覆盖的组合:

用例 覆盖的条件组合
m=2,n=0,x=4 覆盖组合1,5
m=2,n=1,x=1 覆盖组合2,6
m=1,n=0,x=2 覆盖组合3,7
m=1,n=1,x=1 覆盖组合4,8

以上逻辑覆盖准则覆盖逻辑强度依次增强,为语句覆盖<判定覆盖<条件覆盖<判断/条件覆盖<多重条件覆盖