条件覆盖

    什么是条件覆盖

    条件覆盖是指设计足够多的测试用例,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。

    条件覆盖率=被评价到的条件取值的数量/条件取值的总数*100%

    条件覆盖的举例分析

    例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=5abdT1、T2、T3、T4bd
    x=2、y=5、z=5ace-T1、T2、-T3、-T4ce
    x=4、y=5、z=15acdT1、-T2、T3、-T4cd

    上面的测试用例不但覆盖了所有分支的真假两个分支,而且覆盖了判断中的所有条件的可能值。

    “条件覆盖”并不包含“分支覆盖”

    如对语句

    IF(A AND B) THEN S

    设计2个测试用例,使其满足“条件覆盖”:

    1、使A为真并使B为假;

    2、使A为假而且B为真;

    但是它们都未能使语句S得以执行。

    对例2设计了下面的测试用例,则虽然满足了条件覆盖,但只覆盖了第一个条件的取假分支和第二个条件的取真分支,不满足分支覆盖的要求。

    测试用例通过路径条件取值覆盖分支
    x=2、y=6、z=5acd-T1、T2、-T3、T4cd
    x=4、y=5、z=15acdT1、-T2、T3、-T4cd
联系管理员
15775053793

作者头像
经济百科创始人

经济百科

上一篇:网络维护
下一篇:域名投资

发表评论