白盒测试用例练习.docx

上传人:b****5 文档编号:11916774 上传时间:2023-04-16 格式:DOCX 页数:24 大小:100.91KB
下载 相关 举报
白盒测试用例练习.docx_第1页
第1页 / 共24页
白盒测试用例练习.docx_第2页
第2页 / 共24页
白盒测试用例练习.docx_第3页
第3页 / 共24页
白盒测试用例练习.docx_第4页
第4页 / 共24页
白盒测试用例练习.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

白盒测试用例练习.docx

《白盒测试用例练习.docx》由会员分享,可在线阅读,更多相关《白盒测试用例练习.docx(24页珍藏版)》请在冰豆网上搜索。

白盒测试用例练习.docx

白盒测试用例练习

白盒测试用例练习

白盒测试用例练习

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

voidDoWork(intx,inty,intz)

{

intk=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

k=0

j=0

k=x*y-1

j=sqrt(k)

x>3

and

z<10

}

 

x=4,z=5,y=8

k=31,j=0

T

T

P1(a-c-e)

x=2,z=11,y=5

k=0,j=0

F

F

P4(a-b-d)

也可以让测试用例测试路径P2和P3。

相应的两组输入数据如下:

测试用例输入

输出

判定M的取值

判定N的取值

覆盖路径

x=5,z=5,y=4

k=19,j=sqrt(19)%3

T

F

P2(a-c-d)

x=4,z=11,y=6

k=0,j=1

F

T

P3(a-b-e)

3、条件覆盖

对于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

k=31,j=0

T1,T2,T3,T4

x>3,z<10,x=4,y>5

P1(a-c-e)

x=3,z=11,y=5

k=0,j=0

F1,F2,F3,F4

x<=3,z>=10,x!

=4,y<=5

P4(a-b-d)

4、判定/条件覆盖

测试用例输入

输出

取值条件

具体取值条件

覆盖路径

x=4,z=5,y=8

k=31,j=0

T1,T2,T3,T4

x>3,z<10,x=4,y>5

P1(a-c-e)

x=3,z=11,y=5

k=0,j=0

F1,F2,F3,F4

x<=3,z>=10,x!

=4,y<=5

P4(a-b-d)

5、组合覆盖

条件组合

1)x>3,z<102)x>3,z>=10

3)x<=3,z<104)x<=3,z>=10

5)x=4,y>56)x=4,y<=5

7)x!

=4,y>58)x!

=4,y<=5

测试用例输入

输出

覆盖条件取值

覆盖条件组合

覆盖路径

x=4,z=5,y=6

k=23,j=1

T1,T2,T3,T4

1,5

P1(a-c-e)

x=4,z=10,y=5

k=0,j=0

T1,F2,T3,F4

2,6

P2(a-c-d)

x=3,z=5,y=6

k=14j=1

F1,T2,F3,T4

3,7

P3(a-b-e)

z=3,z=10,y=5

k=0,j=2

F1,F2,F3,F4

4,8

P4(a-b-d)

6、路径覆盖

测试用例输入

输出

覆盖条件取值

覆盖条件组合

覆盖路径

x=4,z=5,y=8

k=31,j=0

T1,T2,T3,T4

1,5

P1(a-c-e)

x=5,z=5,y=4

k=19,j=sqrt(19)%3

T1,T2,F3,F4

1,8

P2(a-c-d)

x=4,z=11,y=6

k=0,j=1

T1,F2,T3,T4

2,5

P3(a-b-e)

x=2,z=11,y=5

k=0,j=0

F1,F2,F3,F4

4,8

P4(a-b-d)

 

题目二:

三角形问题

在三角形计算中,要求输入三角型的三个边长:

A、B和C。

当三边不可能构成三角形时提示错误,可构成三角形时计算三角形周长。

若是等腰三角形打印“等腰三角形”,若是等边三角形,则提示“等边三角形”。

画出程序流程图、控制流程图、计算圈复杂度V(g),找出基本测试路径。

 

一、核心程序代码

