白盒测试之逻辑覆盖准则
逻辑覆盖准则
白盒测试关注的目标是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。
需要测试的逻辑结构图(源程序)
语句覆盖准则
语句覆盖准则:将程序中的每条语句至少执行一次
用例设计:在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 |
以上逻辑覆盖准则覆盖逻辑强度依次增强,为语句覆盖<判定覆盖<条件覆盖<判断/条件覆盖<多重条件覆盖。