您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 软件测试---NextDate函数---测试用例详解
制作者:aTool.org主讲:黄老师NextDate函数的用例设计方法授课班级:软件设计班Page2制作者:制作者:aTool.orgNextDate函数的用例设计方法黑盒测试等价类划分法边界值分析法因果图法决策表法Page3制作者:制作者:aTool.orgNextDate函数包含三个变量:month(月份)、day(日期)和year(年),函数的输出为输入日期后一天的日期。例如,输入为2007年9月9日,则函数的输出为2007年9月10日。要求输入变量month、day和year均为整数值,并且满足下列条件:(1)1≤month≤12(2)1≤day≤31(3)1912≤year≤2050此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量year和变量month取不同的值,对应的变量day会有不同的取值范围,day值的范围可能是1~30或1~31,也可能是1~28或1~29。等价类划分法——以输入域划分等价类Page4制作者:制作者:aTool.org(1)简单等价类划分测试NextDate函数有效等价类简单等价类划分测试NextDate函数可以划分以下三种有效等价类:M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}无效等价类若条件(1)~(3)中任何一个条件无效,那么NextDate函数都会产生一个输出,指明相应的变量超出取值范围,例如month的值不在1~12范围当中。等价类划分法——以输入域划分等价类Page5制作者:制作者:aTool.org显然还存在着大量的year、month、day的无效组合,NextDate函数将这些组合统一输出为:“无效输入日期”。其无效等价类为:M2={month:month1}M3={month:month12}D2={day:day1}D3={day:day31}Y2={year:year1912}Y3={year:year2050}等价类划分法——以输入域划分等价类Page6制作者:制作者:aTool.org等价类划分法——以输入域划分等价类一般等价类测试用例如表5-2所示。表5-2NextDate函数的一般等价类测试用例测试用例输入期望输出monthdayyearTestCase19920072007年9月10日健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试。•弱健壮等价类测试弱健壮等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱健壮等价类测试中的无效测试用例则只包含一个无效值,其他都是有效值,即含有单缺陷假设。如表5-3所示。Page7制作者:制作者:aTool.org等价类划分法——以输入域划分等价类表5-3NextDate函数的弱健壮等价类测试用例测试用例输入期望输出monthdayyearTestCase19920072007年9月10日TestCase2092007month不在1~12中TestCase31392007month不在1~12中TestCase4902007day不在1~31中TestCase59322007day不在1~31中TestCase6991911year不在1912~2050中TestCase7992051year不在1912~2050中Page8制作者:制作者:aTool.org强健壮等价类测试强健壮等价类测试考虑了更多的无效值情况。强健壮等价类测试中的无效测试用例可以包含多个无效值,即含有多个缺陷假设。因为NextDate函数有三个变量,所以对应的强健壮等价类测试用例可以包含一个无效值,两个无效值或三个无效值。如表5-4所示。等价类划分法——以输入域划分等价类Page9制作者:制作者:aTool.org等价类划分法——以输入域划分等价类表5-4NextDate函数的强健壮等价类测试用例测试用例输入期望输出monthdayyearTestCase1-192007month不在1~12中TestCase29-12007day不在1~31中TestCase3991900year不在1912~2050中TestCase4-1-12007变量month、day无效变量year有效TestCase5-191900变量month、year无效变量day有效TestCase69-11900变量day、year无效变量month有效TestCase7-1-11900变量month、day、year无效Page10制作者:制作者:aTool.org(2)改进等价类划分测试NextDate函数在简单等价类划分测试NextDate函数中,没有考虑2月份的天数问题,也没有考虑闰年的问题,月份只包含了30天和31天两种情况。在改进等价类划分测试NextDate函数中,要考虑2月份天数的问题。关于每个月份的天数问题,可以详细划分为以下等价类:M1={month:month有30天}M2={month:month有31天,除去12月}M3={month:month是2月}M4={month:month是12月}D1={day:1≤day≤27}D2={day:day=28}D3={day:day=29}D4={day:day=30}D5={day:day=31}Y1={year:year是闰年}Y2={year:year不是闰年}等价类划分法——以输入域划分等价类Page11制作者:制作者:aTool.org等价类划分法——以输入域划分等价类改进等价类划分测试NextDate函数如表5-5所示。表5-5改进等价类划分法测试用例测试用例输入期望输出monthdayyearTestCase163020072007年7月1日TestCase283120072007年9月1日TestCase322720072007年2月28日TestCase422820072007年3月1日TestCase522920042000年3月1日(2004是闰年)TestCase6123120072008年1月1日TestCase79312007不可能的输入日期TestCase82292007不可能的输入日期TestCase92302007不可能的输入日期TestCase101592007变量month无效TestCase119352007变量day无效TestCase12992100变量year无效返回Page12制作者:制作者:aTool.org边界值分析法边界值分析法设计测试用例在NextDate函数中,规定了变量month、day、year的相应取值范围。在上面等价类法设计测试用例中已经提过,具体如下:M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}Page13制作者:制作者:aTool.org边界值分析法测试用例输入期望输出monthdayyearTestCase1-1152000month不在1~12中TestCase20152000month不在1~12中TestCase311520002000年1月16日TestCase421520002000年2月16日TestCase5111520002000年11月16日TestCase6121520002000年12月16日TestCase713152000month不在1~12中TestCase86-12000day不在1~31中TestCase9602000day不在1~31中TestCase106120002000年6月2日TestCase116220002000年6月3日TestCase1263020002000年7月1日TestCase136312000不可能的输入日期TestCase146322000day不在1~31中TestCase156151911year不在1912~2050中TestCase1661519121912年6月16日TestCase1761519131913年6月16日TestCase1861520492049年6月16日TestCase1961520502050年6月16日TestCase206152051year不在1912~2050中返回Page14制作者:制作者:aTool.org决策表法NextDate函数的决策表测试用例设计:NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,排除不可能的数据组合,很好地解决了定义域的依赖问题。NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下:变量day加1操作;变量day复位操作;变量month加1操作;变量month复位操作;变量year加1操作。Page15制作者:制作者:aTool.org决策表法根据上述动作桩发现NextDate函数的求解关键是日和月的问题,通常可以在下面等价类(条件桩)的基础上建立决策表:M1={month:month有30天}M2={month:month有31天,12月除外}M3={month:month是12月}M4={month:month是2月}D1={day:1≤day≤27}D2={day:day=28}D3={day:day=29}D4={day:day=30}D5={day:day=31}Y1={year:year是闰年}Y2={year:year不是闰年}Page16制作者:制作者:aTool.org决策表法输入变量间存在大量逻辑关系的NextDate函数决策表如表5-7所示。决策表共有22条规则:第1~5条规则解决有30天的月份;第6~10条规则解决有31天的月份(除12月份以外);第11~15条规则解决12月份;第16~22条规则解决2月份和闰年的问题。不可能规则也在决策表中列出,比如第5条规则中在有30天的月份中也考虑了31日。Page17制作者:制作者:aTool.org决策表法规则选项1234567891011条件:C1:month在M1M1M1M1M1M2M2M2M2M2M3C2:day在D1D2D3D4D5D1D2D3D4D5D1C3:year在-----------动作:A1:不可能√A2:day加1√√√√√√√√A3:day复位√√A4:month加1√√A5:month复位A6:year加1Page18制作者:制作者:aTool.org决策表法规则选项1213141516171819202122条件:C1:month在M3M3M3M3M4M4M4M4M4M4M4C2:day在D2D3D4D5D1D2D2D3D3D4D5C3:year在-----Y1Y2Y1Y2--动作:A1:不可能√√√A2:day加1√√√√√A3:day复位√√√A4:month加1√√A5:month复位√A6:year加1√Page19制作者:制作者: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加1√√√√√A3:day复位√√√√√A4:month加1√√√√A5:month复位√A6:year加1√Page20制作者:制作者:aTool.org决策表法根据简化的决策表5-7,可设计如表5-9所示的测试用例。表5-9NextDate函数的测试
本文标题:软件测试---NextDate函数---测试用例详解
链接地址:https://www.777doc.com/doc-3876151 .html