/**判断三角形的类*/

publicclassTriangleTestMethod{

/**判断三角形的种类。

参数a,b,c分别为三角形的三边,

*返回的参数值为0,表示非三角形;

*为1,表示普通三角形;

*为2,表示等腰三角形;

*为3,表示等边三角形。

*/

publicstaticintcomfirm(inta,intb,intc){

if((a+b>c)&&(b+c>a)&&(a+c>b)){//判断为三角形

if((a==b)&&(b==c))//判断为等边三角形

return3;

if((a==b)||(b==c)||(a==c))//判断为等腰三角形

return2;

else//判断为普通三角形

return1;

}

else{//为非三角形

return0;

}

}

}

二、程序流程图

三、测试用例

1.语句覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case1

a=1,b=2,c=3

0

1,⑤

0

Case2

a=3,b=4,c=5

1

1,②,④,⑥

2

1

Case3

a=3,b=3,c=4

2

1,②,④,⑦

2

2

Case4

a=3,b=4,c=5

3

1,②,③

2

3

2.判定覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case11

a=1,b=2,c=3

0

2,⑤

0

Case12

a=3,b=4,c=5

1

3,②,④,⑥

4

1

Case13

a=3,b=3,c=4

2

3,②,④,⑦

4

2

Case14

a=3,b=4,c=5

3

3,②,③

4

3

3.条件覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case5

a=1,b=6,c=7

0

F1,T2,T3

0

Case6

a=7,b=1,c=6

0

T1,F2,T3

0

Case7

a=1,b=7,c=6

0

T1,T2,F3

0

Case8

a=3,b=3,c=4

2

T1,T2,T3,T4,F5,T6,F7,F8

2

Case9

a=3,b=4,c=3

2

T1,T2,T3,F4,F5,F6,F7,T8

2

Case10

a=4,b=3,c=3

2

T1,T2,T3,F4,T5,F6,T7,F8

2

4.条件-判定覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case15

a=1,b=6,c=7

0

F1,T2,T3

0

Case16

a=7,b=1,c=6

0

T1,F2,T3

0

Case17

a=1,b=7,c=6

0

T1,T2,F3

0

Case18

a=3,b=3,c=4

2

T1,T2,T3,T4,F5,T6,F7,F8

2

Case19

a=3,b=4,c=3

2

T1,T2,T3,F4,F5,F6,F7,T8

2

Case20

a=4,b=3,c=3

2

T1,T2,T3,F4,T5,F6,T7,F8

2

Case21

a=3,b=3,c=3

3

F1,T2,T3

(3,②,③)

3

Case22

a=3,b=4,c=5

1

T1,F2,T3

(①,②,④,⑥)

1

5.条件组合覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case23

a=1,b=6,c=7

0

F1,T2,T3

0

Case24

a=7,b=1,c=6

0

T1,F2,T3

0

Case25

a=1,b=7,c=6

0

T1,T2,F3

0

Case26

a=3,b=3,c=4

2

T1,T2,T3,T4,F5,T6,F7,F8

2

Case27

a=3,b=4,c=3

2

T1,T2,T3,F4,F5,F6,F7,T8

2

Case28

a=4,b=3,c=3

2

T1,T2,T3,F4,T5,F6,T7,F8

2

Case29

a=3,b=4,c=5

1

T1,T2,T3,

F4,F5,

F6,F7,F8

1

Case30

a=3,b=4,c=3

2

T1,T2,T3,

F4,F5,

F6,F7,T8

2

备注

其他条件组合,无法到达结束

四、程序控制流图

基本路径覆盖测试用例

输入

期望输出

覆盖对象

测试结果

Case31

a=1,b=6,c=7

0

A->D

0

Case32

a=7,b=6,c=1

0

A->B->D

0

Case33

a=1,b=7,c=6

0

A->B->C->D

0

Case34

a=3,b=3,c=3

3

A->B->C->E->G->H

3

Case35

a=3,b=3,c=4

2

A->B->C->E->G->I

2

Case36

