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

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

3、 掌握黑盒测试的几种基本测试方法:等价类划分方法、边界值分析方法、因果图法、决策表法和场景法;

二、 实验内容

实验题目

1、设计函数实现输入日期显示星期几,并用等价类及边界值法测试

 

实验步骤:

① 设计程序

源程序见学习通平台。

② 划分等价类,得到等价类表。等价类表格式如下:

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

年份

1900到2050内的平年整数

1

年份 < 1900

10

1900到2050内的闰年整数

2

年份 > 2050

11

 

 

年份包括非数字字符

12

月份

1、3、5、7、8、10、12

3

月份 < 0

13

4、6、9、11

4

月份 > 13

14

2

5

月份包括非数字字符

15

日期

1 <= 日期 <= 28

6

日 < 0

16

日期 = 29

7

日 > 31

17

日期 = 30

8

日期包含非数字字符

18

日期 = 31

9

年份为闰年且月份为2月且日期大于29

19

 

 

年份为平年且月份为2月且日期大于28

20

 

 

月份为4、6、9、11且日期大于30

   21

 

③ 运用等价类划分法设计测试用例,得到测试用例表。测试用例表格式如下:

 

序号

输入数据

覆盖等价类

输出

1

2002、1、19

1、3、6

合法日期

2

2003、4、29

1、4、7

合法日期

3

2000、3、30

2、3、8

合法日期

4

2000、3、31

2、3、9

合法日期

5

2000、2、29

2、5、7

日期非法

6

1880、1、1

10

年份非法

7

2055、2、3

11

年份非法

8

12HS、3、1

12

含非数字字符

9

2002、-1、3

13

月份非法

10

2030、14、2

14

月份非法

11

2030、14、HH

15

含非数字字符

12

1990、12、-2

16

日期非法

13

2022、3、31

17

日期非法

14

2014、4、HH

18

含非数字字符

15

2000、2、30

19

日期非法

16

2001、2、29

20

日期非法

17

2034、4、29

21

合法日期

 

④ 运用边界值法设计测试用例。

序号

输入数据

预测输出

实际输出

1

1900,12,3

合法日期

合法日期

2

1901,11,3

合法日期

合法日期

3

2050,1,3

合法日期

合法日期

4

2049,2,4

合法日期

合法日期

5

2036,12,3

合法日期

合法日期

6

2024,11,21

合法日期

合法日期

7

2008,1,23

合法日期

合法日期

8

2010,2,17

合法日期

合法日期

9

2003,3,27

合法日期

合法日期

10

2009,2,28

合法日期

合法日期

11

2110,2,29

年份非法

年份非法

12

2007,4,30

合法日期

合法日期

13

2008,12,31

合法日期

合法日期

14

2006,6,23

合法日期

合法日期

 

2、找零钱最佳组合

   假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。

   请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。

实验步骤:

④ 设计程序

源程序见学习通平台。

⑤ 划分等价类,得到等价类表。等价类表格式如下:

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

货品价格(R)

 0 <= R <= 100

1

R > 100

3

    R为整数

2

R < 0

4

 

 

R 非整数数字

5

付款(P)

 0 <= P <= 100

6

P > 100

8

    P >= R

7

P < 0

9

    P为整数

11

P 非整数数字

10

 

 

 

P < R

11

 

⑥ 运用等价类划分法设计测试用例,得到测试用例表。测试用例表格式如下:

 

序号

输入数据

覆盖等价类

输出

1

90,23

1,2,3,4,7

付款价钱不规范

2

101,23

3,

价钱不规范

3

-2,34

4,

价钱不规范

4

R,54

5

含非整数数字字符

5

12,102

8

付款价钱不规范

6

23,-1

9

付款价钱不规范

7

24,U

10

含非整数数字字符

9

12,3

11

付款价钱不规范

 

④ 运用边界值法设计测试用例。

序号

输入数据

预测输出

实际输出

1

0,13

价钱不规范

价钱不规范

2

1,23

找零: {N1=2, N10=2}

找零: {N1=2, N10=2}

3

99,32

付款价钱不规范

付款价钱不规范

4

100,23

价钱不规范

价钱不规范

5

23,0

付款价钱不规范

付款价钱不规范

6

43,1

付款价钱不规范

付款价钱不规范

7

34,99

找零: {N5=1, N50=1, N10=1}

