4月16日
实验项目名称:实验一
一、 实验目的
1、 掌握黑盒测试的基础知识;
2、 掌握黑盒测试的检查内容及测试目的;
3、 掌握黑盒测试的几种基本测试方法:等价类划分方法、边界值分析方法、因果图法和决策表法;
二、 实验内容
实验题目: 黑盒测试
三、 实验步骤及结果
1、设计函数实现输入日期显示星期几,并用等价类及边界值法测试
实验步骤:
①设计程序
源程序见学习通平台。
②划分等价类,得到等价类表。等价类表格式如下:
| 
 输入条件  | 
 有效等价类  | 
 唯一标识  | 
 无效等价类  | 
 唯一标识  | 
| 
 年  | 
 1900 ≤ year ≤ 2100 
  | 
 E1 
  | 
 year < 1900 或 year > 2100 
  | 
 I1 
  | 
| 
 月  | 
 1 ≤ month ≤ 12 
  | 
 E2 
  | 
 month < 1 或 month > 12 
  | 
 I2 
  | 
| 
 日  | 
 1 ≤ day ≤ max_day(max_day 由年、月决定,例如平年 2 月 28 天,闰年 29 天)  | 
 E3 
  | 
 day < 1 或 day > max_day  | 
 I3 
  | 
③运用等价类划分法设计测试用例,得到测试用例表。测试用例表格式如下:
| 
 序号  | 
 输入数据  | 
 覆盖等价类  | 
 输出  | 
| 
 1  | 
 (2023, 10, 15)  | 
 E1, E2, E3  | 
 星期日  | 
| 
 2  | 
 (1899, 5, 20)  | 
 I1  | 
 无效年份  | 
| 
 3  | 
 (2023, 0, 10)  | 
 I2  | 
 无效月份  | 
| 
 4  | 
 (2023, 2, 30)  | 
 I3  | 
 无效日期(2 月无 30 日)  | 
| 
 5  | 
 (2020, 2, 29)  | 
 E1, E2, E3  | 
 星期六(闰年)  | 
④运用边界值法设计测试用例。
边界值分析关注输入范围的边界:
年:1900, 1901, 2099, 2100
月:1, 2, 11, 12
日:1, 2, max_day-1, max_day(max_day 取决于具体月份和年份)
| 
 序号  | 
 输入数据(年,月,日)  | 
 输出  | 
| 
 1  | 
 (1900, 1, 1)  | 
 星期五  | 
| 
 2  | 
 (2100, 12, 31)  | 
 星期二  | 
| 
 3  | 
 (2023, 2, 28)  | 
 星期六  | 
| 
 4  | 
 (2020, 2, 29)  | 
 星期六(闰年边界)  | 
2、找零钱最佳组合
假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商店的货币面值只包括:50元(N50)、10元(N10)、 5元(N5)、1元(N1) 四种。
请结合等价类划分法和边界值分析法为上述程序设计 出相应的测试用例。
实验步骤:
①设计程序
源程序见学习通平台。
②划分等价类
| 
 输入条件  | 
 有效等价类  | 
 唯一标识  | 
 无效等价类  | 
 唯一标识  | 
| 
 R  | 
 0 ≤ R ≤ 100  | 
 E1  | 
 R < 0 或 R > 100  | 
 I1  | 
| 
 P  | 
 0 ≤ P ≤ 100  | 
 E2  | 
 P < 0 或 P > 100  | 
 I2  | 
| 
 P-R  | 
 P - R ≥ 0  | 
 E3  | 
 P - R < 0  | 
 I3  | 
③等价类划分测试用例
| 
 序号  | 
 输入数据 (R, P)  | 
 覆盖等价类  | 
 输出 (N50, N10, N5, N1)  | 
| 
 1  | 
 (30, 50)  | 
 E1, E2, E3  | 
 (0, 2, 0, 0)  | 
| 
 2  | 
 (-1, 50)  | 
 I1  | 
 无效输入  | 
| 
 3  | 
 (101, 50)  | 
 I1  | 
 无效输入  | 
