5-2 基于判定的测试

1.语句覆盖

void main()

{

float A,B,X;

scanf(“%f%f%f”,&A,&B,&X);

if((A>1)&&(B==0))

X=X/A;

if((A==2)||(X>1))

X=X+1;

printf(“%f”,X);

}

语句覆盖:是一个比较弱的测试标准,设计若干测试用例,使得程序中每个可执行语句至少都能被执行一次

使程序中每个语句至少执行一次,设计一个能通过路径ace的例子就可以了

测试用例输入数据: A=2,B=0,X=3

2.判定覆盖:使得程序中每个分支至少都获得一次“真值”和“假值”,又称分支覆盖。是一个比“语句覆盖”稍强的测试标准

判定覆盖

void main()

{

float A,B,X;

scanf(“%f%f%f”,&A,&B,&X);

if((A>1)&&(B==0))

X=X/A;

if((A==2)||(X>1))

X=X+1;

printf(“%f”,X);

}

用例设计:

路径acd

输入用例数据:

A= 3  B=0   X=1

路径abe

输入用例数据:

A= 2  B=1   X=3

用例设计(还可以是)

路径abd

路径ace

3.条件覆盖:设计若干测试用例,使得每个判定中每个条件的可能取值至少满足一次

void main()

{

float A,B,X;

scanf(“%f%f%f”,&A,&B,&X);

if((A>1)&&(B==0))

X=X/A;

if((A==2)||(X>1))

X=X+1;

printf(“%f”,X);

}

4.条件判定覆盖定义

条件判定覆盖:设计若干测试用例,使得判定中所有条件可能取值至少执行一次,同时,使得所有判定的可能至少执行一次

5.条件组合覆盖定义

条件组合覆盖:设计若干测试用例,使得判定中条件的各种组合都至少执行一次。

A>1    B=0      (1)

A>1    B=0      (2)

A<=1   B=0      (3)

A<=1   B=0      (4)

 

A=2    X>1      (5)

A=2    X<=1    (6)

A=2    X>1      (7)

A=2    X<=1    (8)

(1,5)    (a,c,e) 输入数据:A=2    B=0   X=4  

(2,6)    (a,b,e) 输入数据:A=2    B=1  X=1

(3,7)    (a,b,e) 输入数据:A=1    B=0  X=2

(4,8)    (a,b,d) 输入数据:A=1    B=1  X=1

内容总结

程序结构分析

顺序、判定、循环、嵌套判定、嵌套循环

对于判定的测试

语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖

 

例题: 对判定测试的练习:根据如下代码,画出程序流程图(标注编号),写出语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖;

A void fun(int X ,int A ,int B){

  1.      if((A < 4)&&(B = 5)){
  2.          X = X / A;

     }

  1.      if((A = 2) || (X > 1)){
  2.         X = X + 1;

     }

}

书写要求:

   语句覆盖:输入数据是……,备注:执行了某某语句;

   判定覆盖:输入数据是……,备注:执行了哪些分支(画图时,标注上编号);

   条件覆盖:输入数据是……,备注:执行了哪些条件为真,哪些条件为假;

等等,每条测试用例通过写备注,让阅读这一下子能明白每条测试用例的设计目的;

 

猜你喜欢

转载自blog.csdn.net/weixin_42202174/article/details/89186702
5-2