满意答案
qq183285586
2013.03.14
采纳率:50% 等级:12
已帮助:11519人
NextDate函数的决策表测试用例设计
问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。
说明:当决策表规模(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。
为了获得下一个日期,NextDate函数执行如下操作:
如果输入日期不是当月最后一天,则把day变量的值加1;
如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;
如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。
关于最后一天的判断:
如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;
如果是有30天的月份(4,6,9,11), day变量值为30;
如果是有29天的月份(闰年的2月),day变量值为29;
如果是有28天的月份(非闰年的2月),day变量值为28。
根据所执行的操作,可列出NextDate函数的动作桩:
a1: 不可能;a2: day加1;a3: day复位;a4: month加1;a5: month复位;a6: year加1
考虑到决策表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立决策表:
对于month变量的取值
M1: {mouth: mouth有30天};M2: {mouth:mouth有31天,12月除外};
M3: {mouth:mouth有12月}; M4: {mouth:mouth是2月};
对于day变量的取值
D1:{day:1≤day≤27};D2: {day:day=28};
D3: {day:day=29}; D4: {day:day=30}; D5: {day:day=31};
对于year变量的取值
Y1:{year:year是闰年};Y2: {year:year不是闰年}
month变量的有效等价类:
M1: {month=4,6,9,11} M2: {month=1,3,5,7,8,10}
M3: {month=12} M4: {month=2}
day变量的有效等价类:
D1: {1≤day≤27} D2:{day=28} D3:day=29} D4:{day=30} D5: {day=31}
year变量的有效等价类:
Y1: {year是闰年} Y2: {year不是闰年}
考虑各种有效的输入情况,程序中可能采取的操作有以下六种:
a1: day+2 a2: day=2 a3: day=1
a4: month+1 a5: month=1 a6: year+1
20分享举报