判定/条件覆盖(Decision/Condition coverage)
上一篇 /
下一篇 2008-12-04 09:26:12
/ 个人分类:White-Box Testing
针对上面的问题引出了另一种覆盖标准——“判定/条件覆盖”,它的含义是:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。对图6.4的程序,上一节中的两个例子
①A=2,B=0,X=4 (沿ace路径) ②A=1,B=1,X=1(沿abd路径)
是满足这一标准的。
“判定/条件覆盖”似乎是比较合理的,但事实并非如此,因为大多数计算机不能用一条指令对多个条件作出判定,而必须将源程序中对多个条件的判定分解成几个简单判定,所以较彻底的测试应使每一个简单判定都真正取到各种可能的结果。
图6.5是由编译系统产生的图6.4的目标程序。上面的两个例子未能使目标程序中的每一个简单判定取到各种可能的结果;它们不能使判定I为“假”也不能使判定K为“真”,其原因在于:含有AND或OR的逻辑表达式中,某些条件将抑制其他条件,例如逻辑表达式A AND B,如果A为“假”,目标程序就不再检查条件B了,这样B中的错误就发现不了。 | |
上面的讨论说明了,尽管“判定/条件覆盖”看起来能使各种条件取到所有可能的值,但实际上并不一定能检查到这样的程度。
收藏
举报
TAG: