Assignment8
问题
构造 NextDate
问题的弱一般的等价类测试用例
NextDate
问题:NextDate()
是整型变量month
,day
和year
的函数,输入 1812-2012
年期间的某一日期的 month
, day
和 year
的值,输出这一天的下一天的日期的 month
, day
和 year
值。
背景知识(摘自Lec16)
什么是等价类
一个输入等价类是指程序输入域的某个子集,在该子集中,各个输入数据对于揭露程序中的错误时等效的
弱等价类
单缺陷:选取用例时,仅仅使得一个变量取极值,其他变量取正常值
强等价类
多缺陷:选取用例时,同时让多个变量取极值
一般等价类
只覆盖有效等价类
健壮等价类
同时覆盖有效等价类和无效等价类
解答
三个变量的取值范围
- C1: 1 ≤ m o n t h ≤ 12 1 \le month \le 12 1≤month≤12
- C2: 1 ≤ d a y ≤ 31 1 \le day \le 31 1≤day≤31
- C3: 1812 ≤ y e a r ≤ 2012 1812 \le year \le 2012 1812≤year≤2012
划分等价类
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
year | Leap year (1) normal year (2) | Year < 1812 (3) year > 2012 (4) year is not integer (5) |
Month | February (6) December (7) Big month with 31 days (8) small month with 30 days (9) | Month > 12 (10) month < 1 (11) month is not integer (12) |
day | Day is 28 (13) day is 29 (14) day is 30 (15) day is 31 (16) day is others(17) | day > 31 (18) day < 1 (19) day is not integer (20) day > 28 when it is February and not Leap year(21) day > 29 when it is February and leap year(22) day > 30 when it is small month(22) |
测试用例构造
方法:
- 为每一个等价类规定一个唯一编号
- 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类。重复这一步,直到所有的有效等价类都被覆盖为止
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止
用例:
弱一般等价类测例,无需考虑无效等价类
Test case | y | m | d | excepted output | cover |
---|---|---|---|---|---|
WN1 | 2020 | 2 | 28 | 2020.2.29 | (1)(6)(13) |
WN2 | 2020 | 2 | 29 | 2020.3.1 | (1)(6)(14) |
WN3 | 2020 | 2 | 12 | 2020.2.13 | (1)(6)(17) |
WN4 | 2020 | 12 | 30 | 2021.1.1 | (1)(7)(15) |
WN5 | 2020 | 12 | 12 | 2020.12.13 | (1)(7)(17) |
WN6 | 2020 | 1 | 31 | 2021.2.1 | (1)(8)(16) |
WN7 | 2020 | 1 | 12 | 2020.1.13 | (1)(8)(17) |
WN8 | 2020 | 4 | 30 | 2021.5.1 | (1)(9)(15) |
WN9 | 2020 | 4 | 12 | 2020.4.13 | (1)(9)(17) |
WN10 | 2021 | 2 | 28 | 2021.3.1 | (2)(6)(13) |
WN11 | 2021 | 2 | 12 | 2021.2.13 | (2)(6)(17) |
WN12 | 2021 | 12 | 30 | 2022.1.1 | (2)(7)(15) |
WN13 | 2021 | 12 | 12 | 2021.12.13 | (2)(7)(17) |
WN14 | 2021 | 1 | 31 | 2021.2.1 | (2)(8)(16) |
WN15 | 2021 | 1 | 12 | 2021.1.13 | (2)(8)(17) |
WN16 | 2021 | 4 | 30 | 2021.5.1 | (2)(9)(15) |
WN17 | 2021 | 4 | 12 | 2021.4.13 | (2)(9)(17) |