找零: {N5=1, N50=1, N10=1}

8

65,100

付款价钱不规范

付款价钱不规范

9

34,56

找零: {N1=2, N10=2}

找零: {N1=2, N10=2}

 

3、有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下:

若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。

模拟程序如下:

 

因果图法测试该程序,并撰写实验报告。

实验步骤:

   ①编写程序

源程序见学习通平台。

②分析原因与结果,与同学交换程序测试。

结果:

1:出5角钱  ---》 投1元钱,按下任意按钮

2:出啤酒    ----》 投币,按下啤酒按钮

3:出橙汁    ----》 投币,按下橙汁按钮

③画出因果图

 

 

 

④转化为决策表

 

选项规则

1

5

6

7

8

9

10

11

12

14

15

 

 

 

 

 

 

 

条件

投0.5元

1

1

1

1

1

0

0

0

0

0

0

投1元

1

0

0

0

0

-

1

1

1

0

0

按啤酒

-

1

1

0

0

1

1

0

0

1

0

按橙汁

-

1

0

1

0

1

0

1

0

0

-

已投钱

 

 

1

1

 

 

1

1

 

 

 

已按按钮

 

 

1

1

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

动作

出啤酒

 

 

1

 

 

 

1

 

 

 

 

出橙汁

 

 

 

1

 

 

 

1

 

 

 

出五角钱

 

 

 

 

 

 

1

1

 

 

 

错误操作

1

1

 

 

1

1

 

 

1

1

1

 

⑤根据决策表设计测试用例,得到测试用例表

 

测试用例编号

输入数据

预期输出

实际输出

1

投0.5元+按啤酒

出啤酒

啤酒

2

投0.5元+按橙汁

出橙汁

橙子

3

投1元 + 按啤酒

出啤酒 + 5角钱

出啤酒 + 5角钱

4

投1元 + 按橙汁

出橙汁 + 5角钱

出橙汁 + 5角钱

5

按啤酒

弹提示

弹提示

6

按橙汁

弹提示

弹提示

7

投0.5元

弹提示

弹提示

8

投1元

弹提示

弹提示

 

4、航空服务查询问题:根据航线,仓位,飞行时间查询航空服务。

假设一个中国的航空公司规定:

① 中国去欧美的航线所有座位都有食物供应,每个座位都可以播放电影。

② 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影。

③ 中国国内的航班的商务仓有食物供应,但是不可以播放电影

④ 中国国内航班的经济仓只有当飞行时间大于2小时时才有食物供应,但是不可以播放电影。

请用程序实现上述功能,并用决策表法设计测试用例,再执行测试,撰写实验报告。

 

 

实验步骤:

① 编写程序,与同学交换程序测试。

② 构造决策表

 

 

序号

1

2

3

4

5

6

 

 

 

 

 

条件

 

 

航线

 

欧美

1

0

0

0

0

0

非欧美

0

1

1

0

0

0

国内

0

0

0

1

1

1

 

机舱

商务仓

-

1

0

1

0

0

经济仓

-

0

1

0

1

1

 

时间

2小时内

-

-

-

-

1

0

大于2小时

-

-

-

-

0

1

 

动作

食物供应

1

1

1

1

0

1

播放电影

1

1

0

0

0

0

 

③ 根据决策表设计测试用例,得到测试用例表

欧美:A1 非欧美:A2 国内:A3  商务仓:B1 经济舱:B2 小于等于2小时:C1

大于两小时:C2

食物供应:D1 播放电影:D2 D3:无服务

序号

测试用例

预期结果

实际结果

1

A1 B1 C1

D1、D2

D1、D2

2

A2 B1 C1

D1、D2

D1、D2

3

A2 B2 C1

D1、

D1

4

A3 B1 C1

D1、

D1

5

A3 B2 C1

D3

D3

6

A3 B2 C2

D1、

D1

 

5、旅馆住宿系统中,旅馆业主可进行添加房间操作。

旅馆业主登录旅馆住宿系统后,可以请求添加房间;

待进入“房间管理”对话框,单击“添加”按钮可进行添加房间操作;

添加房间时,可以设定房间的房间编号、房间类型、房间描述信息;

添加房间信息不能缺失,若某一项未填写,要给出提示信息;

房间编号长度不超过5个字符;

