您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 基于规格说明的测试技术(软件动态测试)
辽宁工程技术大学上机实验报告课程名称软件测试与评估实验题目基于规格说明的测试技术院系软件学院专业软件工程班级软件13-9班姓名王朝晖学号1320010920实验日期2016.5.12实验目的1.了解软件动态测试的相关知识。2.能根据案例做出相应的图表。3.掌握软件动态测试的基本方法。4.针对案例,能够运用动态测试技术中的具体方法进行测试用例的设计。实验准备1.计算机一台,有c与c++程序设计学习与实验系统的软件。2.了解至少一门程序设计语言,并能熟练应用。能够编写并运行有关实验的相关代码。3.了解等价类划分与边界值分析的方法并能应用方法分析程序。4.了解因果图和决策表的方法并能应用方法分析程序。实验进度本次共有1个练习,完成1个。实验内容1.根据NextDate函数问题进行编程,有三个变量mouth(月份),day(日期),year(年)。函数的输出为输入日期后一天的日期。要求输入变量month,day和year均为整数值。并且满足下列条件:1≤month≤12,1≤day≤31,1912≤year≤2050。(此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。)2.对NextDate函数进行分析。3.选用基于规格说明的测试技术中适合的方法为NextDate函数问题设计测试用例。成绩2实验分析一.实验步骤1.打开c与c++程序设计学习与实验系统平台,编译有关NextDate函数问题的相关程序。2.对程序进行等价类测试。3.对程序进行边界值分析。4.对程序进行决策表测试。5.进行用例设计。选择上述设计中的一种方法进行测试用例,包括等价类、边界值、等价类边界值结合法、因果图和决策表法。给出预定输入和输出,以及实际输出结果。6.总结归纳。二.程序分析1.程序代码#includeiostreamusingnamespacestd;voidNextDate(intyear,intmonth,intday);voidmain(){intyear=0,month=0,day=0;NextDate(year,month,day);}voidNextDate(intyear,intmonth,intday){cout请输入年份:endl;cinyear;while(!(year=1912&&year=2050)){cout年份超过界限,请重新输入endl;cinyear;}cout请输入月份:endl;cinmonth;while(month12||month1){cout月份输入有误,请重新输入endl;cinmonth;}cout请输入日期:endl;cinday;while(day31||day1){cout日期输入有误,请重新输入endl;cinday;}while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&day==31){cout小月没有31号endl;cinday;}if((year%4==0&&year%100!=0)||(year%400==0))//检查闰年;{inti=0;i=day-29;while(month==2&&i0){cout本月是闰月,请在1-29之间从新输入日期endl;cinday;}if(month==2&&day==29){month=3;day=1;}elseday++;}elseday++;switch(month){case1:case3:case5:case7:case8:case10:if(day==32){month++;day=1;cout明天是:year'/'month'/'dayendl;}break;case2:if(day==29){month=3;day=1;cout明天是:year'/'month'/'dayendl;}break;case4:case6:case9:4case11:if(day==31){month++;day=1;cout明天是:year'/'month'/'dayendl;}break;case12:if(day==32){year++;month=1;day=1;cout明天是:year'/'month'/'dayendl;}break;}cout明天是:year'/'month'/'dayendl;}2.分析NextDate函数是输入日期,年,月份,函数根据输入的数据,输出输入日期后一天的日期。具体为如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。关于day的变量值:如果是1,3,5,7,8,10,12月份,day变量值为31;如果是4,6,9,11月份,day变量值为30;如果是闰年的2月,day变量值为29;如果是非闰年的2月,day变量值为28。三.等价类测试分析1.划分简单等价类(1)有效等价类:M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤month≤2050}(2)无效等价类M2={month:month1}M3={month:month12}D2={day:day1}D3={day:day31}Y2={year:year1912}Y3={year:month2050}(3)测试用例根据等价类得到等价类测试用例,如表1表1普通等价类测试用例测试用例输入期望输出monthdayyear15520002000年5月6日2052000month不在1~12中31352000month不在1~12中4502000day不在1~31中55322000day不在1~31中6551911year不在1912~2050中7552051year不在1912~2050中2.划分改进等价类在简单等价类划分测试NextDate函数中,没有考虑2月份的天数问题,也没有考虑闰年的问题,月份只包含了30天和31天两种情况。在改进等价类划分测试NextDate函数中,要考虑2月份天数的问题及闰年问题。(1)有效等价类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}6D5={day:day=31}Y1={year:year是闰年}Y2={year:year不是闰年}(2)无效等价类M5={month:month1}M6={month:month12}D6={day:day1}D7={day:day31}Y3={year:year1912}Y4={year:month2050}(3)测试用例根据等价类得到等价类测试用例,如表2。表2改进等价类测试用例测试用例输入期望输出monthdayyear143020092009年4月31日273120092009年8月1日322720092009年2月28日422820092009年3月1日522920002000年3月1日6123120092010年1月1日79312009不可能的输入日期82292009不可能的输入日期92302009不可能的输入日期101582009month不在1~12中116372007day不在1~31中12662100year不在1912~2050中四.边界值测试分析1.变量month、day、year的取值范围:M1={month:1≤month≤12}D1={day:1≤day≤31}Y1={year:1912≤year≤2050}2.测试用例利用输入变量的最小值、略大于最小值、正常值、略小于最大值和最大值来设计测试用例。如表3。表3边界值测试用例测试用例输入期望输出monthdayyear1-132000month不在1~12中2032000month不在1~12中311520002000年2月16日421520002000年2月16日5111520002000年11月16日6121520002000年12月16日713152000month不在1~12中86-12000day不在1~31中9602000day不在1~31中106120002000年6月2日116220002000年6月3日1263020002000年7月1日136312000不可能的输入日期146322000day不在1~31中156151911year不在1912~2050中1661519121912年6月16日1761519131913年6月16日1861520492049年6月16日1961520502050年6月16日206152051year不在1912~2050中8五.决策表测试分析决策表中的条件就是规格说明书中的输入条件,动作就是输出结果,而规则就是贯穿条件项和动作项的一列,一条规则要对应设计一个测试用例。1.动作桩a1:不可能;a2:day加1;a3:day复位;a4:month加1;a5:month复位;a6:year加12.条件桩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不是闰年}3.画出决策表,如表4。表4决策表规则选项1234567891011条件:C1:month在M1M1M1M1M1M2M2M2M2M2M3C2:day在D1D2D3D4D5D1D2D3D4D5D1C3:year在-----------动作:A1:不可能√A2:day加1√√√√√√√√A3:day复位√√A4:month加1√√A5:month复位A6:year加1规则选项1213141516171819202122条件:C1:month在M3M3M3M3M4M4M4M4M4M4M4C2:day在D2D3D4D5D1D2D2D3D3D4D5C3:year在-----Y1Y2Y1Y2--动作:A1:不可能√√√A2:day加1√√√√√A3:day复位√√√A4:month加1√√A5:month复位√A6:year加1√决策表共有22条规则:第1~5条规则解决有30天的月份;第6~10条规则解决有31天的月份(除12月份以外);第11~15条规则解决12月份;第16~22条规则解决2月份和闰年的问题。不可能规则也在决策表中列出,比如第5条规则中在有30天的月份中也考虑了31日。10通过以上的决策表得出简化的决策表,如表5。表5简化决策表规则选项12345678910111213141516171819202122条件:C1:month在M1M1M1M2M2M3M3M4M4M4M4M4M4C2:day在D1D2D3D4D5D1D2D3D4D5D1D2D3D4D5D1D2D2D3D3D4D5C3:year在--------Y1Y2Y1Y2-动作:A1:不可能√√√A2:day加1√√√√√A3:day复位√√√√√A4:month加1√√√√A5:month复位√A
本文标题:基于规格说明的测试技术(软件动态测试)
链接地址:https://www.777doc.com/doc-2537304 .html