NEXTDATE的决策表示例(软件测试技术实验报告)
- 格式:docx
- 大小:82.66 KB
- 文档页数:7
NextDate函数测试用例1.测试程序源代码#include\#includeuingnamepacetd;voidNe某tDate(intyear,intmonth,intday);voidmain(){intyear=0,month=0,day= 0;Ne某tDate(year,month,day);}voidNe某tDate(intyear,intmonth,intday){cout<>year;while(!(year>=1911&&ye ar<=2022)){cout<>year;}cout<>month;while(month>12||month<1){ }cout<>month;cout<>day;while(day>31||day<1){cout<>day;}inti=0;i=day-29;while(month==2&&i>0){cout<>day;}if(month==2&&day==29){month=3;day=1;}eleday++;} eleday++;//月底计算;witch(month){cae1:cae3:cae5:cae7:cae8:cae10:if(day==32){month++; day=1;cout<if(day==31){month++;day=1;cout<cout<break;cout<白盒测试1开始2输入年、月、日43日期是否合法?无效日期5闰年的2月29日或者非闰年的2月28日6明天为3月1日87大月的31号或者小月的30号下个月是否大于129下个月1号1011日期加11月1号12结束DD-路径情况1.由一个节点组成,内度=0情况2.由一个节点组成,外度=0情况3.由一个节点组成,内度>=2或外度>=2情况4.由一个节点组成,内度=1并且外度=1情况5.长度>=1的最大链情况2:节点6、节点9、节点10情况3:节点2、节点3、节点5、节点7、节点8情况4:节点4、节点11白盒测试对每条DD-路径测试用例用例说明输入正确的年、月、日输入错误的年、月、日输入错误的年、月、日输入错误的年、月、日输入闰年2月29日输入非闰年2月28日输入大月31日输入小月30日输入12月31日输入数据预期结果实际结果2022年6月15日2022年6月16日2022年6月16日2501年6月15日日期输入有误输入有误,重新输入2022年6月33日日期输入有误输入有误,重新输入2022年13月15日日期输入有误输入有误,重新输入2000年2月29日2000年3月1日2000年3月1日2001年2月28日2001年3月1日2001年3月31日2001年4月1日2001年4月30日2001年5月1日2004年12月31日2005年1月1日2001年3月1日2001年4月1日2001年5月1日2005年1月1日。
软件测试实验报告题目名称:计算下一天时间测试一、实验综述1、实验目的及要求实验目的:掌握等价类测试方法的原理及使用。
实验要求:(1)完成各个程序的编写(2)按要求设计测试用例,并运行测试用例检查程序的正确与否实验内容:对日期操作函数进行等价类测试方法的测试用例设计及测试结果记录与分析。
2、实验仪器、设备或软件1. 个人计算机PC;2. VisualC++/.NET编程环境。
二、实验过程(实验步骤、记录、数据、分析)1.程序有三个变量(月份、日期、和年)的函数,函数返回输入日期后面的那个日期。
变量都具有整数值,且满足以下条件:C1 1<=月份<=12C2 1<=日期<=31确定等价类M1={月份:每月有30天}M2={月份:每月有31天}M3={月份:此月是2月}D1={日期:1<=日期<=28}D2={日期:日期=29}D3={日期:日期=30}D4={日期:日期=31}Y1={年:年是闰年}Y2={年:年是平年}一般等价类测试用例应该有3个(月份类)x 4个(日期类)x 2(年类)= 24个测试用例mouth day year预期输出实际输出1 2 3 6661515151911191219131911.6.161912.6.161913.6.161911.6.161912.6.161913.6.164 5 6 7 66661515151719752049205020511975.6.162049.6.162050.6.162051.6.181975.6.162049.6.162050.6.162051.6.188 910111213 666666-112303132191219121912191219121912day超出[1…31]1912.6.21912.6.31912.7.1输入日期超界day超出[1…31]Error input1912.6.21912.6.31912.7.1Error inputError input141516171819 -112111213151515151515191219121912191219121912Mouth超出[1…12]1912.1.161912.2.161912.11.161912.12.16Mouth超出[1…12]Error input1912.1.161912.2.161912.11.161912.12.16Error input20212223 22222728293020002000200020002000.2.282000.2.292000.3.1Day超出2000.2.282000.2.292000.3.1Error input242526 2222728302001200120012001.2.282001.3.1Day超出2001.2.272001.2.28Error input通过分析前两个测试用例表,就会发现这些测试用例是不充分的,而且存在冗余。
N e x t D a t e函数黑盒测试设计测试用例(总4页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验一 NextDate函数一、实验目的使用合适的黑盒测试的测试用例设计方法为NextDate函数设计测试用例。
二、实验准备掌握软件测试的内容,熟悉了解常用的黑盒测试的测试用例设计方法,明确不同方法的区别,上网查找其他软件测试的方法。
三、实验性质本实验为设计性实验。
四、实验内容根据实验的目的和我所掌握的黑盒测试的测试用例设计方法,最后我选择用决策表测试法完成了对NextDate函数测试用例的设计。
设计如下:(1)month、day、year的有效等价类:M1:{month:month有30天}M2:{month:month有31天,12月除外}M3:{month:month是12月}M4:{month:month是2月}D1:{day:1≤da y≤27}D2:{day:day=28}D3:{day:day=29}D4:{day:day=30}D5:{day:day=31}Y1:{year:year是闰年} Y2:{year:year不是闰年}(2)根据各种有效的输入情况,程序中可能采取的操作有以下六种:a1:不可能 a2:day加1 a3:day复位a4:month加1 a5:month复位 a6:year加1(3)NextDate函数的决策表表4-1 NextDate函数的决策表(4)简化后的NextDate函数的决策表表4-2简化后的NextDate函数的决策表(5)根据简化后的决策表设计的测试用例表4-3测试用例表。
NextDate函数测试用例选择NextDate函数,是因为它可以说明输入定义域中的依赖性问题,这使得这个例子成为基于决策表测试的一个完美例子,因为决策表可以突出这种依赖关系。
从前面对等价类测试的分析我们知道,等价类分析假设所有的变量都是独立的。
如果变量确实是独立的,则使用类的笛卡尔积是有意义的。
如果变量之间在输入定义域中存在逻辑依赖关系,则这些依赖关系在笛卡尔积中就会丢失(说抑制可能更确切)。
决策表格式通过使用“不可能动作”概念表示条件的不可能组合,使我们能够强调这种依赖关系。
下面将对NextDate函数的决策表描述做三次尝试。
第一次尝试标识合适的条件和动作,假设首先从分析等价类集合开始。
M1= {月份:每月有30天};M2 = {月份:每月有31天};M3二{月份:此月是2月}D1 = {日期:1<0期W 28}; D2 = {日期:日期=29}; D3 = {日期=30}; D4 = {日期=31}Y1 = {年:年是闰年}; Y2 = {年:年不是闰年}如果我们希望突出不可能的组合,则可以建立具有以下条件和动作的有限项决策表。
(请注意,年变量对应的等价类收缩为下表的一个条件。
)有2处条规则的第一袂尝试这个决策表会有256条规则,其中很多是不可能的。
如果要显示为什么这些规则是不可能的,可将动作修改为:al:月份中的天数太多;a2:不能出现在非闰年中;a3:计算NextDate.第二次尝试如果我们将注意力集中到NextDate函数的闰年问题上,则可以修改已有的等价类集合。
为了说明另一种决策表表示方法,这一次采用扩展项决策表开发,并更仔细地研究动作桩。
在构建扩展项决策表时,必须保证等价类构成输入定义域的真划分。
如果规则项之间存在“重叠”,则会存在冗余情况,使得多个规则都能够满足。
这里,Y2是一组1812〜2012之间的年份,并除以4, 2000除外。
M1= {月份:每月有30天}; M2 = {月份:每月有31天}; M3二{月份:此月是2月}D1 = {日期:1<0期W 28}; D2 = {日期:日期=29}; D3 = {日期=30}; D4 = {日期=31}Y1 = {年:年=2000}; Y2 = {年:年是闰年}; Y3 = {年:年是平年}从某种意义上说,我们采用的是“灰盒”技术,因为更仔细地研究了NextDate 函数。
软件测试实验报告二一、实验目的掌握边界值、等价类和决策表测试的基本方法二、实验内容对于nextdate函数设计决策表测试用例程序三、概要设计1、对于nextdate函数设计决策表测试用例程序设计如下的等价类:M1={月份:每月有30天} M2={月份:每月有31天,12月除外}M3={月份:此月是12月} M4={月份:此月是2月}D1={日期:1≤日期≤27} D2={日期:日期=28}D3={日期:日期=29} D4={日期:日期=30}D5={日期:日期=30} Y1={年:年是闰年} Y2={年:年不是闰年}四、详细设计1、对于nextdate函数设计决策表测试用例程序设计如下的决策表测试用例:五、程序调试六、实验总结通过这次实验,让我掌握边界值、等价类和决策表测试的基本方法。
七、附录DATE.C#include<stdio.h>#include<stdlib.h>void main(){int tomorrowDay,tomorrowMonth,tomorrowYear,day,month,year;//设置程序需要的变量printf("Please input today's date is from MM DD YYYY...\n");scanf("%d %d %d",&month,&day,&year);switch(month){//通过switch来选择不同的月份下的情况case 1:case 3:case 5:case 7:case 8:case 10://上面的月份都是31天的,下面代码实现31天情况下的月份if(day<31){tomorrowDay=day+1;tomorrowMonth=month;tomorrowYear=year;}else{tomorrowDay=1;tomorrowMonth=month+1;tomorrowYear=year;}break;case 4:case 6:case 9:case 11://上面的月份都是30天的,下面代码实现30天情况下的月份if(day<30){tomorrowDay=day+1;tomorrowMonth=month;tomorrowYear=year;}else{tomorrowDay=1;tomorrowMonth=month+1;tomorrowYear=year;}break;case 12://由于12月一过,年份要加一,故单独把12月拿出if(day<31){tomorrowDay=day+1;tomorrowMonth=month;tomorrowYear=year;}else{tomorrowDay=1;tomorrowMonth=1;if(year==2012){printf("The 2012 is over!\n");exit(0);}elsetomorrowYear=year+1;}break;case 2://根据是否闰年来判断二月的天数,故把二月单独拿出来 if(day<28){tomorrowDay=day+1;tomorrowMonth=month+1;tomorrowYear=year+1;}else if(day==28){if((year/4==0 && year/100!=0) || year/400==0){ tomorrowDay=29;tomorrowMonth=month;tomorrowYear=year;}else{tomorrowDay=1;tomorrowMonth=3;tomorrowYear=year;}}else if(day==29){tomorrowDay=1;tomorrowMonth=3;tomorrowYear=year;}elseprintf("Feb can not have %d day\n",day);}printf("Tomorrow's date is %d %d %d\n",tomorrowMonth,tomorrowDay,tomorrowYear);}。
NextDate软件项目系统测试报告2016/04/04目录1.引言 (2)2.测试参考文档 (2)3.测试设计简介 (2)3.1测试用例设计 (2)3.1.1黑盒测试用例 (2)3.1.2白盒测试用例 (2)3.2测试环境与配置 (2)3.3测试方法 (3)4.测试情况 (3)4.1测试执行情况 (3)4.1.1缺陷汇总和分析 (5)4.1.2缺陷汇总和分析 (6)4.2测试覆盖 (8)4.3缺陷的统计 (8)4.3.1缺陷汇总和分析 (8)4.3.2具体的测试缺陷 (8)5.测试结论和建议 (8)5.1结论 (8)1.引言本测试报告为COMMISION计算系统的测试报告,目的在于总结测试阶段的测试以及分析测试结果,检验系统是否符合需求,预期读者为项目布置者。
主要通过软件测试技术测试系统是否可行,大致包括以下几个方面:1.提交组件数量信息的时候,是否能够将信息存入以备日后查用2.输入信息有误时候,能否提示错误3.当信息修改后看修改后的信息能不能被系统接受并保存到数据库4.查询信息时候,能不能准确查找信息5.业务逻辑是否正确,且能产生无误的输出报告2.测试参考文档暂无3.测试设计简介3.1 测试用例设计3.1.1黑盒测试用例黑盒测试中主要采用如下几种测试用例的设计方法设计测试用例,基本可以满足系统测试需要:(1)边界值测试用例(2)特殊值测试用例(3)等价类测试用例(4)消极测试用例3.1.2白盒测试用例白盒测试中主要采用如下几种测试用例的设计方法设计测试用例,基本可以满足系统测试需要,并覆盖程序所有路径:(1)基本路径测试(2)自下而上测试3.2测试环境与配置测试环境:客户端:web浏览器(chrome 49.0.2623.110 m)操作系统:windows73.3测试方法本次测试采用白盒测试方法,对系统后台业务逻辑和数据库操作部分进行单元测试;采用黑盒测试方法对系统整体功能进行测试。
其中单元测试工具是jasmine。
软件测试实验报告题目:决策表法的使用学号::教师:东南大学成贤学院电子与计算机工程学院2017年 9 月30 日实验题目1、实验容NextDate 函数包含三个变量:month(月份)、day(日期)和 year(年),函数的输出为输入日期前一天的日期。
例如,输入为 2007年9月 9日,则函数的输出为 2007年9月10日。
要求输入变量 month 、 day 和 year 均为整数值,并且满足下列条件:(1)1≤month≤12(2)1≤day≤31(3)1912≤year≤20502、实验目的与要求分别输入测试用例,判断期望输出与实际输出是否相等3、实验环境操作系统 WIN10测试工具 VS2010测试语言 c++语言4、设计思路分析(包括需求分析、整体设计思路、概要设计)需求分析:此函数的主要特点是输入变量之间的逻辑关系比较复杂。
复杂性的来源有两个:一个是输入域的复杂性,另一个是指闰年的规则。
例如变量year和变量month取不同的值,对应的变量day会有不同的取值围,day值的围可能是1~30或1~31,也可能是1~28或1~29。
整体设计思路:NextDate函数中包含了定义域各个变量之间的依赖问题。
等价类划分法和边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的依赖关系。
决策表法则是根据变量间的逻辑依赖关系设计测试输入数据,排除不可能的数据组合,很好地解决了定义域的依赖问题。
5、详细设计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: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不是闰年}决策表共有22条规则:第1~5条规则解决有30天的月份;第6~10条规则解决有31天的月份(除12月份以外);第11~15条规则解决12月份;第16~22条规则解决2月份和闰年的问题。
NextDate函数测试用例
选择NextDate函数,是因为它可以说明输入定义域中的依赖性问题,这使得这个例子成为基于决策表测试的一个完美例子,因为决策表可以突出这种依赖关系。
从前面对等价类测试的分析我们知道,等价类分析假设所有的变量都是独立的。
如果变量确实是独立的,则使用类的笛卡尔积是有意义的。
如果变量之间在输入定义域中存在逻辑依赖关系,则这些依赖关系在笛卡尔积中就会丢失(说抑制可能更确切)。
决策表格式通过使用“不可能动作”概念表示条件的不可能组合,使我们能够强调这种依赖关系。
下面将对NextDate函数的决策表描述
做三次尝试。
第一次尝试
标识合适的条件和动作,假设首先从分析等价类集合开始。
M1= {月份:每月有30天};M2 = {月份:每月有31天};M3二{月份:此月是2月}
D1 = {日期:1<0期W 28}; D2 = {日期:日期=29}; D3 = {日期=30}; D4 = {日期=31}
Y1 = {年:年是闰年}; Y2 = {年:年不是闰年}
如果我们希望突出不可能的组合,则可以建立具有以下条件和动作的有限项决策表。
(请注意,年变量对应的等价类收缩为下表的一个条件。
)
有2处条规则的第一袂尝试
这个决策表会有256条规则,其中很多是不可能的。
如果要显示为什
么这些规则是不可能的,可将动作修改为:
al:月份中的天数太多;a2:不能出现在非闰年中;a3:计算NextDate.
第二次尝试
如果我们将注意力集中到NextDate函数的闰年问题上,则可以修改已有的等价类集合。
为了说明另一种决策表表示方法,这一次采用扩展项决策表开发,并更仔细地研究动作桩。
在构建扩展项决策表时,必须保证等价类构成输入定义域的真划分。
如果规则项之间存在“重叠”,则会存在冗余情况,使得多个规则都能够满足。
这里,Y2是
一组1812〜2012之间的年份,并除以4, 2000除外。
M1= {月份:每月有30天}; M2 = {月份:每月有31天}; M3二{月
份:此月是2月}
D1 = {日期:1<0期W 28}; D2 = {日期:日期=29}; D3 = {日期
=30}; D4 = {日期=31}
Y1 = {年:年=2000}; Y2 = {年:年是闰年}; Y3 = {年:年是平年}
从某种意义上说,我们采用的是“灰盒”技术,因为更仔细地研究了NextDate 函数。
为了产生给定日期的NextDate,能够使用的操作只有五种:日期和月份的增1和复位,年的增1。
(我们不允许通过复位年来回退时间。
)
这些条件可以产生有对应等价类笛卡尔积的36个规则的决策表(自
己可以分析一下)。
结合不关心项,可得到下表所示的17条规则的决策表。
仍然存在逻辑不可能的规则,但是这个表有助于我们标识测试用例的扩展输出。
如果填满这个决策表的动作项,就会发现12月有
一些麻烦的问题(规则8)。
我们下面解决这些问题。
第三次尝试通过引入等价类的第三个集合,可以澄清年末问题。
这一次可以特别关注日和月,并重新使用第一次尝试的较简单的闰年或非闰年条件,因此2000年没有特别处理。
(还可以做第四次尝试,采用第二次尝试的年等价类。
)
M1 = {月份:每月有30天};M2 = {月份:每月有31天,12月除外};M3 = {月份:此月是12月};M4 = {月份:此月是2月}
D1 = {日期:1<0期W 27}; D2 = {日期:日期=28}; D3 = {日期=29}; D4 = {日期=30}; D5 = {日期=31}
Y1 = {年:年是闰年}; Y2 = {年:年不是闰年}
这个等价类的笛卡尔积包含40个元素。
所产生的组合规则包含不关心项,如下表所示,可与第二次的36条规则比较。
大的测试用例集合是否一定比小的测试用例集合好这里我们有一个22条规则的决策
表,得到的NextDate函数的描述比包含36条规则的决策表更清晰。
前5条规则处理有30天的月份,请注意,这里不考虑闰年。
接下来两组规则(规则6〜10,规则11〜15)处理有31天的月份,前5条规则处理12月之外的月份,后5条规则处理12月。
不可能规则也在决策表中列出,尽管存在一些高效测试人员可能会有疑问的冗余。
10
条规则中的8条只是对日期增1。
针对这个子功能是否真的需要8条
单独的测试用例,可能不需要,但是请注意我们可以通过决策表得到的启发。
最后7条规则关注的是2月和闰年。
上表所示的决策表是NextDate函数源代码的基础。
这个例子从另一个方面说明测试如何
能够很好地改进程序设计。
所有决策表分析都应
该在NextDate函数的详细设计期间完成。
我们可以使用决策表代数进一步化简这22个测试用例。
如果决策表
中两个规则的动作集合相同,则一定至少有一个条件能够把两条规则用不关心条目合并。
这正体现出决策表等价于用于标识等价类的“相同处理”方针。
在某种意义上,我们就是在标识规则的等价类。
例如,规则1、2和3涉及有30天的月份日期类D1、D2和D3o类似地,有31天的月份的日期类D1、D2 D3和D4也可以合并,2月的D4和D5 也可以合并。
所得到的结果如下表所示:
相应的测试用例如下表所示:
NedDate函数朗決策表测试用例
总结
与其他测试技术一样,基于决策表的测试对于某些应用程序(例如
NextDate函数)很有效,但是对另外一些应用程序就不值得费这么大的事。
毫不奇怪,基于决策表所适用的情况都是要发生大量决策(例
如三角形问题),以及在输入变量之间存在重要的逻辑关系的情况(例
如NextDate 函数)。