黑盒测试——nextDate函数测试(等价类划分法边界值分析法判定表驱动法)
Posted Starzkg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑盒测试——nextDate函数测试(等价类划分法边界值分析法判定表驱动法)相关的知识,希望对你有一定的参考价值。
实验目的
(1)掌握应用黑盒测试技术进行测试用例设计。
(2)掌握对测试用例进行优化设计方法。
实验内容
日期问题
测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31和1900≤year≤2050),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004 年11月30日,则该程序的输出为2004年12月1日。
(1)划分等价类
(2)按照等价类划分法设计测试用例;
(3)按照边界值分析法设计测试用例;
(4)按照判定表驱动法设计测试用例。
(5)编写nextDate函数;
(6)掌握Junit4的用法,使用Junit4测试nextDate函数。
JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。
掌握Junit4定义的一些常见Annotations:
org.junit.Test
org.junit.Before
org.junit.After
org.junit.BeforeClass
org.junit.AfterClass
org.junit.Ignore
org.junit.runner.RunWith
org.junit.runners.Suite.SuiteClasses
org.junit.runners.Parameterized.Parameters
实验要求
(1)根据题目要求编写测试用例;
(2)准备nextDate函数,使用Junit4测试执行测试;
(3)实验结果要求给出测试用例集测试效果比较。
(4)撰写实验报告。
实验过程
(1)根据题目要求编写测试用例
划分等价类并编号
输入数据 | 有效等价类 | 无效等价类 |
---|---|---|
年 | (1) 1900到2050内的闰年整数 | (10) year<1900 |
(2) 1900到2050内的平年整数 | (11) year>2050 | |
(12) 其他输入 | ||
月 | (3) 1,3,5,7,8,10,12内的整数 | (13) month<1 |
(4) 4,6,9,11内的整数 | (14) 12<month | |
(5) 2 | (15) 其他输入 | |
日 | (6) 1~28 | (16) day<1 |
(7) 29 | (17) year为闰年 month=2时,29<day | |
(8) 30 | (18) year为非闰年 month=2时,28<day | |
(9) 31 | (19) month=1,3,5,7,8,10,12时,31<day | |
(20) month=4,6,9,11时,30<day | ||
(21) day>31 | ||
(22) 其他输入 |
按照等价类划分法设计测试用例
1)为有效等价类设计测试用例
序号 | 测试数据 | 期望结果 | 覆盖范围 |
---|---|---|---|
1 | 2016 2 29 | 下一天是2016年3月1日! | (1)(5)(7) |
2 | 2017 1 28 | 下一天是2017年1月29日! | (2)(3)(6) |
3 | 2017 1 31 | 下一天是2017年2月1日! | (2)(3)(9) |
4 | 2017 4 30 | 下一天是2017年5月1日! | (2)(4)(8) |
5 | 2017 12 31 | 下一天是2018年1月1日! | (2)(3)(9) |
2)为每一个无效等价类至少设计一个测试用例
序号 | 输入数据 | 期望结果 | 覆盖范围 |
---|---|---|---|
6 | 1899 3 1 | 年的值不在指定范围之内 | (10) |
7 | 2051 3 1 | 年的值不在指定范围之内 | (11) |
8 | 205% 3 1 | 无效的输入日期! | (12) |
9 | 1901 -1 1 | 月的值不在指定范围之内 | (13) |
10 | 1901 13 1 | 月的值不在指定范围之内 | (14) |
11 | 1901 1% 1 | 无效的输入日期! | (15) |
12 | 1901 1 -1 | 日的值不在指定范围之内 | (16) |
13 | 2016 2 30 | 日的值不在指定范围之内 | (17) |
14 | 2017 2 29 | 日的值不在指定范围之内 | (18) |
15 | 2017 3 32 | 日的值不在指定范围之内 | (19) |
16 | 2017 4 31 | 日的值不在指定范围之内 | (20) |
17 | 2017 4 32 | 日的值不在指定范围之内 | (21) |
18 | 2017 4 3% | 无效的输入日期! | (22) |
按照边界值分析法设计测试用例
测试用例 | month | day | Year | 针对的有效类 | 期望输出 |
---|---|---|---|---|---|
1 | 7 | 10 | 1889 | (1)(2) | 年的值不在指定范围内 |
2 | 7 | 10 | 1900 | (1)(2) | 19000711 |
3 | 7 | 10 | 1901 | (1)(2) | 19010711 |
4 | 7 | 10 | 2049 | (1)(2) | 20490711 |
5 | 7 | 10 | 2050 | (1)(2) | 20500711 |
6 | 7 | 10 | 2051 | (1)(2) | 年的值不在指定范围内 |
7 | 0 | 10 | 2019 | (3)~(6) | 月的值不在指定范围内 |
8 | 1 | 10 | 2019 | (3)~(6) | 20190111 |
9 | 2 | 10 | 2019 | (3)~(6) | 20190211 |
10 | 11 | 10 | 2019 | (3)~(6) | 20191111 |
11 | 12 | 10 | 2019 | (3)~(6) | 20191211 |
12 | 13 | 10 | 2019 | (3)~(6) | 月的值不在指定范围内 |
13 | 2 | 27 | 2019 | (5)(7)~(9) | 20190228 |
14 | 2 | 28 | 2019 | (5)(7)~(9) | 20190301 |
15 | 2 | 29 | 2019 | (5)(7)~(9) | 日的值不在指定范围内 |
16 | 2 | 28 | 2020 | (5)(7)~(9) | 20200229 |
17 | 2 | 29 | 2020 | (5)(7)~(9) | 20200301 |
18 | 2 | 30 | 2020 | (5)(7)~(9) | 日的值不在指定范围内 |
19 | 1 | 30 | 2019 | (3)(9)(10) | 20190131 |
20 | 1 | 31 | 2019 | (3)(9)(10) | 20190201 |
21 | 1 | 32 | 2019 | (3)(9)(10) | 日的值不在指定范围内 |
22 | 4 | 30 | 2019 | (4)(9)(10) | 20190501 |
23 | 4 | 31 | 2019 | (4)(9)(10) | 日的值不在指定范围内 |
24 | 4 | 32 | 2019 | (4)(9)(10) | 日的值不在指定范围内 |
按照判定表驱动法设计测试用例
条件桩
M
1
=
m
o
n
t
h
:
这
个
月
有
30
天
M_1={month:这个月有30天}
M1=month:这个月有30天
M
2
=
m
o
n
t
h
:
这
个
月
有
31
天
,
除
了
12
月
M_2={month:这个月有31天,除了12月}
M2=month:这个月有31天,除了12月
M
3
=
m
o
n
t
h
:
这
个
月
是
12
月
M_3={month:这个月是12月}
M3=month:这个月是12月
M
4
=
m
o
n
t
h
:
这
个
月
是
2
月
M_4={month:这个月是2月}
M4=month:这个月是2月
D
1
=
d
a
y
:
1
≤
d
a
y
≤
27
D_1={day:1≤day≤27}
D1=day:1≤day≤27
D
2
=
d
a
y
:
d
a
y
=
28
D_2={day:day=28}
D2=day:day=28
D
3
=
d
a
y
:
d
a
y
=
29
D_3={day:day=29}
D3=day:day=29
D
4
=
d
a
y
:
d
a
y
=
30
D_4={day:day=30}
D4=day:day=30
D
5
=
d
a
y
:
d
a
y
=
31
D_5={day:day=31}
D5=day:day=31
Y
1
=
y
e
a
r
:
y
e
a
r
是
闰
年
Y_1={year:year是闰年}
Y1=year:year是闰年
Y
2
=
y
e
a
r
:
y
e
a
r
不
是
闰
年
Y_2={year:year不是闰年}
Y2=year:year不是闰年
动作桩
A
0
:
不
可
能
A_0:不可能
A0:不可能
A
1
:
d
a
y
+
1
A_1:day+1
A1:day+1
A
2
:
d
a
y
复
位
A_2:day复位
A2:day复位
A
3
:
m
o
n
t
h
+
1
A_3:month+1
A3:month+1
A
4
:
m
o
n
t
h
复
位
A_4:month复位
A4:month复位
A
5
:
y
e
a
r
+
1
A_5:year+1
A5:year+1
判断表
规则 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
条件: | ||||||||||||||||||||||
C 1 : m o n t h 是 C_1:month是 C1:month是 | M 1 M_1 M1 | M 1 M_1 M1 | M 1 M_1 M1 | M 1 M_1 M1 | M 1 M_1 M1 | M 2 M_2 M2 | M 2 M_2 M2 | M 2 M_2 M2 | M 2 M_2 M2 | M 2 M_2 M2 | M 3 M_3 M3 | M 3 M_3 M3 | M 3 M_3 M3 | M 3 M_3 M3 | M 3 M_3 M3 | M 4 M_4 M4 | M 4 M_4 M4 |
以上是关于黑盒测试——nextDate函数测试(等价类划分法边界值分析法判定表驱动法)的主要内容,如果未能解决你的问题,请参考以下文章 |