一个判定中往往包含了若干个条件,例如图6.4的程序中,判定(A>1) AND (B=0)包含了两个条件:A>1以及B=0,所以可引进一个更强的覆盖标准——“条件覆盖”“条件覆盖”的含义是:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
图6.4的程序有四个条件:
A>1、B=0、A=2、X>1
为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有:
A>1、A≤1、B=0、B≠0
等各种结果出现,以及在b点有:
A=2、A≠2、X>1、X≤1
等各种结果出现。
现在只需设计以下两个测试用例就可满足这一标准:
①A=2,B=0,X=4 (沿路径ace执行); ②A=1,B=1,X=1 (沿路径abd执行)。
“条件覆盖”通常比“判定覆盖”强,因为它使一个判定中的每一个条件都取到了两个不同的结果,而判定覆盖则不保证这一点。但如对语句IF(A AND B)THEN S设计测试用例使其满足"条件覆盖",即使A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。