实验二白盒测试
实验二白盒测试
一、实验目的
1、 掌握白盒测试的基础知识;
2、 掌握白盒测试的检查内容及测试目的;
3、 掌握黑盒测试的几种基本测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖。
二、实验要求
1、 复习有关内容,理解白盒测试;
2、 掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,并能设计出测试用例;
3、 对具体软件,能分别使用相应的白盒测试方法设计测试用例,并实施测试、分析测试结果。
三、实验内容
l 对实验一1、3题使用逻辑覆盖法进行测试用例设计。
1. 输入日期显示星期几
伪代码:
python
def date_to_weekday(date_str):
try:
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d')
return date_obj.strftime('%A')
except ValueError:
return "Invalid date"
3. 饮料自动售货机
伪代码:
python
def vending_machine(coin, choice):
choices = ['orange juice', 'beer']
if choice not in choices:
return "Invalid choice"
if coin == 0.5:
return f"Dispense {choice}"
elif coin == 1.0:
return f"Dispense {choice} and return 0.5 coin"
else:
return "Invalid coin"
l 对实验一2、4题使用基本路径法进行测试用例设计。
2. 找零钱最佳组合
伪代码:
python
def find_best_change(price, payment):
change = payment - price
coins = {'50':0, '10':0, '5':0, '1':0}
coins['50'] = change // 50
change %= 50
coins['10'] = change // 10
change %= 10
coins['5'] = change // 5
change %= 5
coins['1'] = change
return coins
4. 航空服务查询
伪代码:
python
def airline_service(route, cabin, flight_time):
if route == 'China to Europe/America':
return "Food and movie available"
elif route == 'China to other countries':
if cabin == 'Business':
return "Food and movie available"
else:
return "Only food available"
elif route == 'Domestic':
if cabin == 'Business':
return "Only food available"
else:
if flight_time > 2:
return "Only food available"
else:
return "No food or movie"
else:
return "Invalid route"
l 5、
5. 工资管理程序BONUS
伪代码:
python
def bonus_program(EMPLOYEE_TABLE, DEPARTMENT_TABLE):
MAXSALES = 0
ERRCODE = 0
if ESIZE <= 0 or DSIZE <= 0:
ERRCODE = 1
else:
for i in range(1, DSIZE):
if SALES[i] > MAXSALES:
MAXSALES = SALES[i]
for j in range(1, DSIZE):
if SALES[j] == MAXSALES:
FOUND = False
for k in range(1, ESIZE):
if EMPTAB.DEPT[k] == DEPTTAB.DEPT[j]:
FOUND = True
if SALARY[k] >= 15000 or JOB[k] == 'M':
SALARY[k] += 100
else:
SALARY[k] += 200
if not FOUND:
ERRCODE = 2
return ERRCODE
四、实验结果:
(1) 基本路径法绘制出控制流图,逻辑覆盖法绘制出流程图
控制流图
输入日期显示星期几
plaintext
+----------------------------------+
| 日期转换函数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入日期字符串 |
+----------------------------------+
| |
v |
+----------------------------------+
| 尝试解析日期 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 有效日期 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回星期几 |
+----------------------------------+
|
v
+----------------------------------+
| 返回"Invalid date" |
+----------------------------------+
饮料自动售货机
plaintext
+----------------------------------+
| 售货机函数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查选择是否有效 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 无效选择 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 检查投入硬币 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 0.5元硬币 | 1.0元硬币 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回相应饮料 |
+----------------------------------+
| |
v |
+----------------------------------+
| 返回无效硬币 |
+----------------------------------+
找零钱最佳组合
plaintext
+----------------------------------+
| 找零钱函数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 初始化硬币计数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算50元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算10元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算5元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算1元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 返回硬币组合 |
+----------------------------------+
航空服务查询
plaintext
+----------------------------------+
| 航空服务函数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 判断航线 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 中国到欧美 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回食物和电影 |
+----------------------------------+
|
v
+----------------------------------+
| 判断航线到其他国家 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 商务舱 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回食物和电影 |
+----------------------------------+
|
v
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 判断国内航线 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 商务舱 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 判断飞行时间 |
+----------------------------------+
| |
+-------------------+ |
| | |
| >2小时 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无服务 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无效航线 |
+----------------------------------+
工资管理程序BONUS
plaintext
+----------------------------------+
| 工资管理函数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查职员表和部门表是否为空 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 表为空 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回错误码1 |
+----------------------------------+
|
v
+----------------------------------+
| 初始化最大销售额 |
+----------------------------------+
| |
v |
+----------------------------------+
| 遍历部门表寻找最大销售额 |
+----------------------------------+
| |
v |
+----------------------------------+
| 遍历部门表 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查部门销售额是否为最大 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 遍历职员表 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查职员部门是否匹配 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 检查工资和职位条件 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 工资>=15000或经理 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 增加工资100 |
+----------------------------------+
|
v
+----------------------------------+
| 增加工资200 |
+----------------------------------+
|
v
+----------------------------------+
| 设置FOUND为True |
+----------------------------------+
|
v
+----------------------------------+
| 检查FOUND是否为False |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回错误码2 |
+----------------------------------+
流程图
输入日期显示星期几
plaintext
+----------------------------------+
| 开始 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入日期字符串 |
+----------------------------------+
| |
v |
+----------------------------------+
| 尝试解析日期 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 日期有效 | 日期无效 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回星期几 |
+----------------------------------+
|
v
+----------------------------------+
| 返回"Invalid date" |
+----------------------------------+
|
v
+----------------------------------+
| 结束 |
+----------------------------------+
饮料自动售货机
plaintext
+----------------------------------+
| 开始 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入投入硬币和选择 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查选择是否有效 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 选择有效 | 选择无效 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 检查投入硬币 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 0.5元硬币 | 1.0元硬币 | 其他
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回相应饮料 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无效硬币 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无效选择 |
+----------------------------------+
|
v
+----------------------------------+
| 结束 |
+----------------------------------+
找零钱最佳组合
plaintext
+----------------------------------+
| 开始 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入价格和支付金额 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 初始化硬币计数 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算50元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算10元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算5元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算剩余零钱 |
+----------------------------------+
| |
v |
+----------------------------------+
| 计算1元硬币数量 |
+----------------------------------+
| |
v |
+----------------------------------+
| 返回硬币组合 |
+----------------------------------+
|
v
+----------------------------------+
| 结束 |
+----------------------------------+
航空服务查询
plaintext
+----------------------------------+
| 开始 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入航线、仓位和飞行时间 |
+----------------------------------+
| |
v |
+----------------------------------+
| 判断航线 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 中国到欧美 | 其他 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回食物和电影 |
+----------------------------------+
|
v
+----------------------------------+
| 判断航线到其他国家 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 商务舱 | 其他 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回食物和电影 |
+----------------------------------+
|
v
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 判断国内航线 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 商务舱 | 其他 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 判断飞行时间 |
+----------------------------------+
| |
+-------------------+ |
| | |
| >2小时 | 其他 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回仅食物 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无服务 |
+----------------------------------+
|
v
+----------------------------------+
| 返回无效航线 |
+----------------------------------+
|
v
+----------------------------------+
| 结束 |
+----------------------------------+
工资管理程序BONUS
plaintext
+----------------------------------+
| 开始 |
+----------------------------------+
| |
v |
+----------------------------------+
| 输入职员表和部门表 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查职员表和部门表是否为空 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | 否 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回错误码1 |
+----------------------------------+
|
v
+----------------------------------+
| 初始化最大销售额 |
+----------------------------------+
| |
v |
+----------------------------------+
| 遍历部门表寻找最大销售额 |
+----------------------------------+
| |
v |
+----------------------------------+
| 遍历部门表 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查部门销售额是否为最大 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | 否 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 遍历职员表 |
+----------------------------------+
| |
v |
+----------------------------------+
| 检查职员部门是否匹配 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | 否 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 检查工资和职位条件 |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | 否 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 增加工资100 |
+----------------------------------+
|
v
+----------------------------------+
| 增加工资200 |
+----------------------------------+
|
v
+----------------------------------+
| 设置FOUND为True |
+----------------------------------+
|
v
+----------------------------------+
| 检查FOUND是否为False |
+----------------------------------+
| |
+-------------------+ |
| | |
| 是 | 否 |
| | |
+-------------------+ |
| | |
v v |
+----------------------------------+
| 返回错误码2 |
+----------------------------------+
|
v
+----------------------------------+
| 结束 |
+----------------------------------+
(2)设计测试用列表
输入日期显示星期几
|
用例编号 |
输入数据 |
预期输出 |
实际输出 |
|
TC1 |
2024-09-26 |
星期四 |
星期四 |
|
TC2 |
2024-02-30 |
Invalid date |
Invalid date |
饮料自动售货机
|
用例编号 |
输入硬币 |
选择饮料 |
预期输出 |
实际输出 |
|
TC1 |
0.5 |
orange juice |
Dispense orange juice |
Dispense orange juice |
|
TC2 |
1.0 |
orange juice |
Dispense orange juice and return 0.5 coin |
Dispense orange juice and return 0.5 coin |
|
TC3 |
0.25 |
orange juice |
Invalid coin |
Invalid coin |
|
TC4 |
0.5 |
water |
Invalid choice |
|
找零钱最佳组合
|
用例编号 |
价格 (R) |
支付 (P) |
预期输出 |
实际输出 |
|
TC1 |
50 |
50 |
{'50':1, '10':0, '5':0, '1':0} |
{'50':1, '10':0, '5':0, '1':0} |
|
TC2 |
50 |
100 |
{'50':2, '10':0, '5':0, '1':0} |
{'50':2, '10':0, '5':0, '1':0} |
|
TC3 |
50 |
55 |
{'50':1, '10':0, '5':1, '1':0} |
{'50':1, '10':0, '5':1, '1':0} |
|
TC4 |
50 |
60 |
{'50':1, '10':1, '5':0, '1':0} |
{'50':1, '10':1, '5':0, '1':0} |
|
TC5 |
50 |
105 |
{'50':2, '10':0, '5':1, '1':0} |
{'50':2, '10':0, '5':1, '1':0} |
航空服务查询
|
用例编号 |
航线 |
仓位 |
飞行时间 |
预期输出 |
实际输出 |
|
TC1 |
China to Europe/America |
Business |
3 |
Food and movie available |
Food and movie available |
|
TC2 |
China to other countries |
Business |
3 |
Food and movie available |
Food and movie available |
|
TC3 |
China to other countries |
Economy |
3 |
Only food available |
Only food available |
|
TC4 |
Domestic |
Business |
3 |
Only food available |
Only food available |
|
TC5 |
Domestic |
Economy |
3 |
Only food available |
Only food available |
|
TC6 |
Domestic |
Economy |
1 |
No food or movie |
No food or movie |
|
TC7 |
Other |
Economy |
3 |
Invalid route |
Invalid route |
工资管理程序BONUS
|
用例编号 |
职员表和部门表状态 |
预期输出 |
实际输出 |
|
TC1 |
均为空 |
ERRCODE=1 |
ERRCODE=1 |
|
TC2 |
均不为空,销售最大部门有职员 |
ERRCODE=0 |
ERRCODE=0 |
|
TC3 |
均不为空,销售最大部门无职员 |
ERRCODE=2 |
ERRCODE=2 |
五、实验体会:
1.遇到了哪些问题
在理解白盒测试和黑盒测试的区别时,对于某些测试方法的具体应用场景有些混淆。
在设计测试用例时,对于如何确保覆盖所有可能的路径和条件组合感到有些困难。
2.问题如何解决的
通过查阅相关资料,深入理解白盒测试和黑盒测试的定义和应用场景,明确了各自的适用范围。
通过逐步分析程序的逻辑结构,绘制控制流图和流程图,帮助理清思路,从而更系统地设计测试用例。
3.收获
深入理解了白盒测试和黑盒测试的基本概念和方法,掌握了如何根据程序的逻辑结构设计有效的测试用例。
通过实际操作和练习,提高了对软件测试的理解和实践能力,能够更全面地考虑程序的各种可能情况,确保软件质量。

浙公网安备 33010602011771号