《软件测试之功能性测试方法---决策表法.pdf》由会员分享,可在线阅读,更多相关《软件测试之功能性测试方法---决策表法.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试之功能性测试法-决策表法程序说明:前函数 Pre Date 是 NextDate的逆函数,即给定 个份、期、年,会返回前天的期。年的取值在1812年到2017年。的取值 在 1到 31 之间。的取值 在 1到 12 之间*分析步骤:*、决策表分析过程1、条件桩、动作桩输:YearMonthDay为获得前个期,PreDate函数需执的操作只有如下8种:day变量值减1day变量值复位为31day变量值复位为30day变量值复位为29day变量值复位为28month变量值减1month变量值复位为12year变量值减12、考虑规则个数M1:month:month有30天4,6,9,11,上
2、都是31天;M2:month:month有31天,1、3、8除外,5,7,10,12,上都是30天;M3:month:month是1;M4:month:month是2;M5:month:month是3;M6:month:month是8;D1:day:day=1;D2:day:2day28;D3:day:day=29;D4:day:day=30;D5:day:day=31;Y1:year:year是闰年;Y2:year:year不是闰年;3、填条件项和动作项说明:符号“-”表执的动作与该条件的取值关。4、化简,决策表如下、根据简化后的决策表,可设计测试例如下表所:输出例截图:三、实验总结1、通过
3、实践进决策表测试的般步骤:第步根据题意确定条件桩、动作桩;第步考虑规则个数,有n个条件的决策表有2n个规则(每个条件取真、假值);第三步列出所有的条件桩和动作桩,向决策表填条件项和动作项,得到初始决策表;第四步化简决策表,若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并;第五步设计测试例。2、求前天期不但要考虑到本的天数还要考虑到上个的天数,因为要判断输是否合法,所以我们把规则分析成D1:day:day=1;D2:day:2day28;D3:day:day=29;D4:day:day=30;D5:day:day=31,不是D1:day:day=1;D2:day
4、:2day31。另外尤其要区分平年与闰年。3、通过决策表能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏:利决策表能够设计出完整的测试例集合。运决策表设计测试例可以将条件理解为输,将动作理解为输出。对于份考虑规则的个数的时候,并所有的31天的份都在起,在M2中的份不但都是31天的份,且上个都是30天,所以8与M2不属于同个规则。对于规则的划分先根据题意来,然后再考虑所有情况,看到底如何设计以覆盖所有的输输出情况,这跟书本上求后天案例是不同的。四、源码import java.util.Scanner;public class PreDate public static void m
5、ain(String args)public static void main(String args)Scanner scancer=new Scanner(System.in);System.out.println(请输年-:);String s1=scancer.nextLine();String s2=s1.split(-);/将s1逗号分隔,放到s2数组中 int year=Integer.parseInt(s20);/将字符串变成整数 int month=Integer.parseInt(s21);int day=Integer.parseInt(s22);/int year=sc
6、ancer.nextInt();/int month=scancer.nextInt();/int day=scancer.nextInt();/输数据不合法 if(year2017|month12|day31)System.out.println(输的数据不符合设定);System.exit(0);/判断期是否符合现实 switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(day=1&day=31)break;else if(day31)System.out.println(输的数据不符合设定);System.e
7、xit(0);case 4:case 6:case 9:case 11:if(day=1&day=1&day=1&day=28)break;else System.out.println(输的数据不符合设定);System.exit(0);/计算输期的前个期/当年份发变化的情况 if(month=1&day=1)year=year-1;month=12;day=31;/份发变化的情况 else if(month!=1&day=1)switch(month)case 2:case 4:case 6:case 8:case 9:case 11:month=month-1;day=31;break;case 5:case 7:case 10:case 12:month=month-1;day=30;break;case 3:if(year%400=0)|(year%4=0&year%100!=0)month=month-1;day=29;else month=month-1;day=28;break;/只有期发变化的情况 else day=day-1;System.out.println(The PreDay is+year+-+month+-+day);
限制150内