一、动态白盒测试(重点)

1、概念

动态:测试运行中的程序 白盒:洞察盒子里面,检查代码并观察运行状况

生成测试数据、分析测试结果的工作量大,使开展测试工作费时、费力、费人

二、动态白盒测试常用的测试用例方法

a.逻辑覆盖

语句覆盖;分支(判定覆盖);条件覆盖;分支-条件覆盖;条件组合覆盖;路径覆盖

b.基本路径覆盖(重点)

c.循环覆盖

(二)动态白盒测试(含逻辑覆盖例子)_条件覆盖

void DoWork(int x,int y,int z)

{

int k=0,j=0;

if((x>3)&&(z<10))

{

k=x*z-1;

j=sqrt(k); //语句块1

}

if((x==4)||(y>5))

{

j=x*y+10; //语句块2

}

j=j%3;           //语句块3


}

1、语句覆盖

基本思想:设计若干条测试用例,保证程序中所有可执行语句 ,至少被执行一次

x=4 z=9  y=5


2、判定(分支)覆盖

基本思想:设计若干条测试用例,保证程序中每一个判定的真分支、假分支至少被执行一次

  x=4 z=9 y=5  (11)
x=2 z=9 y=2 (00)


3、条件覆盖

基本思想:设计若干条测试用例,保证每个判定中每个条件的取值情况,至少被执行一次

   x=4 z=9 y=6        11 11 
x=2 z=11 y=4 00 00


注意:满足条件覆盖,不一定满足判定覆盖

还可以这样设计测试用例:(以下第二个判定一直为真)

x=2 z=11 y=6 00 01

x=4 z=9 y=4 11 10

4、判定-条件覆盖

基本思想:设计若干条测试用例,保证程序中每个判定中的每个条件的取值情况至少执行一次,并且要保证每个判定的所有取值情况至少执行一次

   x=2 z=11 y=4     00 00
x=2 z=11 y=4 11 11


5、条件组合

判定1中的条件1:x>3 条件2: z<10 2^2

判定2中的条件1:x=4 条件2: y>5 2^2

 00 00:x=2 z=11 y=4
01 01:x=1 z=9 y=6
10 10:x=4 z=11 y=3
11 11:x=4 z=9 y=6


6、路径覆盖

   1-2-4:x=4 z=9 y=6  11
1-2-5:x=5 z=9 y=4 10
1-3-5:x=2 z=11 y=4 00
1-3-4: x=2 z=9 y=6 01


优点:这种测试方法可以对程序进行彻底的路径测试

缺点:需要设计大量、复杂的测试用例,使得工作量呈指数级增长,而且不见得把所有的条件组合都覆盖

7、条件组合覆盖结合路径覆盖

x=4 z=9 y=6  11 11
x=5 z=9 y=4 11 00
x=2 z=11 y=4 00 00
x=2 z=9 y=6 01 01
x=4 z=11 y=3 10 10 (路径覆盖没有的情况)


(二)动态白盒测试(含逻辑覆盖例子)_白盒测试_02

===满足判定-条件覆盖,一定满足判定覆盖,一定满足条件覆盖

===满足条件覆盖,不一定满足判定覆盖

===满足判定覆盖,一定满足语句覆盖