1、制作者:制作者:aTool.org主讲:黄老师主讲:黄老师NextDateNextDate函数用例设计方法函数用例设计方法讲课班级:软件设计班讲课班级:软件设计班第第1页页Page 2制作者:制作者:制作者:制作者:aTool.orgNextDateNextDate函数用例设计方法函数用例设计方法n黑盒测试黑盒测试n等价类划分法等价类划分法n边界值分析法边界值分析法n因果图法因果图法n决议表法决议表法第第2页页Page 3制作者:制作者:制作者:制作者:aTool.orgnNextDate函数包含三个变量:函数包含三个变量:month(月份)、(月份)、day(日期)(日期)和和year(年)
2、,函数输出为输入日期(年),函数输出为输入日期后一天日期。后一天日期。比如,输入为比如,输入为9月月9日,则函数输出日,则函数输出为为9月月10日日。要求输入变量。要求输入变量month、day和和year均为整数值,而且满足以下条件:均为整数值,而且满足以下条件:n(1)1month12n(2)1day31n(3)1912year2050n此函数主要特点是输入变量之间逻辑关系比较复杂。此函数主要特点是输入变量之间逻辑关系比较复杂。复杂性起源有两个:一个是输入域复杂性,另一个复杂性起源有两个:一个是输入域复杂性,另一个是指闰年规则。比如变量是指闰年规则。比如变量year和变量和变量month取
3、不一取不一样值,对应变量样值,对应变量day会有不一样取值范围,会有不一样取值范围,day值范值范围可能是围可能是130或或131,也可能是,也可能是128或或129。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类第第3页页Page 4制作者:制作者:制作者:制作者:aTool.org(1)简单等价类划分测试)简单等价类划分测试NextDate函数函数有效等价类有效等价类简单等价类划分测试简单等价类划分测试NextDate函数能够划分以下三种有效等价类:函数能够划分以下三种有效等价类:M1month:1month12D1day:1day31Y1year:1912year2050无
4、效等价类无效等价类若条件若条件(1)()(3)中任何一个条件无效,那么)中任何一个条件无效,那么NextDate函数函数都会产生一个输出,指明对应变量超出取值范围,比如都会产生一个输出,指明对应变量超出取值范围,比如month值不在值不在112范围当中。范围当中。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类第第4页页Page 5制作者:制作者:制作者:制作者:aTool.org显然还存在着大量显然还存在着大量year、month、day无效组合,无效组合,NextDate函数将这些组合统一输出为:函数将这些组合统一输出为:“无效输入无效输入日期日期”。其无效等价类为:。其无效等
5、价类为:M2month:month12D2day:day31Y2year:year2050等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类第第5页页Page 6制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类一般等价类测试用比如表一般等价类测试用比如表5-2所示。所示。表表5-2 NextDate函数一般等价类测试用例函数一般等价类测试用例测试测试用例用例输入输入期望输出期望输出monthdayyearTest Case 199n9月月10日日健壮等价类测试中包含弱健壮等价类测试和健壮壮等价类测试。健壮等价类测试中包含弱
6、健壮等价类测试和健壮壮等价类测试。弱健壮等价类测试弱健壮等价类测试弱健壮等价类测试中有效测试用例使用每个有效等价类弱健壮等价类测试中有效测试用例使用每个有效等价类中一个值。弱健壮等价类测试中无效测试用例则只包含一中一个值。弱健壮等价类测试中无效测试用例则只包含一个无效值,其它都是有效值,即含有单缺点假设。如表个无效值,其它都是有效值,即含有单缺点假设。如表5-3所表示。所表示。第第6页页Page 7制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类表5-3 NextDate函数弱健壮等价类测试用例测试用例测试用例输入输入期望输出期望输
7、出monthdayyearTest Case 199n9月月10日日Test Case 209month不在不在112中中Test Case 3139month不在不在112中中Test Case 490day不在不在131中中Test Case 5932day不在不在131中中Test Case 6991911year不在不在19122050中中Test Case 7992051year不在不在19122050中中第第7页页Page 8制作者:制作者:制作者:制作者:aTool.orgn健壮壮等价类测试健壮壮等价类测试n健壮壮等价类测试考虑了更多无效值情况。健壮壮等健壮壮等价类测试考虑了更多
8、无效值情况。健壮壮等价类测试中无效测试用例能够包含多个无效值,即含价类测试中无效测试用例能够包含多个无效值,即含有多个缺点假设。因为有多个缺点假设。因为NextDate函数有三个变量,所函数有三个变量,所以对应健壮壮等价类测试用例能够包含一个无效值,以对应健壮壮等价类测试用例能够包含一个无效值,两个无效值或三个无效值。两个无效值或三个无效值。如表如表5-4所表示。所表示。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类第第8页页Page 9制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类n表5-4 NextDate函数健
9、壮壮等价类测试用例测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 1-19month不在不在112中中Test Case 29-1day不在不在131中中Test Case 3991900year不在不在19122050中中Test Case 4-1-1变量变量month、day无效无效变量变量year有效有效Test Case 5-191900变量变量month、year无效无效变量变量day有效有效Test Case 69-11900变量变量day、year无效无效变量变量month有效有效Test Case 7-1-11900变量变量month、day
10、、year无效无效第第9页页Page 10制作者:制作者:制作者:制作者:aTool.orgn(2)改进等价类划分测试)改进等价类划分测试NextDate函数函数n在简单等价类划分测试在简单等价类划分测试NextDate函数中,没有考虑函数中,没有考虑2月份天数问题,也没有考虑闰月份天数问题,也没有考虑闰年问题,月份只包含了年问题,月份只包含了30天和天和31天两种情况。在改进等价类划分测试天两种情况。在改进等价类划分测试NextDate函数函数中,要考虑中,要考虑2月份天数问题。月份天数问题。n关于每个月份天数问题,能够详细划分为以下等价类:关于每个月份天数问题,能够详细划分为以下等价类:n
11、M1month:month有有30天天nM2month:month有有31天天,除去除去12月月nM3month:month是是2月月nM4month:month是是12月月nD1day:1day27nD2day:day28nD3day:day29nD4day:day30nD5day:day31nY1year:year是闰年是闰年nY2year:year不是闰年不是闰年等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类第第10页页Page 11制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类n改进等价类划分测试NextDa
12、te函数如表5-5所表示。n表5-5 改进等价类划分法测试用例测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 1630n7月月1日日Test Case 2831n9月月1日日Test Case 3227n2月月28日日Test Case 4228n3月月1日日Test Case 5229n3月月1日(是闰年)日(是闰年)Test Case 61231n1月月1日日Test Case 7931n不可能输入日期不可能输入日期Test Case 8229n不可能输入日期不可能输入日期Test Case 9230n不可能输入日期不可能输入日期Test Case 10
13、159变量变量month无效无效Test Case 11935变量变量day无效无效Test Case 12992100变量变量year无效无效返回返回第第11页页Page 12制作者:制作者:制作者:制作者:aTool.org边界值分析法边界值分析法边界值分析法设计测试用例边界值分析法设计测试用例在在NextDate函数中,要求了变量函数中,要求了变量month、day、year对应取对应取值范围。在上面等价类法设计测试用例中已经提过,详细值范围。在上面等价类法设计测试用例中已经提过,详细以下:以下:M1month:1month12D1day:1day31Y1year:1912year205
14、0第第12页页Page 13制作者:制作者:制作者:制作者:aTool.org边界值分析法边界值分析法测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 1-115month不在不在112中中Test Case 2015month不在不在112中中Test Case 3115n1月月16日日Test Case 4215n2月月16日日Test Case 51115n11月月16日日Test Case 61215n12月月16日日Test Case 71315month不在不在112中中Test Case 86-1day不在不在131中中Test Case 960
15、day不在不在131中中Test Case 1061n6月月2日日Test Case 1162n6月月3日日Test Case 12630n7月月1日日Test Case 13631n不可能输入日期不可能输入日期Test Case 14632day不在不在131中中Test Case 156151911year不在不在19122050中中Test Case 166151912n196月月16日日Test Case 176151913n196月月16日日Test Case 1861520492049年年6月月16日日Test Case 1961520502050年年6月月16日日Test Cas
16、e 206152051year不在不在19122050中中返回返回第第13页页Page 14制作者:制作者:制作者:制作者:aTool.org决议表法决议表法nNextDate函数决议表测试用例设计:函数决议表测试用例设计:NextDate函数中包含了定义域各个变量之间依赖问题。等价类划分法和边函数中包含了定义域各个变量之间依赖问题。等价类划分法和边界值分析法只能界值分析法只能“独立地独立地”选取各个输入值,不能表达出多个变量依赖选取各个输入值,不能表达出多个变量依赖关系。决议表法则是依据变量间逻辑依赖关系设计测试输入数据,排除关系。决议表法则是依据变量间逻辑依赖关系设计测试输入数据,排除不可
17、能数据组合,很好地处理了定义域依赖问题。不可能数据组合,很好地处理了定义域依赖问题。NextDate函数求解给定某个日期下一个日期可能操作(动作桩)以下:函数求解给定某个日期下一个日期可能操作(动作桩)以下:变量变量day加加1操作;操作;变量变量day复位操作;复位操作;变量变量month加加1操作;操作;变量变量month复位操作;复位操作;变量变量year加加1操作。操作。第第14页页Page 15制作者:制作者:制作者:制作者:aTool.org决议表法决议表法依据上述动作桩发觉依据上述动作桩发觉NextDate函数求解关键是日和月问题,通常能够在下函数求解关键是日和月问题,通常能够在
18、下面等价类(条件桩)基础上建立决议表:面等价类(条件桩)基础上建立决议表:M1month:month有有30天天M2month:month有有31天,天,12月除外月除外M3month:month是是12月月M4month:month是是2月月D1day:1day27D2day:day28D3day:day29D4day:day30D5day:day31Y1year:year是闰年是闰年Y2year:year不是闰年不是闰年第第15页页Page 16制作者:制作者:制作者:制作者:aTool.org决议表法决议表法输入变量间存在大量逻辑关系输入变量间存在大量逻辑关系NextDate函数决议表如
19、表函数决议表如表5-7所所表示。表示。决议表共有决议表共有22条规则:条规则:第第15条规则处理有条规则处理有30天月份;天月份;第第610条规则处理有条规则处理有31天月份(除天月份(除12月份以外);月份以外);第第1115条规则处理条规则处理12月份;月份;第第1622条规则处理条规则处理2月份和闰年问题。月份和闰年问题。不可能规则也在决议表中列出,比如第不可能规则也在决议表中列出,比如第5条规则中在有条规则中在有30天月天月份中也考虑了份中也考虑了31日。日。第第16页页Page 17制作者:制作者:制作者:制作者:aTool.org决议表法决议表法规则规则选项选项1234567891
20、011条件:条件:C1:month在在M1M1M1M1M1M2M2M2M2M2M3C2:day在在D1D2D3D4D5D1D2D3D4D5D1C3:year在在动作:动作:A1:不可能不可能A2:day加加1A3:day复位复位A4:month加加1A5:month复位复位A6:year加加1第第17页页Page 18制作者:制作者:制作者:制作者:aTool.org决议表法决议表法 规则规则选项选项1213141516171819202122条件:条件:C1:month在在M3M3M3M3M4M4M4M4M4M4M4C2:day在在D2D3D4D5D1D2D2D3D3D4D5C3:year在
21、在Y1Y2Y1Y2动作:动作:A1:不可能不可能A2:day加加1A3:day复位复位A4:month加加1A5:month复位复位A6:year加加1第第18页页Page 19制作者:制作者:制作者:制作者:aTool.org决议表法决议表法表5-8 简化NextDate函数决议表 选项选项规则规则1,2,3456,7,8,91011,12,13,1415161718192021,22条件:条件:C1:month在在M1M1M1M2M2M3M3M4M4M4M4M4M4C2:day在在D1,D2,D3D4D5D1,D2,D3,D4D5D1,D2,D3,D4D5D1D2D2D3D3D4,D5C3
22、:year在在Y1Y2Y1Y2动作:动作:A1:不可能不可能A2:day加加1A3:day复位复位A4:month加加1A5:month复位复位A6:year加加1第第19页页Page 20制作者:制作者:制作者:制作者:aTool.org决议表法决议表法依据简化决议表5-7,可设计如表5-9所表示测试用例。表5-9 NextDate函数测试用例组测试用例测试用例monthdayyear预期输出预期输出Test Case 13615n6月月16日日Test Case 4630n7月月1日日Test Case 5631n不可能输入日期不可能输入日期Test Case 69115n1月月16日日Test Case 10131n2月月1日日Test Case 11141215n12月月16日日Test Case 151231n1月月1日日Test Case 16215n2月月16日日Test Case 17228n2月月29日日Test Case 18228n3月月1日日Test Case 19229n3月月1日日Test Case 20229n不可能输入日期不可能输入日期Test Case 21,22230n不可能输入日期不可能输入日期返回返回第第20页页