使用边界值分析法与判定表驱动法设计测试用例,测试nextDate函数

Angie ·
更新时间:2024-09-20
· 971 次阅读

需求

日期问题

测试以下程序:该程序有三个输入变量 month、day、year (month、day 和 year 均为整数值,并且满足:1 ≤ months ≤ 12、1 ≤ days ≤ 31 和 1900 ≤ year ≤ 2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔天的日期。例如,输入为 2004 年 11 月 30 日,则该程序的输出为 2004 年 12 月 1 日。

(1) 边界值分析法设计测试用例;

(2) 判定表驱动法设计测试用例。

实现 一、边界值分析法 1、等价类
输入数据 有效等价类
(1) 1900到2050内的闰年整数
(2) 1900到2050内的平年整数
(3) 1,3,5,7,8,10内的整数
(4) 4,6,9,11内的整数
(5) 2
(6) 12
(7) 1~28
(8) 29
(9) 30
(10) 31
2、设计测试用例
测试用例 month day Year 针对的有效类 期望输出
1 7 10 1889 (1)(2) 年的值不在指定范围之内
2 7 10 1900 (1)(2) 下一天是1900年7月11日!
3 7 10 1901 (1)(2) 下一天是1901年7月11日!
4 7 10 2049 (1)(2) 下一天是2049年7月11日!
5 7 10 2050 (1)(2) 下一天是2050年7月11日!
6 7 10 2051 (1)(2) 年的值不在指定范围之内
7 0 10 2019 (3)~(6) 月的值不在指定范围之内
8 1 10 2019 (3)~(6) 下一天是2019年1月11日!
9 2 10 2019 (3)~(6) 下一天是2019年2月11日!
10 11 10 2019 (3)~(6) 下一天是2019年11月11日!
11 12 10 2019 (3)~(6) 下一天是2019年12月11日!
12 13 10 2019 (3)~(6) 月的值不在指定范围之内
13 2 27 2019 (5)(7)~(9) 下一天是2019年2月28日!
14 2 28 2019 (5)(7)~(9) 下一天是2019年3月1日!
15 2 29 2019 (5)(7)~(9) 日的值不在指定范围之内
16 2 28 2020 (5)(7)~(9) 下一天是2020年2月29日!
17 2 29 2020 (5)(7)~(9) 下一天是2020年3月1日!
18 2 30 2020 (5)(7)~(9) 日的值不在指定范围之内
19 1 30 2019 (3)(9)(10) 下一天是2019年1月31日!
20 1 31 2019 (3)(9)(10) 下一天是2019年2月1日!
21 1 32 2019 (3)(9)(10) 日的值不在指定范围之内
22 4 30 2019 (4)(9)(10) 下一天是2019年5月1日!
23 4 31 2019 (4)(9)(10) 日的值不在指定范围之内
24 4 32 2019 (4)(9)(10) 日的值不在指定范围之内
3、测试类

代码文件地址

4、运行结果 二、判定表驱动法 1、条件桩

M1={month:这个月有30天}M_1 = \{month:这个月有30天\}M1​={month:这个月有30天}

M2={month:这个月有31天,除了12月}M_2 = \{month:这个月有31天,除了12月\}M2​={month:这个月有31天,除了12月}

M3={month:这个月是12月}M_3 = \{month:这个月是12月\}M3​={month:这个月是12月}

M4={month:这个月是2月}M_4 = \{month:这个月是2月\}M4​={month:这个月是2月}

D1={day:1≤day≤27}D_1 = \{day:1 \le day \le 27\}D1​={day:1≤day≤27}

D2={day:day=28}D_2 = \{day:day=28\}D2​={day:day=28}

D3={day:day=29}D_3 = \{day:day=29\}D3​={day:day=29}

D4={day:day=30}D_4 = \{day:day=30\}D4​={day:day=30}

D5={day:day=31}D_5 = \{day:day = 31\}D5​={day:day=31}

Y1={year:year是闰年}Y_1 = \{year:year是闰年\}Y1​={year:year是闰年}

Y2={year:year不是闰年}Y_2 = \{year:year不是闰年\}Y2​={year:year不是闰年}

2、动作桩

A0=不可能A_0=不可能A0​=不可能

A1:day+1A_1:day+1A1​:day+1

A2:day复位A_2:day复位A2​:day复位

A3:month+1A_3:month+1A3​:month+1

A4:month复位A_4:month复位A4​:month复位

A5:year+1A_5:year+1A5​:year+1

3、判定表
规则 1 2 3 4 5 6 7 8 9 10 11
条件:
C1:month是C_1:month是C1​:month是 M1M_1M1​ M1M_1M1​ M1M_1M1​ M1M_1M1​ M1M_1M1​ M2M_2M2​ M2M_2M2​ M2M_2M2​ M2M_2M2​ M2M_2M2​ M3M_3M3​
C2:day是C_2:day是C2​:day是 D1D_1D1​ D2D_2D2​ D3D_3D3​ D4D_4D4​ D5D_5D5​ D1D_1D1​ D2D_2D2​ D3D_3D3​ D4D_4D4​ D5D_5D5​ D1D_1D1​
C3:year是C_3:year是C3​:year是 −-− −-− −-− −-− −-− −-− −-− −-− −-− −-− −-−
动作:
A0=不可能A_0=不可能A0​=不可能 √\surd√
A1:day+1A_1:day+1A1​:day+1 √\surd√ √\surd√ √\surd√ √\surd√ √\surd√ √\surd√ √\surd√ √\surd√
A2:day复位A_2:day复位A2​:day复位 √\surd√ √\surd√
A3:month+1A_3:month+1A3​:month+1 √\surd√ √\surd√
A4:month复位A_4:month复位A4​:month复位
A5:year+1A_5:year+1A5​:year+1
规则 12 13 14 15 16 17 18 19 20 21 22
条件:
C1:month是C_1:month是C1​:month是 M3M_3M3​ M3M_3M3​ M3M_3M3​ M3M_3M3​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​
C2:day是C_2:day是C2​:day是 D2D_2D2​ D3D_3D3​ D4D_4D4​ D5D_5D5​ D1D_1D1​ D2D_2D2​ D2D_2D2​ D3D_3D3​ D3D_3D3​ D4D_4D4​ D5D_5D5​
C3:year是C_3:year是C3​:year是 −-− −-− −-− −-− −-− Y1Y_1Y1​ Y2Y_2Y2​ Y1Y_1Y1​ Y2Y_2Y2​ −-− −-−
动作:
A0=不可能A_0=不可能A0​=不可能 √\surd√ √\surd√ √\surd√
A1:day+1A_1:day+1A1​:day+1 √\surd√ √\surd√ √\surd√ √\surd√ √\surd√
A2:day复位A_2:day复位A2​:day复位 √\surd√ √\surd√ √\surd√
A3:month+1A_3:month+1A3​:month+1 √\surd√ √\surd√
A4:month复位A_4:month复位A4​:month复位 √\surd√
A5:year+1A_5:year+1A5​:year+1 √\surd√
4、经过简化的判定表
规则 1
2
3
4 5 6
7
8
9
10 11
12
13
14
15 16 17 18 19 20 21
22
条件:
C1:month是C_1:month是C1​:month是 M1M_1M1​ M1M_1M1​ M1M_1M1​ M2M_2M2​ M2M_2M2​ M3M_3M3​ M3M_3M3​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​ M4M_4M4​
C2:day是C_2:day是C2​:day是 D1D_1D1​
D2D_2D2​
D3D_3D3​
D4D_4D4​ D5D_5D5​ D1D_1D1​
D2D_2D2​
D3D_3D3​
D4D_4D4​
D5D_5D5​ D1D_1D1​
D2D_2D2​
D3D_3D3​
D4D_4D4​
D5D_5D5​ D1D_1D1​ D2D_2D2​ D2D_2D2​ D3D_3D3​ D4D_4D4​ D4D_4D4​
D5D_5D5​
C3:year是C_3:year是C3​:year是 −-− −-− −-− −-− −-− −-− −-− −-− Y1Y_1Y1​ Y2Y_2Y2​ Y1Y_1Y1​ Y2Y_2Y2​ −-−
动作:
A0=不可能A_0=不可能A0​=不可能 √\surd√ √\surd√ √\surd√
A1:day+1A_1:day+1A1​:day+1 √\surd√ √\surd√ √\surd√ √\surd√ √\surd√
A2:day复位A_2:day复位A2​:day复位 √\surd√ √\surd√ √\surd√ √\surd√ √\surd√
A3:month+1A_3:month+1A3​:month+1 √\surd√ √\surd√ √\surd√ √\surd√
A4:month复位A_4:month复位A4​:month复位 √\surd√
A5:year+1A_5:year+1A5​:year+1 √\surd√
5、根据简化的判定表设计测试用例
测试用例 month day year 期望输出
1~3 9 16 2019 下一天是2019年9月17日!
4 9 30 2019 下一天是2019年10月1日!
5 9 31 2019 日的值不在指定范围之内
6~9 1 16 2019 下一天是2019年1月17日!
10 1 31 2019 下一天是2019年2月1日!
11~14 12 16 2019 下一天是2019年12月17日!
15 12 31 2019 下一天是2020年1月1日!
16 2 16 2019 下一天是2019年2月17日!
17 2 28 2019 下一天是2019年3月1日!
18 2 28 2020 下一天是2020年2月29日!
19 2 29 2020 下一天是2020年3月1日!
20 2 29 2019 日的值不在指定范围之内
21,22 2 30 2019 日的值不在指定范围之内
5、测试类

代码文件地址

6、运行结果

nextDate函数

南隅笙箫 原创文章 89获赞 8访问量 8293 关注 私信 展开阅读全文
作者:南隅笙箫



边界值分析法 判定表 边界 测试用例 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章