一、动态白盒测试(重点)
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 (路径覆盖没有的情况)
===满足判定-条件覆盖,一定满足判定覆盖,一定满足条件覆盖
===满足条件覆盖,不一定满足判定覆盖
===满足判定覆盖,一定满足语句覆盖