资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,课题名称:,Page,20,制作者:,制作者:,主讲:黄老师,NextDate,函数的用例设计方法,授课班级:软件设计班,NextDate,函数的用例设计方法,黑盒测试,等价类划分法,边界值分析法,因果图法,决策表法,NextDate,函数包含三个变量:,month,(月份)、,day,(日期) 和,year,(年),函数的输出为输入日期后一天的日期。 例如,输入为,2007,年,9,月,9,日,则函数的输出为,2007,年,9,月,10,日 。要求输入变量,month,、,day,和,year,均为整数值,并且满足下列条件:,(,1,),1month12,(,2,),1day31,(,3,),1912year2050,此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量,year,和变量,month,取不同的值,对应的变量,day,会有不同的取值范围,,day,值的范围可能是,1,30,或,1,31,,也可能是,1,28,或,1,29,。,等价类划分法,以输入域划分等价类,(,1,)简单等价类划分测试,NextDate,函数,有效等价类,简单等价类划分测试,NextDate,函数可以划分以下三种有效等价类:,M1,month,:,1month12,D1,day,:,1day31,Y1,year,:,1912year2050,无效等价类,若条件 (,1,)(,3,)中任何一个条件无效,那么,NextDate,函数都会产生一个输出,指明相应的变量超出取值范围,例如,month,的值不在,1,12,范围当中。,等价类划分法,以输入域划分等价类,显然还存在着大量的,year,、,month,、,day,的无效组合,,NextDate,函数将这些组合统一输出为:“无效输入日期”。其无效等价类为:,M2,month,:,month12,D2,day,:,day31,Y2,year,:,year2050,等价类划分法,以输入域划分等价类,等价类划分法,以输入域划分等价类,一般等价类测试用例,如表,5-2,所示。,表,5-2 NextDate,函数的一般等价类测试用例,测试用例,输入,期望输出,month,day,year,Test Case 1,9,9,2007,2007,年,9,月,10,日,健壮等价类测试中包含弱健壮等价类测试和强健壮等价类测试。,弱健壮等价类测试,弱健壮等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱健壮等价类测试中的无效测试用例则只包含一个无效值,其他都是有效值,即含有单缺陷假设。如表,5-3,所示。,等价类划分法,以输入域划分等价类,表,5-3 NextDate,函数的弱健壮等价类测试用例,测试用例,输入,期望输出,month,day,year,Test Case 1,9,9,2007,2007,年,9,月,10,日,Test Case 2,0,9,2007,month,不在,1,12,中,Test Case 3,13,9,2007,month,不在,1,12,中,Test Case 4,9,0,2007,day,不在,1,31,中,Test Case 5,9,32,2007,day,不在,1,31,中,Test Case 6,9,9,1911,year,不在,1912,2050,中,Test Case 7,9,9,2051,year,不在,1912,2050,中,强健壮等价类测试,强健壮等价类测试考虑了更多的无效值情况。强健壮等价类测试中的无效测试用例可以包含多个无效值,即含有多个缺陷假设。因为,NextDate,函数有三个变量,所以对应的强健壮等价类测试用例可以包含一个无效值,两个无效值或三个无效值。,如表,5-4,所示。,等价类划分法,以输入域划分等价类,等价类划分法,以输入域划分等价类,表,5-4 NextDate,函数的强健壮等价类测试用例,测试用例,输入,期望输出,month,day,year,Test Case 1,-1,9,2007,month,不在,1,12,中,Test Case 2,9,-1,2007,day,不在,1,31,中,Test Case 3,9,9,1900,year,不在,1912,2050,中,Test Case 4,-1,-1,2007,变量,month,、,day,无效,变量,year,有效,Test Case 5,-1,9,1900,变量,month,、,year,无效,变量,day,有效,Test Case 6,9,-1,1900,变量,day,、,year,无效,变量,month,有效,Test Case 7,-1,-1,1900,变量,month,、,day,、,year,无效,(,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,:,1day27,D2,day,:,day,28,D3,day,:,day,29,D4,day,:,day,30,D5,day,:,day,31,Y1,year,:,year,是闰年,Y2,year,:,year,不是闰年,等价类划分法,以输入域划分等价类,等价类划分法,以输入域划分等价类,改进等价类划分测试,NextDate,函数如表,5-5,所示。,表,5-5,改进等价类划分法,测试用例,测试用例,输入,期望输出,month,day,year,Test Case 1,6,30,2007,2007,年,7,月,1,日,Test Case 2,8,31,2007,2007,年,9,月,1,日,Test Case 3,2,27,2007,2007,年,2,月,28,日,Test Case 4,2,28,2007,2007,年,3,月,1,日,Test Case 5,2,29,2004,2000,年,3,月,1,日(,2004,是闰年),Test Case 6,12,31,2007,2008,年,1,月,1,日,Test Case 7,9,31,2007,不可能的输入日期,Test Case 8,2,29,2007,不可能的输入日期,Test Case 9,2,30,2007,不可能的输入日期,Test Case 10,15,9,2007,变量,month,无效,Test Case 11,9,35,2007,变量,day,无效,Test Case 12,9,9,2100,变量,year,无效,返回,边界值分析法,边界值分析法设计测试用例,在,NextDate,函数中,规定了变量,month,、,day,、,year,的相应取值范围。在上面等价类法设计测试用例中已经提过,具体如下:,M1,month,:,1month12,D1,day,:,1day31,Y1,year,:,1912year2050,边界值分析法,测试用例,输入,期望输出,month,day,year,Test Case 1,-1,15,2000,month,不在,1,12,中,Test Case 2,0,15,2000,month,不在,1,12,中,Test Case 3,1,15,2000,2000,年,1,月,16,日,Test Case 4,2,15,2000,2000,年,2,月,16,日,Test Case 5,11,15,2000,2000,年,11,月,16,日,Test Case 6,12,15,2000,2000,年,12,月,16,日,Test Case 7,13,15,2000,month,不在,1,12,中,Test Case 8,6,-1,2000,day,不在,1,31,中,Test Case 9,6,0,2000,day,不在,1,31,中,Test Case 10,6,1,2000,2000,年,6,月,2,日,Test Case 11,6,2,2000,2000,年,6,月,3,日,Test Case 12,6,30,2000,2000,年,7,月,1,日,Test Case 13,6,31,2000,不可能的输入日期,Test Case 14,6,32,2000,day,不在,1,31,中,Test Case 15,6,15,1911,year,不在,1912,2050,中,Test Case 16,6,15,1912,1912,年,6,月,16,日,Test Case 17,6,15,1913,1913,年,6,月,16,日,Test Case 18,6,15,2049,2049,年,6,月,16,日,Test Case 19,6,15,2050,2050,年,6,月,16,日,Test Case 20,6,15,2051,year,不在,1912,2050,中,返回,决策表法,NextDate,函数的决策表测试用例设计:,NextDate,函数中包含了定义域各个变量之间的依赖问题。等价类划分法和边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,排除不可能的数据组合,很好地解决了定义域的依赖问题。,NextDate,函数求解给定某个日期的下一个日期的可能操作(动作桩)如下:,变量,day,加,1,操作;,变量,day,复位操作;,变量,month,加,1,操作;,变量,month,复位操作;,变量,year,加,1,操作。,决策表法,根据上述动作桩发现,NextDate,函数的求解关键是日和月的问题,通常可以在下面等价类(条件桩)的基础上建立决策表:,M1,month,:,month,有,30,天,M2,month,:,month,有,31,天,,12,月除外,M3,month,:,month,是,12,月,M4,month,:,month,是,2,月,D1,day,:,1day27,D2,day,:,day,28,D3,day,:,day,29,D4,day,:,day,30,D5,day,:,day,31,Y1,year,:,year,是闰年,Y2,year,:,year,不是闰年,决策表法,输入变量间存在大量逻辑关系的,NextDate,函数决策表如表,5-7,所示。,决策表共有,22,条规则:,第,15,条规则解决有,30,天的月份;,第,610,条规则解决有,31,天的月份(除,12,月份以外);,第,1115,条规则解决,12,月份;,第,1622,条规则解决,2,月份和闰年的问题。,不可能规则也在决策表中列出,比如第,5,条规则中在有,30,天的月份中也考虑了,31,日。,决策表法,规则,选项,1,2,3,4,5,6,7,8,9,10,11,条件:,C1: month,在,M1,M1,M1,M1,M1,M2,M2,M2,M2,M2,M3,C2: day,在,D1,D2,D3,D4,D5,D1,D2,D3,D4,D5,D1,C3: year,在,动作:,A1:,不可能,A2: day,加,1,A3: day,复位,A4: month,加,1,A5: month,复位,A6,:,year,加,1,决策表法,规则,选项,12,13,14,15,16,17,18,19,20,21,22,条件:,C1: month,在,M3,M3,M3,M3,M4,M4,M4,M4,M4,M4,M4,C2: day,在,D2,D3,D4,D5,D1,D2,D2,D3,D3,D4,D5,C3: year,在,Y1,Y2,Y1,Y2,动作:,A1:,不可能,A2: day,加,1,A3: day,复位,A4: month,加,1,A5: month,复位,A6,:,year,加,1,决策表法,表,5-8,简化的,NextDate,函数决策表,选项,规则,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,条件:,C1: month,在,M1,M1,M1,M2,M2,M3,M3,M4,M4,M4,M4,M4,M4,C2: day,在,D1,D2,D3,D4,D5,D1,D2,D3,D4,D5,D1,D2,D3,D4,D5,D1,D2,D2,D3,D3,D4,D5,C3: year,在,Y1,Y2,Y1,Y2,动作:,A1:,不可能,A2: day,加,1,A3: day,复位,A4: month,加,1,A5: month,复位,A6,:,year,加,1,决策表法,根据简化的决策表,5-7,,可设计如表,5-9,所示的测试用例。,表,5-9 NextDate,函数的测试用例组,测试用例,month,day,year,预期输出,Test Case 13,6,15,2007,2007,年,6,月,16,日,Test Case 4,6,30,2007,2007,年,7,月,1,日,Test Case 5,6,31,2007,不可能的输入日期,Test Case 69,1,15,2007,2007,年,1,月,16,日,Test Case 10,1,31,2007,2007,年,2,月,1,日,Test Case 1114,12,15,2007,2007,年,12,月,16,日,Test Case 15,12,31,2007,2008,年,1,月,1,日,Test Case 16,2,15,2007,2007,年,2,月,16,日,Test Case 17,2,28,2000,2000,年,2,月,29,日,Test Case 18,2,28,2007,2007,年,3,月,1,日,Test Case 19,2,29,2000,2000,年,3,月,1,日,Test Case 20,2,29,2007,不可能的输入日期,Test Case 21,,,22,2,30,2007,不可能的输入日期,返回,
展开阅读全文