白盒测试总结+实例

一、 逻辑覆盖

逻辑覆盖按覆盖程度由低到高大致分为以下几类:

(1) 语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;

(2) 判定覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;

(3) 条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;

(4) 判定/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;

(5)修正判定/条件覆盖:判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次,并且每个条件都能独立地影响判定结果。

(6) 条件组合覆盖:设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;

 

 

语句覆盖

 

 判定覆盖

 

 

总结:
判定覆盖比语句覆盖多了几乎一倍的
测试路径,比语句覆盖稍强。但往往大部分
的判定语句是由多个逻辑条件组合而成,若
仅仅判断其整个最终结果,而忽略每个条件
的取值情况,必然会遗漏部分测试路径,无
法保证判断条件的正确性。

条件覆盖 

 

 

总结:

覆盖了条件的测试用例不一定覆盖了分支。条件
覆盖只能保证每个条件的真值和假值至少满足一次,
而不考虑所有的判定结果,因此做到了完全的条件覆
盖并不能保证达到完全的判定覆盖。同理,做到了完
全的判定覆盖也并不能达到了完全的条件覆盖。因此,
需要对条件和分支兼顾。

4.判定/条件覆盖

 

 

4.修正判定/条件覆盖 

 

条件一:判定有真假,条件有真假。
条件二:条件的真假不影响判定的真假。(例如:a&&b ,b为0,那么a的值如何,判定都为假。)
但是有一点:修正条件判定覆盖必须依靠于多条件覆盖,即前者用例的选取是根据后者的用例(条件>=3的时候),且前者取值不具有唯一性。

总结:
1.线性地增加了测试用例数量。
2.对操作数及非等式条件变化敏感。
3:覆盖性更强。
4.主要用于测试飞行软件安全性的审查 。

5.条件组合覆盖

 

 题目一:使用逻辑覆盖测试方法测试以下程序段

程序段中每行开头的数字是对每条语句的编号。

(1)补充下面的程序流程图。(流程图中填入适当的代码)

        

(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、修正的判定/条件覆盖和条件组合覆盖方法设计测试用例,并写出每个测试用例的执行路径。(通过的路径用a、b、c等字母来表示 )。

其中,规定 x>3为条件T1

z<10为条件T2

x==4为条件T3

y<5为条件T4

① 语句覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTTT

4

6

8

23

1

acef

② 判定覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTFF

5

4

8

19

2

acdf

FFTT

4

6

11

0

1

abef

③ 条件覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTTT

4

6

8

23

1

acef

FFFF

1

1

11

0

0

abdf

④ 判定/条件覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTTT

4

6

8

23

1

acef

FFFF

1

1

11

0

0

abdf

⑤ 修正的判定/条件覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTFF

5

4

8

19

2

acdf

TFTF

4

0

11

0

1

abef

FTFT

1

6

1

0

1

abef

⑥ 条件组合覆盖

ID

T1 T2 T3 T4的取值

输入

预期输出

通过路径

x

y

z

k

j

01

TTTT

4

6

8

23

1

acef

TFTF

4

0

11

0

1

abef

FTFT

1

6

1

0

1

abef

FFFF

1

1

11

0

0

abdf

题目二:使用逻辑覆盖测试方法测试以下程序段

#include"stdio.h"
int main()
{
int x,y,z;
scanf("%d%d",&x,&y);
if((x>0)&&(y>0))
{
z=x+y+10;
}
else
{
z=x+y-10;
}
if(z<0)
{
z=0;
printf("%d\n",z);
}
else
{
printf("%d\n",z);
}
return 0;
}

 

(1)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、修正的判定/条件覆盖和条件组合覆盖方法设计测试用例,并写出每个测试用例的执行路径。(通过的路径用a、b、c等字母来表示 )。

  1. 语句覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

-1,-1

0

N

Y

acdf

  1. 判定覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

-1,-1

0

N

Y

acdf

  1. 条件覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

-1,-1

0

N

Y

acdf

  1. 判定/条件覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

-1,-1

0

N

Y

acdf

  1. 修正的判定/条件覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

20,-1

0

N

Y

acdf

-10,1

-19

N

N

acef

  1. 条件组合覆盖

x,y的取值

输出magic

判定M的取值

判定N的取值

覆盖路径

1,1

12

Y

N

abef

-1,-1

0

N

Y

acdf

20,-1

0

N

Y

acdf

-10,1

-19

N

N

acef

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值