《软件测试-NextDate函数-测试用例详解》由会员分享,可在线阅读,更多相关《软件测试-NextDate函数-测试用例详解(20页珍藏版)》请在金锄头文库上搜索。
1、制作者:制作者:aTool.org主讲:黄老师主讲:黄老师NextDateNextDate函数的用例设计方法函数的用例设计方法授课班级:软件设计班授课班级:软件设计班Page 2制作者:制作者:制作者:制作者:aTool.orgNextDateNextDate函数的用例设计方法函数的用例设计方法n黑盒测试黑盒测试n等价类划分法等价类划分法n边界值分析法边界值分析法n因果图法因果图法n决策表法决策表法Page 3制作者:制作者:制作者:制作者:aTool.orgNextDate函数包含三个变量:函数包含三个变量:month(月份)、(月份)、day(日期)(日期)和和year(年),函数的输出为
2、输入日期后一天的日期。(年),函数的输出为输入日期后一天的日期。例例如,输入为如,输入为2007年年9月月9日,则函数的输出为日,则函数的输出为2007年年9月月10日日。要求输入变量。要求输入变量month、day和和year均为整数值,均为整数值,并且满足下列条件:并且满足下列条件:(1)1month12(2)1day31(3)1912year2050此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量的规则。例如变
3、量year和变量和变量month取不同的值,对应的变取不同的值,对应的变量量day会有不同的取值范围,会有不同的取值范围,day值的范围可能是值的范围可能是130或或131,也可能是,也可能是128或或129。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类Page 4制作者:制作者:制作者:制作者:aTool.org(1)简单等价类划分测试)简单等价类划分测试NextDate函数函数有效等价类有效等价类简单等价类划分测试简单等价类划分测试NextDate函数可以划分以下三种有效等价类:函数可以划分以下三种有效等价类:M1month:1month12D1day:1day31Y1ye
4、ar:1912year2050无效等价类无效等价类若条件若条件(1)()(3)中任何一个条件无效,那么)中任何一个条件无效,那么NextDate函数函数都会产生一个输出,指明相应的变量超出取值范围,例如都会产生一个输出,指明相应的变量超出取值范围,例如month的值不在的值不在112范围当中。范围当中。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类Page 5制作者:制作者:制作者:制作者:aTool.org显然还存在着大量的显然还存在着大量的year、month、day的无效组的无效组合,合,NextDate函数将这些组合统一输出为:函数将这些组合统一输出为:“无效无效输入日期
5、输入日期”。其无效等价类为:。其无效等价类为:M2month:month12D2day:day31Y2year:year2050等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类Page 6制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类一般等价类测试用例一般等价类测试用例如表如表5-2所示。所示。表5-2 NextDate函数的一般等价类测试用例测试测试用例用例输入输入期望输出期望输出monthdayyearTest Case 19920072007年年9月月10日日健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试
6、。健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试。弱健壮等价类测试弱健壮等价类测试弱健壮等价类测试中的有效测试用例使用每个有效等价弱健壮等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱健壮等价类测试中的无效测试用例则只类中的一个值。弱健壮等价类测试中的无效测试用例则只包含一个无效值,其他都是有效值,即含有单缺陷假设。包含一个无效值,其他都是有效值,即含有单缺陷假设。如表如表5-3所示。所示。Page 7制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类表5-3 NextDate函数的弱健壮等价类测试用例测试用例测试用
7、例输入输入期望输出期望输出monthdayyearTest Case 19920072007年年9月月10日日Test Case 2092007month不在不在112中中Test Case 31392007month不在不在112中中Test Case 4902007day不在不在131中中Test Case 59322007day不在不在131中中Test Case 6991911year不在不在19122050中中Test Case 7992051year不在不在19122050中中Page 8制作者:制作者:制作者:制作者:aTool.orgn强健壮等价类测试强健壮等价类测试n强健壮等
8、价类测试考虑了更多的无效值情况。强健壮强健壮等价类测试考虑了更多的无效值情况。强健壮等价类测试中的无效测试用例可以包含多个无效值,等价类测试中的无效测试用例可以包含多个无效值,即含有多个缺陷假设。因为即含有多个缺陷假设。因为NextDate函数有三个变量,函数有三个变量,所以对应的强健壮等价类测试用例可以包含一个无效所以对应的强健壮等价类测试用例可以包含一个无效值,两个无效值或三个无效值。值,两个无效值或三个无效值。如表如表5-4所示。所示。等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类Page 9制作者:制作者:制作者:制作者:aTool.org等价类划分法等价类划分法以输入域
9、划分等价类以输入域划分等价类n表5-4 NextDate函数的强健壮等价类测试用例测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 1-192007month不在不在112中中Test Case 29-12007day不在不在131中中Test Case 3991900year不在不在19122050中中Test Case 4-1-12007变量变量month、day无效无效变量变量year有效有效Test Case 5-191900变量变量month、year无效无效变量变量day有效有效Test Case 69-11900变量变量day、year无效无效变
10、量变量month有效有效Test Case 7-1-11900变量变量month、day、year无效无效Page 10制作者:制作者:制作者:制作者:aTool.orgn(2)改进等价类划分测试)改进等价类划分测试NextDate函数函数n在简单等价类划分测试在简单等价类划分测试NextDate函数中,没有考虑函数中,没有考虑2月份的天数问题,也没有考虑月份的天数问题,也没有考虑闰年的问题,月份只包含了闰年的问题,月份只包含了30天和天和31天两种情况。在改进等价类划分测试天两种情况。在改进等价类划分测试NextDate函数中,要考虑函数中,要考虑2月份天数的问题。月份天数的问题。n关于每个
11、月份的天数问题,可以详细划分为以下等价类:关于每个月份的天数问题,可以详细划分为以下等价类:nM1month:month有有30天天nM2month:month有有31天天,除去除去12月月nM3month:month是是2月月nM4month:month是是12月月nD1day:1day27nD2day:day28nD3day:day29nD4day:day30nD5day:day31nY1year:year是闰年是闰年nY2year:year不是闰年不是闰年等价类划分法等价类划分法以输入域划分等价类以输入域划分等价类Page 11制作者:制作者:制作者:制作者:aTool.org等价类划分
12、法等价类划分法以输入域划分等价类以输入域划分等价类n改进等价类划分测试NextDate函数如表5-5所示。n表5-5 改进等价类划分法测试用例测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 163020072007年年7月月1日日Test Case 283120072007年年9月月1日日Test Case 322720072007年年2月月28日日Test Case 422820072007年年3月月1日日Test Case 522920042000年年3月月1日(日(2004是闰年)是闰年)Test Case 6123120072008年年1月月1日日T
13、est Case 79312007不可能的输入日期不可能的输入日期Test Case 82292007不可能的输入日期不可能的输入日期Test Case 92302007不可能的输入日期不可能的输入日期Test Case 101592007变量变量month无效无效Test Case 119352007变量变量day无效无效Test Case 12992100变量变量year无效无效返回返回Page 12制作者:制作者:制作者:制作者:aTool.org边界值分析法边界值分析法边界值分析法设计测试用例边界值分析法设计测试用例在在NextDate函数中,规定了变量函数中,规定了变量month、d
14、ay、year的相应的相应取值范围。在上面等价类法设计测试用例中已经提过,具取值范围。在上面等价类法设计测试用例中已经提过,具体如下:体如下:M1month:1month12D1day:1day31Y1year:1912year2050Page 13制作者:制作者:制作者:制作者:aTool.org边界值分析法边界值分析法测试用例测试用例输入输入期望输出期望输出monthdayyearTest Case 1-1152000month不在不在112中中Test Case 20152000month不在不在112中中Test Case 311520002000年年1月月16日日Test Case
15、421520002000年年2月月16日日Test Case 5111520002000年年11月月16日日Test Case 6121520002000年年12月月16日日Test Case 713152000month不在不在112中中Test Case 86-12000day不在不在131中中Test Case 9602000day不在不在131中中Test Case 106120002000年年6月月2日日Test Case 116220002000年年6月月3日日Test Case 1263020002000年年7月月1日日Test Case 136312000不可能的输入日期不可能
16、的输入日期Test Case 146322000day不在不在131中中Test Case 156151911year不在不在19122050中中Test Case 1661519121912年年6月月16日日Test Case 1761519131913年年6月月16日日Test Case 1861520492049年年6月月16日日Test Case 1961520502050年年6月月16日日Test Case 206152051year不在不在19122050中中返回返回Page 14制作者:制作者:制作者:制作者:aTool.org决策表法决策表法nNextDate函数的决策表测试用
17、例设计:函数的决策表测试用例设计:NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和函数中包含了定义域各个变量之间的依赖问题。等价类划分法和边界值分析法只能边界值分析法只能“独立地独立地”选取各个输入值,不能体现出多个变量的选取各个输入值,不能体现出多个变量的依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,排除不可能的数据组合,很好地解决了定义域的依赖问题。排除不可能的数据组合,很好地解决了定义域的依赖问题。NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下:函数求解给定
18、某个日期的下一个日期的可能操作(动作桩)如下:变量变量day加加1操作;操作;变量变量day复位操作;复位操作;变量变量month加加1操作;操作;变量变量month复位操作;复位操作;变量变量year加加1操作。操作。Page 15制作者:制作者:制作者:制作者:aTool.org决策表法决策表法根据上述动作桩发现根据上述动作桩发现NextDate函数的求解关键是日和月的问题,通常可以函数的求解关键是日和月的问题,通常可以在下面等价类(条件桩)的基础上建立决策表:在下面等价类(条件桩)的基础上建立决策表:M1month:month有有30天天M2month:month有有31天,天,12月除
19、外月除外M3month:month是是12月月M4month:month是是2月月D1day:1day27D2day:day28D3day:day29D4day:day30D5day:day31Y1year:year是闰年是闰年Y2year:year不是闰年不是闰年Page 16制作者:制作者:制作者:制作者:aTool.org决策表法决策表法输入变量间存在大量逻辑关系的输入变量间存在大量逻辑关系的NextDate函数决策表如表函数决策表如表5-7所示。所示。决策表共有决策表共有22条规则:条规则:第第15条规则解决有条规则解决有30天的月份;天的月份;第第610条规则解决有条规则解决有31天
20、的月份(除天的月份(除12月份以外);月份以外);第第1115条规则解决条规则解决12月份;月份;第第1622条规则解决条规则解决2月份和闰年的问题。月份和闰年的问题。不可能规则也在决策表中列出,比如第不可能规则也在决策表中列出,比如第5条规则中在有条规则中在有30天的天的月份中也考虑了月份中也考虑了31日。日。Page 17制作者:制作者:制作者:制作者:aTool.org决策表法决策表法规则规则选项选项1234567891011条件:条件:C1: month在在M1M1M1M1M1M2M2M2M2M2M3C2: day在在D1D2D3D4D5D1D2D3D4D5D1C3: year在在动作
21、:动作:A1: 不可能不可能A2: day加加1A3: day复位复位A4: month加加1A5: month复位复位A6:year加加1Page 18制作者:制作者:制作者:制作者:aTool.org决策表法决策表法 规则规则选项选项1213141516171819202122条件:条件:C1: month在在M3M3M3M3M4M4M4M4M4M4M4C2: day在在D2D3D4D5D1D2D2D3D3D4D5C3: year在在Y1Y2Y1Y2动作:动作:A1: 不可能不可能A2: day加加1A3: day复位复位A4: month加加1A5: month复位复位A6:year加加
22、1Page 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: year在在Y1Y2Y1Y2动作:动作:A1: 不可能不可能A2: day加加1A3: day复位复位A4: month加加1A5: month复位复位
23、A6:year加加1Page 20制作者:制作者:制作者:制作者:aTool.org决策表法决策表法根据简化的决策表5-7,可设计如表5-9所示的测试用例。表5-9 NextDate函数的测试用例组测试用例测试用例monthdayyear预期输出预期输出Test Case 1361520072007年年6月月16日日Test Case 463020072007年年7月月1日日Test Case 56312007不可能的输入日期不可能的输入日期Test Case 6911520072007年年1月月16日日Test Case 1013120072007年年2月月1日日Test Case 111412152007 2007年年12月月16日日Test Case 15123120072008年年1月月1日日Test Case 1621520072007年年2月月16日日Test Case 1722820002000年年2月月29日日Test Case 1822820072007年年3月月1日日Test Case 1922920002000年年3月月1日日Test Case 202292007不可能的输入日期不可能的输入日期Test Case 21,222302007不可能的输入日期不可能的输入日期返回返回