条件覆盖

目录

  • 1 什么是条件覆盖
  • 2 条件覆盖的举例分析

什么是条件覆盖

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

  条件覆盖率=被评价到的条件取值的数量/条件取值的总数*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=5abdT1T2T3T4bd
x=2、y=5、z=5ace-T1T2、-T3、-T4ce
x=4、y=5、z=15acdT1、-T2T3、-T4cd

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

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

  如对语句

   IF(A AND B) THEN S

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

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

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

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

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

测试用例通过路径条件取值覆盖分支
x=2、y=6、z=5acd-T1T2、-T3T4cd
x=4、y=5、z=15acdT1、-T2T3、-T4cd
阅读数:263