一、实验目的
- 掌握黑盒测试的基本概念和原理,基本方法和技术。
- 学会运用边界值、等价类划分方法对应用程序进行测试。
- 学会使用测试用例对应用程序进行实际测试,并记录测试结果。
二、实验要求
- 分析被测应用程序,选定合适的黑盒测试方法。
- 根据选定的黑盒测试方法,写出测试分析过程,并设计测试用例。
- 编写、运行被测程序,使用测试用例完成实际测试,并记录测试结果。
三、实验内容与步骤
1、实验内容:测试“日期推算”程序。
说明:有一个“日期推算”程序,该程序的功能是输入一个日期,输出该日期的后一天日期,例如输入2023年1月1日,则输出2023年1月2日。现在假设“日期推算”程序已经被开发出来了,请对该软件的可执行程序进行功能测试,要求用尽可能少的测试用例检测出尽可能多的软件缺陷。为便于统一,我们约定在“日期推算”程序中有三个整数型变量Year、Month、Day,分别表示日期的年月日,并假设已经限定输入数据均为整数,日期中年份的有效取值范围为1000—9998。
(1)测试分析:
确定输入变量:Year、Month、Day
确定输出变量:NextYear、NextMonth、NextDay
确定功能:输入一个日期,输出该日期的后一天日期
确定有效取值范围:Year: 1000—9998,Month: 1—12,Day: 1—31
(2)黑盒测试方法选择:
边界值分析法和等价类划分法
(3)设计测试用例:
边界值测试:
表1 边界值分析法设计的测试用例
序号 | 边界值 | 输入数据 | 预期输出 | ||||
年 | 月 | 日 | 年 | 月 | 日 | ||
1 | 使年刚好等于最小值 | 1000 | 1 | 2 | 1000 | 1 | 3 |
2 | 使年刚好等于最大值 | 9998 | 3 | 6 | 9998 | 3 | 7 |
3 | 使年刚刚小于最小值 | 999 | 6 | 9 | 输入无效 | ||
4 | 使年刚刚大于最大值 | 9999 | 3 | 2 | 输入无效 | ||
5 | 使月刚好等于最小值 | 1020 | 1 | 21 | 1020 | 1 | 22 |
6 | 使月刚好等于最大值 | 1030 | 12 | 21 | 1030 | 12 | 22 |
7 | 使月刚刚小于最小值 | 1020 | 0 | 1 | 输入无效 | ||
8 | 使月刚刚大于最大值 | 1030 | 13 | 4 | 输入无效 | ||
9 | 使闰年的2月的日刚好等于最小值 | 1002 | 2 | 1 | 1002 | 2 | 2 |
10 | 使闰年的2月的日刚好等于最大值 | 1002 | 2 | 29 | 1002 | 3 | 1 |
11 | 使闰年的2月的日刚刚小于最小值 | 1002 | 2 | 0 | 输入无效 | ||
12 | 使闰年的2月的日刚刚大于最大值 | 1002 | 2 | 30 | 输入无效 | ||
13 | 使非闰年的2月的日刚好等于最小值 | 1001 | 2 | 1 | 1001 | 2 | 2 |
14 | 使非闰年的2月的日刚好等于最大值 | 1001 | 2 | 28 | 1001 | 3 | 1 |
15 | 使非闰年的2月的日刚刚小于最小值 | 1001 | 2 | 0 | 输入无效 | ||
16 | 使非闰年的2月的日刚刚大于最大值 | 1001 | 2 | 29 | 输入无效 | ||
17 | 使1月、3月、5月、7月、8月、10月、12月的日刚好等于最小值 | 1021 | 1 | 1 | 1021 | 1 | 2 |
18 | 使1月、3月、5月、7月、8月、10月、12月的日刚好等于最大值 | 1021 | 3 | 31 | 1021 | 4 | 1 |
19 | 使1月、3月、5月、7月、8月、10月、12月的日刚刚小于最小值 | 1021 | 5 | 0 | 输入无效 | ||
20 | 使1月、3月、5月、7月、8月、10月、12月的日刚刚大于最大值 | 1021 | 7 | 32 | 输入无效 | ||
21 | 使4月、6月、9月、11月的日刚好等于最小值 | 1021 | 4 | 1 | 1021 | 4 | 2 |
22 | 使4月、6月、9月、11月的日刚好等于最大值 | 1021 | 6 | 30 | 1021 | 7 | 1 |
23 | 使4月、6月、9月、11月的日刚刚小于最小值 | 1021 | 9 | 0 | 输入无效 | ||
24 | 使4月、6月、9月、11月的日刚刚大于最大值 | 1021 | 11 | 31 | 输入无效 |
等价类划分测试:
表2 等价划分表
输入及外部条件 | 有效等价类 | 等价类编号 | 无效等价类 | 等价类编号 |
日期的类型 | 数字字符 | 1 | 非数字字符 | 8 |
年 | 1000—9998 | 2 | <1000 | 9 |
>9998 | 10 | |||
月 | 1—12 | 3 | <1 | 11 |
>12 | 12 | |||
非闰年的2月 | 日为1-28 | 4 | <1 | 13 |
>28 | 14 | |||
闰年的2月 | 日为1-29 | 5 | <1 | 15 |
>29 | 16 | |||
月份为1、3、5、7、8、10、12的日期 | 日为1-31 | 6 | <1 | 17 |
>31 | 18 | |||
月份为4、6、9、11的日期 | 日为1-30 | 7 | <1 | 19 |
>30 | 20 |
表3 有效等价类的测试用例
序号 | 输入数据 | 预期输出 | 覆盖范围(等价类编号) | ||||
年 | 月 | 日 | 年 | 月 | 日 | ||
1 | 1001 | 2 | 28 | 1001 | 3 | 1 | 1,2,3,4 |
2 | 1001 | 3 | 30 | 1001 | 3 | 31 | 1,2,3,6 |
3 | 1002 | 2 | 28 | 1002 | 2 | 29 | 1,2,3,5 |
4 | 1002 | 4 | 30 | 1002 | 5 | 1 | 1,2,3,7 |
表4 无效等价类的测试用例
序号 | 输入数据 | 预期结果 | 覆盖范围(等价类编号) | ||
年 | 月 | 日 | |||
1 | x | 1 | 1 | 输入无效 | 8 |
2 | 999 | 2 | 5 | 输入无效 | 9 |
3 | 9999 | 4 | 8 | 输入无效 | 10 |
4 | 1005 | 0 | 11 | 输入无效 | 11 |
5 | 1008 | 13 | 1 | 输入无效 | 12 |
6 | 1013 | 2 | 0 | 输入无效 | 13 |
7 | 1015 | 2 | 29 | 输入无效 | 14 |
8 | 1020 | 2 | -1 | 输入无效 | 15 |
9 | 1040 | 2 | 30 | 输入无效 | 16 |
10 | 1023 | 7 | -2 | 输入无效 | 17 |
11 | 1234 | 9 | 32 | 输入无效 | 18 |
12 | 1689 | 6 | -3 | 输入无效 | 19 |
13 | 2003 | 11 | 31 | 输入无效 | 20 |