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、本次实验遇到的难点、如何解决的及体会。
难点:主要对于测试的概念不了解,对于等价类的划分,等价类的设计用例,就如:对于无效等价类的设计,边界值的设计要保证其余条件的正确性,来进行专门测试该等价类。对于决策表和判定表的理解不清,不能很好的进行区分,对于一些决策表的设计用例和实际程序运行时的结果不进行匹配,但找不错误。
解决:上网查找答案,自己想,询问老师
体会:对于黑盒测试的一些基本方法有了初步的了解,对于测试有了一些认知与体会,明白了写程序时应该注意的一些问题,但仍然存在一些问题,我认为是软件测试这个学科的问题,这个毕竟不是数学那样有逻辑,面向实际生活总是有例外。