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号