房间描述长度不超过1000个字符;

房间信息不能重复,成功填写后,可进行保存或取消操作,之后返回“房间管理”对话框,结束添加房间流程。

实验步骤:

利用黑盒测试策略编写添加房间功能的测试用例。

①等价类划分:

输入条件

有效等价类

唯一标识

无效等价类

唯一标识

房间编号

 0 < 长度 <= 5

1

长度 > 5

2

   

 

长度 = 0

3

房间类型

   非空

4

5

 

 

 

房间描述信息

 0 < 长度 <= 1000

6

长度 > 1000

7

   

 

长度 = 0

9

   

 

房间编号重复

10

 

②测试用例表格式如下:

 

序号

输入数据

覆盖等价类

输出

1

1,单人间,100元一晚

1,4,6

操作成功

2

111111,单人间,100元一晚

2

房间编号不超过5个字符

3

 ,单人间,100元一晚

3

房间编号非空

4

2,,100元一晚

5

房间类型非空

5

3,单人间,,

7

房间描述非空

6

4,单人间,100元一晚.....

9

房间编号不超过1000个字符

7

1,单人间,100元一晚

10

房间信息重复

 ③运用边界值法设计测试用例。

序号

输入数据

预测输出

1

1,单人间,100元一晚

操作成功

2

12,单人间,100元一晚

操作成功

3

1222,单人间,100元一晚

操作成功

4

12222,单人间,100元一晚

操作成功

5

23,单人间,1

操作成功

6

34,单人间,10

操作成功

7

5,单人间,100元一晚...X999

操作成功

8

6,单人间,100元一晚...X1000

操作成功

9

56,单人间,100元一晚

操作成功

④:场景法进行测试

V表示这个条件必须是有效的才可执行基本流

I表示这种条件下将激活所需备选流

n/a表示这个条件不适用于测试用例

用例ID

场景

登录

添加合理信息

预测结果

1

登录->房间管理->添加->设置信息->保存/取消->房间管理

V

V

添加信息成功

2

登录->登录失败

I

n/a

登录失败

3

登录->房间管理->添加->设置信息->输入不合理->房间管理

V

I

添加失败,退回管理界面

 

三、 个人体会

1、在实际的测试中,如何设计测试用例才能达到用最少的测试用例检测出最多的缺陷;

要进行多种方法的检验和使用,首先要先考虑划分等价类,对于输入进行划分,进行一个最全面的规划,其次,对于一些问题,有着对应的测试方法,如决策表,因果图,等等。

首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,在任何情况下,都必须使用边界值分析法。可以用错误推测法追加一些用例,这需要依靠测试工程师的经验。对照程序逻辑,检查出已设计出的测试用例的逻辑覆盖程度,如果没有足够覆盖,应当再补充足够的测试用例。如果程序说明中有输入条件的组合情况,则一开始就可以选用因果图或判定表驱动法设计测试用例。对于参数配置类型的软件,要用正交试验法选择较少的组合方式,达到最佳效果。对于业务流清晰的系统,可利用场景法贯穿整个测试案例过程,在案例中综合使用各种设计方法

2、在进行用例设计时,如何考虑软件测试用例的充分性和减少软件测试用例的冗余性; 

首先要将用例的充分性进行优先考虑,测试就是要进行最全面的进行测试,对于冗余性,在影响程序小的的情况下,适当的冗余也可以接收,为了做到极可能全名的测试,对于冗余性我认为在数量不是贴别多的情况下可以接收,就如:边界值方法,有些会进行min-,max+,但是对于边界之外的数据,已经有专门的模块进行测试。

3、本次实验遇到的难点、如何解决的及体会。

难点:主要对于测试的概念不了解,对于等价类的划分,等价类的设计用例,就如:对于无效等价类的设计,边界值的设计要保证其余条件的正确性,来进行专门测试该等价类。对于决策表和判定表的理解不清,不能很好的进行区分,对于一些决策表的设计用例和实际程序运行时的结果不进行匹配,但找不错误。

解决:上网查找答案,自己想,询问老师

体会:对于黑盒测试的一些基本方法有了初步的了解,对于测试有了一些认知与体会,明白了写程序时应该注意的一些问题,但仍然存在一些问题,我认为是软件测试这个学科的问题,这个毕竟不是数学那样有逻辑,面向实际生活总是有例外。