a=4,b=3,c=3

2

A->B->C->E->F->H

2

Case37

a=3,b=4,c=3

2

A->B->C->E->F->J->H

2

Case38

a=3,b=4,c=5

1

A->B->C->E->F->J->K

1

题目三:

计算生日是星期几

已知公元1年1月1日是星期一。

编写一个程序,只要输入年月日,就能回答那天是星期几。

应用逻辑覆盖方法和基路径测试方法为上面的问题设计测试用例

一.程序代码

#include

intcheck(intyear,intmonth,intday){

intpass=1;

intleap=0;

if((year%4==0&&year%100!

=0)||year%400==0)

leap=1;

if(year<1||day<1)return0;

switch(month)

{case1:

case3:

case5:

case7:

case8:

case10:

case12:

if(day>31)return0;break;

case4:

case6:

case9:

case11:

if(day>30)return0;break;

case2:

if(leap==1&&day>29){return0;}

if(leap==0&&day>28){return0;}

break;

default:

return0;break;

}

returnpass;

}

voidfun(){

intyear,month,day,sumday;

sumday=0;

printf("inputyear,month,day:

\n");

scanf("%d%d%d",&year,&month,&day);

if(check(year,month,day)==0){printf("输入的日期无效");return;}

if(month==1||month==2)

{month+=12;

year--;

}

sumday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;

if(month==13||month==14)

{month-=12;year++;}

switch(sumday)

{case0:

printf("%d-%d-%disMonday\n",year,month,day);break;

case1:

printf("%d-%d-%disTuesday\n",year,month,day);break;

case2:

printf("%d-%d-%disWednesday\n",year,month,day);break;

case3:

printf("%d-%d-%disThurday\n",year,month,day);break;

case4:

printf("%d-%d-%disFriday\n",year,month,day);break;

case5:

printf("%d-%d-%disSaturday\n",year,month,day);break;

case6:

printf("%d-%d-%disSunday\n",year,month,day);break;

default:

printf("dateerror");break;

}

}

main()

{for(inti=0;i<14;i++)

fun();

}

二.画出程序的控制流图

1.程序流程图如下:

month==13||month==14

no

month==1||month==2

yes

month+=12;

year--;

计算星期数sumday=公式(year,month,day)

no

yes

Month-=12;

year++;

5

4

6

0123456其他

sumday

输出语句1

输出语句2

输出语句3

输出语句4

输出语句5

输出语句6

输出语句7

输出语句0

结束

7

8

9

10

11

12

13

14

15

15

输入年月日year,month,day

2

3

end

Check(year,month,day)

0

1

Check()函数

no

no

no

yes

yes

得到year,month,day

year<1||day<1

no

(year%4==0&&year%100!

=0)||year%400==0

135781012469112其他

month

returnpass

pass=1;leap=0;

leap=1;

return0

day>31

day>30

return0

no

yes

return0

yes

leap==1&&day>29

leap==0&&day>28

return0

16

18

17

19

20

21

22

23

24

25

26

28

29

28

27

31

30

32

33

 

2.程序控制流图如下:

16

19

17

21

22

23

24

31

33

34

end

15

2

4

3

5

8

7

6

12

end

9

10

11

13

14

3.用基本路径的测试路径

编号

基本路径

编号

基本路径

1

⒃⒄⒆(21)(24)(31)(33)

11

(0)①

2

⒃⒆(34)

12

(0)②③④⑤⑥⑦⑧

3

⒃⒆(21)(34)

13

(0)②④⑤⑦⑨

4

⒃⒆(21)(22)(34)

14

(0)②④⑤⑦⑩

5

⒃⒆(21)(23)(34)

15

(0)②④⑤⑦(11)

6

⒃⒆(21)(24)(34)

16

(0)②④⑤⑦(12)

7

⒃⒆(21)(31)(34)

17

(0)②④⑤⑦(13)

8

⒃⒆(21)(22)(33)

18

(0)②④⑤⑦(14)

9

⒃⒆(21)(23)(33)

10

⒃⒆(21)(31)(33)

 

条件:

编号

条件

编号

编号

T1

month==1

T13

year%100!

=0

T25

month==2

T2

month==2

T14

year%100!

=0

T26

month==3

T3

month==13

T15

year%400==0

T27

month==4

T4

month==14

T16

year<1

T28

month==5

T5

sumday==0

T17

day<1

T29

month==6

T6

sumday==1

T18

month==1

T30

month==7

T7

sumday==2

T19

day>31

T31

month==8

T8

sumday==3

T20

day>30

T32

month==9

T9

sumday==4

T21

leap==1

T33

month==10

T10

sumday==5

T22

leap==0

T34

month==11

T11

sumday==6

T23

day>29

T35

month==12

T12

year%4==0

T24

day>28

4.测试用例

用例编号

输入的数据

预期的输出

实际的输出

执行的路径

覆盖的条件

1

201221

Wednesday

Wednesday

(0)②③④⑤⑥⑦⑧

T12,T13,T25,T21,T2,T4,T7

2

201231

Thurday

Thurday

(0)②④⑤⑦⑨

T12,T13,T26,T8

3

201246

Friday

Friday

(0)②④⑤⑦⑩

T12,T13,T27,T9

4

201255

Saturday

Saturday

(0)②④⑤⑦(11)

T12,T13,T28,T10

5

201263

Sunday

Sunday

(0)②④⑤⑦(12)

T12,T13,T29,T11

6

2012730

Monday

Monday

(0)②④⑤⑦(13)

T12,T13,T30,T5

7

2000815

Tuesday

Tuesday

(0)②④⑤⑦(14)

T12,T15,T31,T6

8

2012931

错误提示

错误提示

(0)①

T12,T13,T20,T32

9

201328

Wednesday

Wednesday

⒃⒄⒆(21)(24)(31)(33)

T25,T22,T2,T4,T7

10

2013012

错误提示

错误提示

⒃⒆(34)

T17

11

2013126

Saturday

Saturday

⒃⒆(21)(34)

T18,T1,T3,T10

12

20131033

错误提示

错误提示

⒃⒆(21)(22)(34)

T33,T19

13

20131131

错误提示

错误提示

⒃⒆(21)(23)(34)

T34,T20

14

2012230

错误提示

错误提示

⒃⒆(21)(24)(34)

T12,T13,T25,T21,T23

15

2013229

错误提示

错误提示

⒃⒆(21)(31)(34)

T25,T24

16

20131231

Saturday

Saturday

⒃⒆(21)(22)(33)

T35,T10

17

2013630

Sunday

Sunday

⒃⒆(21)(23)(33)

T29,T11

18

2013215

Friday

Friday

⒃⒆(21)(24)(31)(33)

T25,T22,T2,T4,T9

19

01212

错误提示

错误提示

⒃⒆(34)

T16

题目四:

选择排序

下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:

一是元素类型为Element的数组V,另一个是数组大小n。

算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey(),一是交换两数组元素内容的操作Swap():

voidSelectSort(datalist&list){

/对表list.V[0]到list.V[n-1]进行排序,n是表当前长度。

for(inti=0;i

intk=i;//在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象

for(intj=i+1;j

if(list.V[j].getKey()

if(k!

=i)Swap(list.V[i],list.V[k]);//交换

}

}

(1)试计算此程序段的McCabe复杂性;

(2)用基本路径覆盖法给出测试路径;

(3)为各测试路径设计测试用例。

解答如下:

首先画出程序的流程图

开始

i=0

i

j++

k=i

j

k=j

k!

=i

Swap(list.V[i],list.V[k])

list.V[j]

i++

结束

j=i+1

Y

N

N

N

N

Y

Y

Y

程序流程图

(1)McCabe复杂性为:

V(G)=判定节点数+1=4+1=5

(2)用基本路径覆盖法给出测试路径:

1

2

3

4

5

6

7

8

9

10

11

12

程序图

0

从以上程序图中确定无关的基本路径:

Pa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1