当前位置:文档之家› 软件测试案例-白盒测试覆盖案例

软件测试案例-白盒测试覆盖案例

根据定义只需设计以下两个测试用例便可以覆盖8个条 件值以及4个判断分支。
测试用例 通过路径
条件取值
x=4、y=6、z=5 abd
T1、T2、T3、T4
覆盖分支 bd
x=2、y=5、z=11 ace
-T1、-T2、-T3、- ce T4
分支条件覆盖从表面来看,它测试了所有条件的取值,
但是实际上某些条件掩盖了另一些条件。例如对于条件表达 式(x>3)&&(z<10)来说,必须两个条件都满足才能确定表达 式为真。如果(x>3)为假则一般的编译器不在判断是否 z<10了。对于第二个表达式(x= =4)||(y>5)来说,若 x==4测试结果为真,就认为表达式的结果为真,这时不再检 查(y>5)条件了。因此,采用分支条件覆盖,逻辑表达式 中的错误不一定能够查出来了。
ace
-T1、-T2、-T3、-T4 4和8
上面的测试用例覆盖了所有条件的可能取值的组合,覆 盖了所有判断的可取分支,但是却丢失了一条路径abe。
路径测试:
路径测试就是设计足够多的测试用例,覆盖被测试对象 中的所有可能路径。
在上面的测试用例中再添加一个测试用例则可对程序进 行了全部的路径覆盖。
测试用例 x=4、y=6、z=5 x=4、y=5、z=15 x=2、y=6、z=15 x=5、y=6、z=5
测试用例的输入为: { x=4、y=5、z=5} { x=2、y=5、z=5}
上面的两个测试用例虽然能够满足条件覆盖的要求,但 是也不能对判断条件进行检查,例如把第二个条件y>5错误 的写成y<5,、上面的测试用例同样满足了分支覆盖。
条件覆盖
条件覆盖就是设计若干个测试用例,运行被测试对象, 使得程序中每个判断的每个条件的可能取值至少执行一次。
测试用例输入为:{ x=4、y=5、z=5} 程序执行的路径是:abd 该测试用例虽然覆盖了可执行语句,但并不能检查判 断逻辑是否有问题,例如在第一个判断中把&&错误的写 成了||,则上面的测试用例仍可以覆盖所有的执行语句。 可以说语句覆盖率是最弱的逻辑覆盖准则。
分支覆盖
对于上面的程序,如果设计两个测试用例则可以满足条 件覆盖的要求。
x=4、y=6、z=5 abd
T1、T2、T3、T4 bd
x=2、y=5、z=5 ace
-T1、T2、-T3、-T4 ce
x=4、y=5、z=15 acd
T1、-T2、T3、-T4 cd
上面的测试用例不但覆盖了所有分支的真假两个分支, 而且覆盖了判断中的所有条件的可能值。
但是如果设计了下面的测试用例,则虽然满足了条件覆盖, 但只覆盖了第一个条件的取假分支和第二个条件的取真分支, 不满足分支覆盖的要求。
对例子中的所有条件取值加以标记。例如: 对于第一个判断: 条件x>3 取真值为T1,取假值为-T1 条件z<10 取真值为T2,取假值为-T2 对于第二个判断: 条件x=4 取真值为T3,取假值为-T3 条件y>5 取真值为T4,取假值为-T4
则可以设计测试用例如下
测试用例
通过路径 条件取值
覆盖分支
入口
a (x>3)&&(z<10) No c b Yes
执行语句块1
(x= =4)||(y>5) dYes
No e
执行语句块2
执行语句块3
出口
语句覆盖:
为了说明简略,分别对各个判断的取真、取假分支编 号为b、c、d、e。
为了测试语句覆盖率只要设计一个测试用例就可以把 三个执行语句块中的语句覆盖了。
测试用例 通过路径
条件取值
覆盖分支
x=2、y=6、z=5 acd
-T1、T2、-T3、T4 cd
x=4、y=5、z=5 acd
T1、-T2、T3、-T4 cd
分支条件覆盖:
分支条件覆盖就是设计足够的测试用例,使得判断中每 个条件的所有可能取值至少执行一次,同时每个判断的所有 可能判断结果至少执行,即要求各个判断的所有可能的条件 取值组合至少执行一次。
根据定义取4个测试用例,就可以覆盖上面8种条件取值的组合。 测试用例如下表:
测试用例 x=4、y=6、z=5 x=4、y=5、z=15 x=2、y=6、z=5 x=2、y=5、z=15
通过路径
条件取值
abd
T1、T2、T3、T4
覆盖组合号 1和5
acd
T1、-T2、T3、-T4 2和6
acd
-T1、T2、-T3、T4 3和7
通过路径
覆盖条件
abd
T1、T2、T3、T4
acd
T1、-T2、T3、-T4
ace
-T1、-T2、-T3、-T4
abe
-T1、-T2、-T3、-T4
源程序代码片段:
void DoWork(int x,int y,int z)
{
int k=0,ห้องสมุดไป่ตู้=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
}
对应流程图如下:
条件组合覆盖:
条件组合覆盖就是设计足够的测试用例,运行被测试对 象,使得每一个判断的所有可能的条件取值组合至少执行一 次。
现在对例子中的各个判断的条件取值组合加以标记如下:
1.x>3,z<10 记做T1 T2, 第一个判断的取真分支 2.x>3,z>=10 记做T1 -T2, 第一个判断的取假分支 3.x<=3,z<0 记做-T1 T2, 第一个判断的取假分支 4.x<=3,z>=10 记做-T1 -T2,第一个判断的取假分支 5.x=4,y>5 记做T3 T4, 第二个判断的取真分支 6.x=4,y<=5 记做T3 -T4, 第二个判断的取真分支 7.x!=4,y>5 记做-T3 T4, 第二个判断的取真分支 8.x!=4,y<=5 记做-T3 -T4,第二个判断的取假分支
相关主题