一个判定中往往包含了若干个条件,例如图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得以执行。

更多推荐