您的当前位置:首页正文

软件测试-白盒测试用例练习题

来源:好兔宠物网
白盒测试用例练习

一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。

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

int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1;

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

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

j=x*y+10;

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

N k=0 j=0 a x>3 and Y c k=x*y-1 j=sqrt(k)

b

x=4 e or Y j=x*y+10 N d j=j%3

由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d) 将里面的判定条件和过程记录如下: 判定条件M={x>3 and z<10} 判定条件N={x=4 or y>5} 1、 语句覆盖

测试用例输入 x=4,z=5,y=8 2、判定覆盖

p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。 测试用例输入 x=4,z=5,y=8 x=2,z=11,y=5 输出 k=31,j=0 k=0,j=0 判定M的取值 T F 判定N的取值 T F 覆盖路径 P1(a-c-e) P4(a-b-d) 输出 k=31,j=0 判定M的取值 T 判定N的取值 T 覆盖路径 P1(a-c-e) 也可以让测试用例测试路径P2和P3。相应的两组输入数据如下:

测试用例输入 x=5,z=5,y=4 输出 k=19,j=sqrt(19)%3 判定M的取值 判定N的取值 T F 覆盖路径 P2(a-c-d) x=4,z=11,y=6

3、条件覆盖

k=0,j=1 F T P3(a-b-e) 对于M:x>3取真时T1,取假时F1; z<10取真时T2,取假时F2; 对于N:x=4取真时T3,取假时F3; y>5取真时T4,取假时F4。 条件:x>3,z<10,x=4,y>5 条件:x<=3,z>=10,x!=4,y<=5

根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示: 测试用例输入 x=4,z=5,y=8 x=3,z=11,y=5 输出 取值条件 具体取值条件 x>3,z<10,x=4,y>5 x<=3,z>=10,x!=4,y<=5

4、判定/条件覆盖 测试用例输入 x=4,z=5,y=8 x=3,z=11,y=5 输出 取值条件 具体取值条件 x>3,z<10,x=4,y>5 x<=3,z>=10,x!=4,y<=5 5、组合覆盖

条件组合

1)x>3,z<10 2)x>3,z>=10 3) x<=3,z<10 4)x<=3,z>=10

覆盖路径 P1(a-c-e) P4(a-b-d) 覆盖路径 P1(a-c-e) P4(a-b-d) k=31, j=0 T1,T2,T3,T4 k=0, j=0 F1,F2,F3,F4 k=31, j=0 T1,T2,T3,T4 k=0, j=0 F1,F2,F3,F4 5)x=4,y>5 6)x=4,y<=5 7)x!=4,y>5 8)x!=4,y<=5 测试用例输入 x=4,z=5,y=6 x=4,z=10,y=5 x=3,z=5,y=6 z=3,z=10,y=5 6、路径覆盖

测试用例输入 输出 覆盖条件取值 覆盖条件组合 x=4,z=5,y=8 x=5,z=5,y=4 k=31,j=0 k=19,j=sqrt(19)%3 x=4,z=11,y=6 x=2,z=11,y=5

k=0,j=1 k=0,j=0 T1,F2,T3,T4 F1,F2,F3,F4 2,5 4,8 P3(a-b-e) P4(a-b-d) T1,T2,T3,T4 T1,T2,F3,F4 1,5 1,8 P1(a-c-e) P2(a-c-d) 覆盖路径 输出 k=23, j=1 k=0, j=0 k=14 j=1 k=0, j=2 覆盖条件取值 T1,T2,T3,T4 T1,F2,T3,F4 F1,T2,F3,T4 F1,F2,F3,F4 覆盖条件组合 1,5 2,6 3,7 4,8 覆盖路径 P1(a-c-e) P2(a-c-d) P3(a-b-e) P4(a-b-d)

二、冒泡法排序:

#include<> main() {

int i,j,temp; int a[10];

for(i=0;i<10;i++) scanf (\"%d,\ for(j=0;j<=9;j++) { for (i=0;i<10-j;i++) if (a[i]>a[i+1]) {

temp=a[i];

a[i]=a[i+1]; a[i+1]=temp;} }

for(i=0;i<10;i++) printf(\"%5d,\ printf(\"\\n\"); }

2、程序流程图

3

N

9

5

i=i+1 i=0,j=0 1 j<9 1 2 42

NY

6

5

j=j+1 3

Y i<10-

8 N 7 a[i]>a[i+Y 4 9 tamp=a[i] a[i]=a[i+1] 6 结束 7 3白盒测试:

语句覆盖

测试用例 I=0,j=0 测试输入 覆盖对象 测试结果 1,2,3,4,56,7,8,9,11 ,1,4,3,2,5,7,6,8,9,11 1,2,4,5,6,3,7 判定覆盖

测试用例 I=0,j=0 测试输入 覆盖对象 测试结果 1,2,3,4,56,7,8,9,11 ,1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,3 条件覆盖

测试用例 I=0,j=0 测试输入 覆盖对象 测试结果 1,2,3,4,56,7,8,9,11 ,1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,3 路径覆盖

测试用例 I=0,j=0 测试输入 覆盖对象 测试结果 1,2,3,4,56,7,8,9,11

,1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,3

因篇幅问题不能全部显示,请点此查看更多更全内容