实验二白盒测试

一、实验目的

1、 掌握白盒测试的基础知识;

2、 掌握白盒测试的检查内容及测试目的;

3、 掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。

二、实验要求

1、 复习有关内容,理解白盒测试;

2、 掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,并能设计出测试用例;

3、 对具体软件,能分别使用相应的白盒测试方法设计测试用例,并实施测试、分析测试结果。

三、实验内容

l 对实验一1、3题使用逻辑覆盖法进行测试用例设计。

实验一 1

 

流程图如下所示

 

 

 

 

逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 

 

  1. 语句覆盖

每个可执行语句都走一遍即可,即测试用例要覆盖所有的语句

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

  1. 判定覆盖

针对判断语句,在设定案例的时候,要设定True和False的两种案例;与语句覆盖不同的是增加了False的情况

使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

  1. 条件覆盖

要使得每个判断中的每个条件的可能取值至少满足一次。

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

  1. 判定/条件覆盖

判定覆盖各条件覆盖交叉,针对于判定中的条件取值

执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。

如下例所示:

 

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

  1. 条件组合覆盖

判定-条件覆盖的加强版

 

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

  1. 路径覆盖

走完所有的路径

输入

测试路径

测试结果

Aaaa

1-2-4-5

输入日期格式错误

20220411

1-2-4-6-14

星期一

20220412

1-2-4-6-7-15

星期二

20220413

1-2-4-6-7-8-16

星期三

20220414

1-2-4-6-7-8-10-17

星期四

20220415

1-2-4-6-7-8-10-11-18

星期五

20220416

1-2-4-6-7-8-10-11-12-19

星期六

20220417

1-2-4-6-7-8-10-11-12-13-20

星期日

 

 

 

 

 

 

 

 

实验一 3

 

 

 

 

 

 

 

 

 

  1. 语句覆盖

输入

测试路径

测试结果

coin

choice

0.5

橙汁

1-2-3-4-6

橙汁

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒

 

  1. 判定覆盖

每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足

输入

测试路径

测试结果

coin

choice

0.5

 

1-2-3-4-5

投币错误

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒

 

  1. 条件覆盖(由于这个判定中,每个判定中都只有一个条件,因此与判定覆盖一致)

要使得每个判断中的每个条件的可能取值至少满足一次。

输入

测试路径

测试结果

coin

choice

0.5

 

1-2-3-4-5

投币错误

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒

 

  1. 判定/条件覆盖

 

足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能

输入

测试路径

测试结果

coin

choice

0.5

 

1-2-3-4-5

投币错误

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒

 

5.条件组合覆盖

执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。

输入

测试路径

测试结果

 

coin

choice

0.5

 

1-2-3-4-5

投币错误

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒


  1. 路径覆盖

选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

输入

测试路径

测试结果

coin

choice

0.5

 

1-2-3-4-5

投币错误

1

橙汁

1-2-3-4-5-6-7-8

橙汁+0.5

0.5

啤酒

1-2-3-7-9

啤酒

 

l 对实验一2、4题使用基本路径法进行测试用例设计。

实验一 2

 

 

 

 

 

 

输入

测试路径

测试结果

Price

sum

105

 

1-2-3-4

输入错误

80

105

1-2-3-5-6-7

输入错误

90

80

1-2-3-5-6-8-9

输入错误

80

90

1-2-3-5-6-8-10

找零成功

 

 

 

 

 

 

 

 

 

 

实验一 4

 

 

 

 

输入

测试路径

测试结果

欧美

1-2-3

食物供应电影播放

国外非欧美商务

1-2-4-5-6

食物供应电影播放

国外非欧美经济

1-2-4-5-7

食物供应

111

1-2-4-8-14

航班信息错误

国内商务

1-2-4-8-9-10

食物供应

国内经济大于2小时

1-2-4-8-9-11-12

食物供应

国内经济小于2小时

1-2-4-8-9-11-13

暂无任何服务

 

 

 

程序伪代码

注意: 1)参数表中EMPTAB 为职员表,DEPTTAB为部门表;

   2 ) ESIZE为职员表长度,DSIZE为部门表长度;

       3ERRCODE为出错码

MAXSALERS = 0;

ERRCODE = 0;

if(ESIZE <= 0 || DSIZE <= 0)

ERRCODE = 1;

else

{

for(i = 1; i < DSIZE ; i++) //选出各部门中最大的销售额值

if(SALES[i] > MAXSALES)

MAXSALES = SALES[i];

for(j = 1; j < DSIZE; j++) //循环找出销售额最大的部门

if(SALES[j] == MAXSALES)

{

FOUND = false;

for(int k = 1; k < ESIZE ; k++) //检查销售额最大部门的所有人员

if(EMPTAB.DEPT(k) == DEPTTAB.DEPT(j))

{

FOUND = true;

if(SALARY(k) >= 15000.00 or JOB(k) = 'M') //满足条件的人员加工资

SALARY(k) = SALARY(k) + 100.00;

else

SALARY(k) = SALARY(k) + 200.00;

}

if(FOUND == false)

ERRCODE == 2;

}

}

 

采用判定覆盖、条件覆盖对该程序进行用例设计

 

 

 

 

判定覆盖

输入条件

测试路径

测试结果

 

1-2-4-3

0

 

1-2-4-5-9-10-11-15-17-18-19-16-14

2

 

1-2-4-5-9-10-11-15-17-18-19

1

 

 

 

 

 

条件覆盖

输入条件

测试路径

测试结果

 

1-2-4-3

0

 

1-2-4-5-9-10-11-15-17-18-19-16-14

2

 

1-2-4-5-9-10-11-15-17-18-19

1

 

五、实验体会:

较好的理解了语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,以及理解了这几种覆盖之间的区别,这几种覆盖的强弱关系是由弱到强的,在一定条件下,他们的测试用例可能一样,同时了解了基本路径覆盖的测试方法,整体来说较为清晰的了解了白盒测试的用例编写流程。同时也加强了逻辑图的绘制能力。想要设计出好饿的测试用例就要设计较为合理的测试流程图,有的情况下需要将特定的条件分割开来。

 

posted @ 2022-06-11 22:56  见怪见外  阅读(360)  评论(1编辑  收藏  举报