条件覆盖的举例分析
例1:
PROCEDURE M(VAR A,B,X:REAL);
BEGIN
IF (A>1) AND (B=0) THEN X:=X/A;
IF (A=2) OR (X>1) THEN X:=X+1;
END.
例1的程序有四个条件:
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执行)。
例2:
void DoWork(int x,int y,int z)
{ int k=0,j=0;
if((x>3)&&(z<10))
{ k=x*y-1; //语句块1
j=sqrt(k);
}
if((x==4)||(y>5))
j=x*y+10; //语句块2
j=j%3; //语句块3
}
对例2中的所有条件取值加以标记。
对于第一个判断:
条件x>3 取真值为T1,取假值为-T1
条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4 取真值为T3,取假值为-T3
条件y>5 取真值为T4,取假值为-T4
则可以设计测试用例如下:
| 测试用例 | 通过路径 | 条件取值 | 覆盖分支 | | --- | --- | --- | --- | | x=4、y=6、z=5 | abd | T1、T2、T3、T4 | bd | | x=2、y=5、z=5 | ace | -T1、T2、-T3、-T4 | ce | | x=4、y=5、z=15 | acd | T1、-T2、T3、-T4 | cd |
上面的测试用例不但覆盖了所有分支的真假两个分支,而且覆盖了判断中的所有条件的可能值。
“条件覆盖”并不包含“分支覆盖”
如对语句
IF(A AND B) THEN S
设计2个测试用例,使其满足“条件覆盖”:
1、使A为真并使B为假;
2、使A为假而且B为真;
但是它们都未能使语句S得以执行。
对例2设计了下面的测试用例,则虽然满足了条件覆盖,但只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆盖的要求。
| 测试用例 | 通过路径 | 条件取值 | 覆盖分支 | | --- | --- | --- | --- | | x=2、y=6、z=5 | acd | -T1、T2、-T3、-T4 | cd | | x=4、y=5、z=15 | acd | T1、-T2、T3、-T4 | cd |
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请您通过400-62-96871或关注我们的公众号与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!







请先 登录后发表评论 ~