当前位置 博文首页 > 无限迭代中......:黑盒测试——nextDate函数测试(等价类划分法

    无限迭代中......:黑盒测试——nextDate函数测试(等价类划分法

    作者:[db:作者] 时间:2021-07-19 16:22

    实验目的

    (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)为有效等价类设计测试用例

    序号测试数据期望结果覆盖范围
    12016 2 29下一天是2016年3月1日!(1)(5)(7)
    22017 1 28下一天是2017年1月29日!(2)(3)(6)
    32017 1 31下一天是2017年2月1日!(2)(3)(9)
    42017 4 30下一天是2017年5月1日!(2)(4)(8)
    52017 12 31下一天是2018年1月1日!(2)(3)(9)

    2)为每一个无效等价类至少设计一个测试用例

    序号输入数据期望结果覆盖范围
    61899 3 1年的值不在指定范围之内(10)
    72051 3 1年的值不在指定范围之内(11)
    8205% 3 1无效的输入日期!(12)
    91901 -1 1月的值不在指定范围之内(13)
    101901 13 1月的值不在指定范围之内(14)
    111901 1% 1无效的输入日期!(15)
    121901 1 -1日的值不在指定范围之内(16)
    132016 2 30日的值不在指定范围之内(17)
    142017 2 29日的值不在指定范围之内(18)
    152017 3 32日的值不在指定范围之内(19)
    162017 4 31日的值不在指定范围之内(20)
    172017 4 32日的值不在指定范围之内(21)
    182017 4 3%无效的输入日期!(22)

    按照边界值分析法设计测试用例

    测试用例monthdayYear针对的有效类期望输出
    17101889(1)(2)年的值不在指定范围内
    27101900(1)(2)19000711
    37101901(1)(2)19010711
    47102049(1)(2)20490711
    57102050(1)(2)20500711
    67102051(1)(2)年的值不在指定范围内
    70102019(3)~(6)月的值不在指定范围内
    81102019(3)~(6)20190111
    92102019(3)~(6)20190211
    1011102019(3)~(6)20191111
    1112102019(3)~(6)20191211
    1213102019(3)~(6)月的值不在指定范围内
    132272019(5)(7)~(9)20190228
    142282019(5)(7)~(9)20190301
    152292019(5)(7)~(9)日的值不在指定范围内
    162282020(5)(7)~(9)20200229
    172292020(5)(7)~(9)20200301
    182302020(5)(7)~(9)日的值不在指定范围内
    191302019(3)(9)(10)20190131
    201312019(3)(9)(10)20190201
    211322019(3)(9)(10)日的值不在指定范围内
    224302019(4)(9)(10)20190501
    234312019(4)(9)(10)日的值不在指定范围内
    244322019(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:3112
    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:1day27
    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?=y