| 
 4  | 
 (20, 10)  | 
 I3  | 
 无效输入  | 
④边界值法测试用例
边界值:R 和 P 的范围 (0, 1, 99, 100)。
| 
 序号  | 
 输入数据 (R, P)  | 
 输出 (N50, N10, N5, N1)  | 
| 
 1  | 
 (0, 0)  | 
 (0, 0, 0, 0)  | 
| 
 2  | 
 (100, 100)  | 
 (0, 0, 0, 0)  | 
| 
 3  | 
 (1, 100)  | 
 (1, 4, 1, 4)  | 
| 
 4  | 
 (99, 100)  | 
 (0, 0, 0, 1)  | 
3、有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下:
若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。
模拟程序如下:
用因果图法测试该程序,并撰写实验报告。
实验步骤:
①编写程序
源程序见学习通平台。
②分析原因与结果
原因:C1(投入 0.5 元)、C2(投入 1 元)、C3(按橙汁按钮)、C4(按啤酒按钮)
结果:E1(橙汁送出)、E2(啤酒送出)、E3(退回 0.5 元)
③画出因果图
④转化为决策表
| 
 条件  | 
 1  | 
 2  | 
 3  | 
 4  | 
 5  | 
| 
 C1: 0.5元  | 
 Y  | 
 Y  | 
 N  | 
 N  | 
 N  | 
| 
 C2: 1元  | 
 N  | 
 N  | 
 Y  | 
 Y  | 
 N  | 
| 
 C3: 橙汁  | 
 Y  | 
 N  | 
 Y  | 
 N  | 
 N  | 
| 
 C4: 啤酒  | 
 N  | 
 Y  | 
 N  | 
 Y  | 
 N  | 
| 
 E1: 橙汁  | 
 Y  | 
 N  | 
 Y  | 
 N  | 
 N  | 
| 
 E2: 啤酒  | 
 N  | 
 Y  | 
 N  | 
 Y  | 
 N  | 
| 
 E3: 退0.5  | 
 N  | 
 N  | 
 Y  | 
 Y  | 
 N  | 
⑤测试用例表
| 
 序号  | 
 输入 (coin, button)  | 
 输出  | 
| 
 1  | 
 (0.5, "橙汁")  | 
 橙汁  | 
| 
 2  | 
 (0.5, "啤酒")  | 
 啤酒  | 
| 
 3  | 
 (1.0, "橙汁")  | 
 橙汁, 退回0.5元  | 
| 
 4  | 
 (1.0, "啤酒")  | 
 啤酒, 退回0.5元  | 
| 
 5  | 
 (0.5, "可乐")  | 
 无效操作  | 
4、航空服务查询问题:根据航线,仓位,飞行时间查询航空服务。
假设一个中国的航空公司规定:
① 中国去欧美的航线所有座位都有食物供应,每个座位都可以播放电影。
② 中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影。
③ 中国国内的航班的商务仓有食物供应,但是不可以播放电影
④ 中国国内航班的经济仓只有当飞行时间大于2小时时才有食物供应,但是不可以播放电影。
请用程序实现上述功能,并用决策表法设计测试用例,再执行测试,撰写实验报告。
实验步骤:
① 编写程序
源程序见学习通平台。
② 构造决策表
| 
 条件  | 
 1  | 
 2  | 
 3  | 
 4  | 
 5  | 
 6  | 
| 
 中国-欧美  | 
 Y  | 
 N  | 
 N  | 
 N  | 
 N  | 
 N  | 
| 
 中国-非欧美国外  | 
 N  | 
 Y  | 
 N  | 
 N  | 
 N  | 
 N  | 
| 
 中国国内  | 
 N  | 
 N  | 
 Y  | 
 Y  | 
 Y  | 
 Y  | 
| 
 商务仓  | 
 -  | 
 Y  | 
 N  | 
 Y  | 
 N  | 
 N  | 
| 
 经济仓  | 
 -  | 
 N  | 
 Y  | 
 N  | 
 Y  | 
 Y  | 
