条件决定测试

条件决定测试,条件决定测试是对能够独立影响判定结果的单独条件的测试(测试对象中的每个条件必须产生所有可能的输出结果至少一次,并且每个判定中的每一个条件必须能够独立影响一个判定的输出。即在其他条件不变的前提下仅改变这个条件的值,可以使判定结果发生改变);条件决定覆盖指的是执行测试套件覆盖到能够独立影响判定结果的单个条件的百分比,100%的条件决定覆盖意味着100%的判定条件覆盖。

为了比较清晰地讨论条件决定测试的概念,以及和判定条件测试之间的区别,利用下面的代码讲解:

if(a > 0 && (b > 0 || c < 1)) {c = b/a;}
c = a + b + c;

相应的控制流图如图所示。
条件决定测试

和前面讲解的约定一样,黑体的T和F表示判定的取真和取假的结果,而非黑体的T和F表示原子条件的取真和取假的结果。分别将原子条件a>0、b>0c<1的取真取假结果表示为T1F1、T2F2和T3F3。下表所示为代码中原子条件的组合及判定结果。
条件决定测试

根据判定条件测试的定义,满足100%的判定条件覆盖只要选择编号ID为2(原子条件为T1T2F3,判定为T1)和7(原子条件为F1F2T3,判定为F1)即可,得到的两个测试用例如表2-12所示。
条件决定测试

如果要采用条件决定测试实现100%的条件决定覆盖,需要选择编号ID为2(原子条件为T1T2F3,判定为T1)、3(原子条件为T1F2T3,判定为T1)、4(原子条件为T1F2F3,判定为F1)和7(原子条件为F1F2T3,判定为F1)。其中编号2(原子条件为T1T2F3)和4(原子条件为T1F2F3)可以实现在原子条件a>0c<1保持不变的情况下,只要改变原子条件b即可实现判定的T1和F1的转换;编号3(原子条件为T1F2T3)和4(原子条件为T1F2F3)可以实现在原子条件a>0b>0保持不变的情况下,只要改变原子条件c<1即可实现判定的T1和F1的转换;编号为3(原子条件为T1F2T3)和7(原子条件为F1F2T3)可以实现在原子条件b>0和c<1保持不变的情况下,只要改变原子条件a>0`即可实现判定的T1和F1的转换。满足100%条件决定覆盖的测试用例如表所示。
条件决定测试

将满足100%条件决定测试覆盖的测试用例和满足100%判定条件覆盖的测试用例相比较,可以发现判定条件测试的测试用例只是条件决定测试的测试用例的一个子集,即100%的条件决定覆盖意味着100%的判定条件覆盖。

条件决定测试方法比判定条件测试方法具有更高测试覆盖率的原因是对于判定条件测试而言,无论判定中的原子条件个数有多少,满足100%判定条件覆盖的测试用例数目最少可以是两个。推导如下,各个原子条件的取值只有T或者F两种。从每个原子条件的取值中取出一个将其组合后形成一组元素,并将这组元素代入整个判定中,最后得出的判定结果为 T;然后从剩下的各个条件的取值中,组合形成另一组元素,并将该组元素代入整个判定中,得到的判定结果为F,这样就达到了100%判定条件覆盖的要求。即各个原子条件的可能取值T和F都必须取到,且满足判定取值T和F。而对于条件决定测试而言,如果一个判定中有N个原子条件,每个原子条件都出现一次(保持其他原子条件不变,并且这个原子取值的变化会导致判定结果的变化),那么要满足100%的条件决定覆盖需要N + 1个原子条件的组合。即需要N + 1个测试用例,这也说明满足100%的条件决定覆盖的测试用例数目与判定中的原子条件个数有关。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!