1、软件测试 决策表-本页仅作为预览文档封面,使用时请删除本页-软件测试 决策表(共11页)软件测试实验报告 题目: 决策表法的使用 学号: 姓名: 教师: 东南大学成贤学院电子与计算机工程学院2017年 9 月30 日方案30%设计30%文字表述20%分析与总结20%总分实验题目1、实验内容NextDate 函数包含三个变量:month(月份)、day(日期) 和 year(年),函数的输出为输入日期前一天的日期。 例如,输入为 2007年9月 9日,则函数的输出为 2007年9月10日 。要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:(1)1month12(
2、2)1day31(3)1912year20502、实验目的与要求分别输入测试用例,判断期望输出与实际输出是否相等3、实验环境操作系统 WIN10测试工具 VS2010测试语言 c+语言4、设计思路分析(包括需求分析、整体设计思路、概要设计)需求分析:此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。例如变量year和变量month取不同的值,对应的变量day会有不同的取值范围,day值的范围可能是130或131,也可能是128或129。整体设计思路:NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和边界值分析
3、法只能“独立地”选取各个输入值,不能体现出多个变量的依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,排除不可能的数据组合,很好地解决了定义域的依赖问题。5、详细设计NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下:变量day加1操作;变量day复位操作;变量month加1操作;变量month复位操作;变量year加1操作。根据上述动作桩发现NextDate函数的求解关键是日和月的问题,通常可以在下面等价类(条件桩)的基础上建立决策表:M1month:month有30天 M2month:month有31天,12月除外M3month:month是12月M4m
4、onth:month是2月D1day:1day27D2day:day28D3day:day29D4day:day30D5day:day31Y1year:year是闰年Y2year:year不是闰年决策表共有22条规则:第15条规则解决有30天的月份;第610条规则解决有31天的月份(除12月份以外);第1115条规则解决12月份;第1622条规则解决2月份和闰年的问题。不可能规则也在决策表中列出,比如第5条规则中在有30天的月份中也考虑了31日。表1 输入变量间存在大量逻辑关系的NextDate函数决策表规则选项1234567891011条件:C1:month在M1M1M1M1M1M2M2M2
5、M2M2M3C2:day在D1D2D3D4D5D1D2D3D4D5D1C3:year在动作:A1:不可能A2:day加1A3:day复位A4:month加1A5:month复位规则选项1213141516171819202122条件:C1:month在M3M3M3M3M4M4M4M4M4M4M4C2:day在D2D3D4D5D1D2D2D3D3D4D5C3:year在Y1Y2Y1Y2动作:A1:不可能A2:day加1A3:day复位A4:month加1A5:month复位A6:year加1表2 简化的NextDate函数决策表:选项规则1,2,3456,7,8,91011,12,13,1415
6、161718192021,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复位A6:year加16、实验结果与分析表3 NextDate函数的测试用例组测试用例 MonthDayYear预期输出实际输出Test case 1-351520152015年5月16日Test case 453020152015年5月31日Test c
7、ase 553120152015年6月1日Test case 6-941520152015年4月16日Test case 1043120152015年5月1日Test case11-14121520152015年12月16日Test case 15123120152016年1月1日Test case 1621520152015年2月16日Test case 1722820162016年2月29日Test case 1822820152015年3月1日Test case 1922920162016年3月1日Test case 202292015不可能!Testcase 21-222302015不
8、可能!7、实验体会与建议程序的实际输出结果与预期结果不符合,但基本满足实验问题需求,基于决策表的测试对于某些应用程序(例如NextDate函数)很有效,但是对另外一些简单的应用程序就不值得使用决策表了。附录代码#include bool NextDate(int i,int j,int k) if(i=1960&i=1&j=1&k=1&k=27) k+; else switch(k) case 31: if(j=1|j=3|j=5|j=7|j=8|j=10) k=1; j+; else if(j=12) k=1; j=1; i+; else return false; break; case
9、30: if(j=4|j=6|j=9|j=11) k=1; j+; else if(j=2) return false; else k+; break; case 29: if(j=2&(i%4=0&i%100!=0)|i%400=0) k=1; j+; else if(j!=2) k+; else return false; break; case 28: if(j=2&(i%4=0&i%100!=0)|i%400=0) k+; else if(j!=2) k+; else k=1; j+; break; else return false; couti/j/kendl;int main() int day,month,year; while(1) cout请输入年、月、日:yearmonthday; NextDate(year,month,day); if(NextDate(year,month,day)=false) cout不可能!endl; system(pause); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1