| 
 飞行时间 > 2小时  | 
 -  | 
 -  | 
 -  | 
 Y  | 
 Y  | 
 N  | 
| 
 食物  | 
 Y  | 
 Y  | 
 N  | 
 Y  | 
 Y  | 
 N  | 
| 
 电影  | 
 Y  | 
 Y  | 
 N  | 
 N  | 
 N  | 
 N  | 
③ 根据决策表设计测试用例,得到测试用例表
| 
 序号  | 
 输入 (route, cabin, flight_time)  | 
 输出  | 
| 
 1  | 
 ("中国-欧美", "商务仓", 3)  | 
 食物: True, 电影: True  | 
| 
 2  | 
 ("中国-非欧美国外", "商务仓", 1)  | 
 食物: True, 电影: True  | 
| 
 3  | 
 ("中国-非欧美国外", "经济仓", 1)  | 
 食物: True, 电影: False  | 
| 
 4  | 
 ("中国国内", "商务仓", 1)  | 
 食物: True, 电影: False  | 
| 
 5  | 
 ("中国国内", "经济仓", 3)  | 
 食物: True, 电影: False  | 
| 
 6  | 
 ("中国国内", "经济仓", 1)  | 
 食物: False, 电影: False  | 
5、旅馆住宿系统中,旅馆业主可进行添加房间操作。
– 旅馆业主登录旅馆住宿系统后,可以请求添加房间;
– 待进入“房间管理”对话框,单击“添加”按钮可进行添加房间操作;
– 添加房间时,可以设定房间的房间编号、房间类型、房间描述信息;
– 添加房间信息不能缺失,若某一项未填写,要给出提示信息;
– 房间编号长度不超过5个字符;
– 房间描述长度不超过1000个字符;
– 房间信息不能重复,成功填写后,可进行保存或取消操作,之后返回“房间管理”对话框,结束添加房间流程。
实验步骤:
利用黑盒测试策略编写添加房间功能的测试用例。
① 设计添加房间用例流
| 
 基本流  | 
 进入系统  | 
| 
 打开“房间管理”页面,单击“添加”按钮  | 
|
| 
 输入房间编号  | 
|
| 
 设置房间类型  | 
|
| 
 设置房间描述信息  | 
|
| 
 保存或取消  | 
|
| 
 返回“房间管理”页面  | 
|
| 
 备选流1  | 
 登录失败  | 
| 
 备选流2  | 
 房间信息填写不全  | 
| 
 备选流3  | 
 房间编号长度超过5个字符  | 
| 
 备选流4  | 
 房间描述长度超过1000个字符  | 
| 
 备选流5  | 
 房间信息重复  | 
| 
 备选流6  | 
 用户取消操作  | 
场景设计
| 
 场景描述  | 
 基本流  | 
 备选流  | 
| 
 场景1-成功添加房间  | 
 基本流  | 
 
  | 
| 
 场景2-登录失败  | 
 基本流  | 
 备选流1  | 
| 
 场景3-缺失房间信息  | 
 基本流  | 
 备选流2  | 
| 
 场景4-编号长度过长  | 
 基本流  | 
 备选流3  | 
| 
 场景5-房间描述过长  | 
 基本流  | 
 备选流4  | 
| 
 场景6-房间信息重复  | 
 基本流  | 
 备选流5  | 
| 
 场景7-用户取消操作  | 
 基本流  | 
 备选流6  | 
创建场景用例表
| 
 用例编号  | 
 场景  | 
 登录  | 
 房间编号  | 
 房间类型  | 
 房间描述  | 
 保存  | 
 取消  | 
 预期结果  | 
| 
 1  | 
 场景1-成功添加房间  | 
 V  | 
 V  | 
 V  | 
 V  | 
 V  | 
 N/A  | 
 成功添加房间  | 
| 
 2  | 
 场景2-登录失败  | 
 I  | 
 N/A  | 
 N/A  | 
 N/A  | 
 N/A  | 
 N/A  | 
 提示“登录失败,请重新登录”  | 
| 
 3  | 
 场景3-缺失房间信息  | 
 V  | 
 I  | 
 I  | 
 I  | 
 V  | 
 N/A  | 
 提示“请完善房间信息”  | 
| 
 4  | 
 场景4-编号长度超限  | 
 V  | 
 I  | 
 V  | 
 V  | 
 V  | 
 N/A  | 
 提示“房间编号长度超过5个字符”  | 
| 
 5  | 
 场景5-房间描述超限  | 
 V  | 
 V  | 
 V  | 
 I  | 
 V  | 
 N/A  | 
 提示“房间描述长度超过1000个字符”  | 
| 
 6  | 
 场景6-房间信息重复  | 
 V  | 
 I  | 
 I  | 
 I  | 
 V  | 
 N/A  | 
 提示“房间信息重复,请重新输入”  | 
| 
 7  | 
 场景7-取消操作  | 
 V  | 
 V  | 
 V  | 
 V  | 
 N/A  | 
 I  | 
 取消添加房间  | 
建立测试用例数据库
| 
 用例编号  | 
 场景  | 
 登录  | 
 房间编号  | 
 房间类型  | 
 房间描述  | 
 保存  | 
 取消  | 
 预期结果  | 
| 
 1  | 
 场景1-成功添加房间  | 
 userId:123 password:123  | 
 1234  | 
 大床房  | 
 空调免费,独立卫浴,客房WiFi  | 
 点击保存  | 
 N/A  | 
 成功添加房间  | 
| 
 2  | 
 场景2-登录失败  | 
 userId:123 password:12  | 
 N/A  | 
 N/A  | 
 N/A  | 
 N/A  | 
 N/A  | 
 提示“登录失败,请重新登录”  | 
| 
 3  | 
 场景3-缺失房间信息  | 
 userId:123 password:123  | 
 148  | 
 
  | 
 
  | 
 点击保存  | 
 N/A  | 
 提示“请完善房间信息”  | 
| 
 4  | 
 场景4-编号长度超限  | 
 userId:123 password:123  | 
 123456  | 
 大床房  | 
 空调免费,独立卫浴,  | 
 点击保存  | 
 N/A  | 
 提示“房间编号长度超过5个字符”  | 
| 
 5  | 
 场景5-房间描述超限  | 
 userId:123 password:123  | 
 134  | 
 大床房  | 
 空调免费,独立卫浴.....  | 
 点击保存  | 
 N/A  | 
 提示“房间描述长度超过1000个字符”  | 
| 
 6  | 
 场景6-房间信息重复  | 
 userId:123 password:123  | 
 1234  | 
 大床房  | 
 空调免费,独立卫浴,客房WiFi  | 
 点击保存  | 
 N/A  | 
 提示“房间信息重复,请重新输入”  | 
| 
 7  | 
 场景7-取消操作  | 
 userId:123 password:123  | 
 123  | 
 大床房  | 
 空调免费,独立卫浴,客房WiFi  | 
 N/A  | 
 点击取消  | 
 取消添加房间  | 
四、 个人体会
通过这次黑盒测试实验,我对软件测试的理论和实践有了更深的认识。设计日期计算和找零钱程序时,我发现等价类划分和边界值分析能快速锁定问题点,比如闰年边界或最大值处理,而因果图和决策表则让我在复杂逻辑中理清头绪,像饮料售货机和航空服务查询的测试就变得更有条理。实践过程中,我体会到测试用例设计既要全面覆盖又要避免冗余,比如航空服务的 6 个用例就简洁高效地验证了所有规则。这让我意识到测试不仅是技术活,更需要动脑筋去平衡效率和效果。实验还让我看到程序健壮性的重要性,比如如何处理“无效输入”,这点启发很大。今后我会更注重用例优化,把这些方法用在实际项目里。这次经历不仅提升了我的能力,也让我对软件测试越来越感兴趣。
                    
                
                
            
        
浙公网安备 33010602011771号