软件测试---NextDate函数---测试用例详解

合集下载

计算机三级考试软件测试技术编程题

计算机三级考试软件测试技术编程题

计算机三级考试软件测试技术编程题计算机三级考试软件测试技术编程题计算机三级考试软件测试技术编程题1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。

例如,输入为2023年8月8日,那么该程序的输出为2023年8月 10日。

NextDate函数包含三个整数变量month、day和year,并且满足以下条件:1≤month≤12、1≤day≤31和2000≤year≤2100。

分析^p 各种输入情况,列出为输入变量month、day、year划分的有效等价类:编程实现:〔1〕对每一个有效等价类,至少设计一个测试用例。

输入格式:输入〔yyyymmdd〕:输出格式:输出〔yyyy-mm-dd〕:覆盖等价类〔ID类型〕:闰年〔Y/N〕:例如:输入〔yyyymmdd〕20230105↙〔回车〕输出〔yyyy-mm-dd〕:2023-01-07覆盖等价类〔ID类型〕:1,8,11闰年〔Y/N〕:N〔2〕对每一个无效的month、day和year,分别输入一个无效等价类。

例如:输入〔yyyymmdd〕20231305↙〔回车〕输出〔yyyy-mm-dd〕:无效月份覆盖等价类〔ID类型〕:闰年〔Y/N〕:2、阅读下面的.一段程序:void Test1(int N,intI)1 {2int x=0;3int y=0;4while(N--》0)5{6if(I==0)7 x=y+2;8 else9 if(I==1)10 y=y+10;11 else12 x=y+20;13}//while14 }//Test1根据所给定的程序,确定该程序的独立途径如下:途径1:4→14途径2:4→6→7→14途径3:4→6→9→10→4→14途径4:4→6→9→12→4→14编程实现:对每一个独立途径,设计一个测试用例,并插入一条显示输出语句〔printf/cout〕,显示测试途径标号。

输入格式:输入〔N,I〕:输出格式:输出〔x,y〕:x= y=途径ID:例如:输入〔N,I〕:1,2↙〔回车〕输出〔x,y〕:x=20 y=0途径ID:测试途径4。

软件测试NextDate函数决策表测试法实验报告

软件测试NextDate函数决策表测试法实验报告

一、实验目的:掌握黑盒测试中的决策表测试法,并对被测程序设计测试用例。

二、实验环境操作系统:Windows XP + SP2 /win7三、实验内容1、编写一个NextDate函数。

2、掌握黑盒测试中的决策表测试法的基本步骤。

3、使用决策表法设计测试用例,对编写的函数实施测试,总结分析测试结果。

四、实验步骤1、编写一个NextDate函数。

(C语言、C++)2、根据黑盒测试的决策表测试法设计测试用例。

3、根据测试用例实施测试,并记录测试结果。

五、实验代码#include <iostream>using namespace std;int a,b,c,y,m,d;<<"/n";return 1;}elsereturn a;}<<b<<"."<<c<<"\n"<<"\n";return 0;}}<<"\n";cout << "年份范围是1960-2060"<<"\n";cout<<"年"<<"\n";cin >>y;cout<<"月"<<"\n";cin>>m;cout<<"日"<<"\n";cin>>d;a=y;b=m;c=d;NextDate ( y, m, d);}return 0;}六、测试用例表NxetDate函数求解给定某个日期的下一个日期的动作桩如下:变量day加1操作;变量day复位操作;变量month加1操作;变量month复位操作;变量year加1操作NxetDate函数的求解关键是日和月的问题,所以可以在下面的条件桩的基础上建立决策表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不是闰年}NxetDate函数决策表NxetDate函数的测试用例组七、测试用例执行结果1、Test Case 1~32、Test Case 43、Test Case 54、Test Case 6~95、Test Case 106、Test Case 11~147、Test Case 158、Test Case 169、Test Case 1710、Test Case 1811、Test Case 1912、Test Case 2013、Test Case 21~22八、实验总结1、通过本次实验,学会编写一个NextDate函数。

实验软件测试用例

实验软件测试用例

实验一案例实践一NextDate的第一次测试我们可以将软件缺陷的正式定义简单地归纳为以下三点:1.存在完全没有实现的功能,即软件做得不够2.基本实现了用户所需的功能,但运行时会出现一些功能或性能上的问题,即软件没有正确地去做3.实现了用户不需要的功能,即软件做得太多让我们根据上述简单规则,用下面的案例来亲自动手测试。

测试步骤:1.NextDate功能简述(1) 有效日期的正确计算功能名称:有效日期的正确计算功能编号:F01(2)无效日期的合理提示功能名称:无效日期的合理提示功能编号:F02(3) 无条件文本清除功能名称:无条件文本清除功能编号:F03(4) 无条件确定功能名称:无条件确定功能编号:F04(5)无条件取消功能名称:无条件取消功能编号:F052.开始测试根据缺陷定义的三个方面,我们需要考察需求规格说明中指明的所有功能是什么,其中每个功能是否是正确完成的,是否存在某些功能超出了需求规格说明指明的功能范围。

让我们依次来测试每个功能吧。

NextDate的第一次测试的测试用例集合如表1.1所示,表中“N/A”表示不需要输入任何数据表1.1 NextDate的第一次测试的测试用例集合从表1.1中我们可以看到,对于需要简述中的每一项功能,表中都有一个测试用例进行对应的测试,且从表中可以清晰地看出每个用例执行的结果。

结果表明,系统实现了每项功能,但针对无效输入和“确定”按钮测试失败,发现有缺陷存在。

3. 测试分析(1)测试的完整性和有效性对于每项功能,只有一个测试用例来对应,这显然是不彻底的。

以有效输入功能为例,有效的日期应该是从 1800年 1 月 1日到2050 年 12月 31日之间的所有日期,而我们目前只选择了其中的一个日期,我们面临的问题是:我们需要全部测试这些有效日期吗?如果不需要全部测试,我们又该如何从中挑选出最能够揭示系统潜在缺陷的日期?仅用少量日期来测试对软件交付造成的风险有多大?对于无效输入,将包含更多情况:第一,满足所有输入的数据类型要求,但不在有效取值范围内。

NextDate函数测试用例

NextDate函数测试用例

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日。

软件测试NextDate函数测试用例详解

软件测试NextDate函数测试用例详解
12
15
2007
2007年12月16日
Test Case 15
12
31
2007
2008年1月1日
Test Case 16
2
15
2007
2007年2月16日
Test Case 17
2
28
2000
2000年2月29日
Test Case 18
2
28
2007
2007年3月1日
Test Case 19
2
29
动作:
A1: 不可能



A2: day加1





A3: day复位



A4: month加1


A5: month复位

A6:year加1

决策表法
表5-8 简化的NextDate函数决策表
选项 规则
1, 2, 3
4
5
6, 7, 8, 9
10
11, 12, 13, 14
15
等价类划分法——以输入域划分等价类
等价类划分法——以输入域划分等价类
改进等价类划分测试NextDate函数如表5-5所示。 表5-5 改进等价类划分法测试用例
测试用例
输入
期望输出
month
day
year
Test Case 1
6
30
2007
2007年7月1日
Test Case 2
8
31
2007
2007年9月1日
弱强健等价类测试 弱强健等价类测试中的有效测试用例使用每个有效等价类中的一个值。弱强健等价类测试中的无效测试用例那么只包含一个无效值,其他都是有效值,即含有单缺陷假设。如表5-3所示。

NextDate函数测试用例

NextDate函数测试用例

int i=0; i=day-29; while(month==2&&i>0) {
cout<<"本月是闰月,请在 1-29 之间从新输入日期"<<endl; cin>>day; } if(month==2&&day==29) { month=3; day=1;
} else day++; } else day++; //月底计算; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10:
预期结果 2011 年 6 月 16 日 日期输入有误 日期输入有误 日期输入有误 2000 年 3 月 1 日 2001 年 3 月 1 日 2001 年 4 月 1 日 2001 年 5 月 1 日 2005 年 1 月 1 日
实际结果 2011 年 6 月 16 日
输入有误,重新输入 输入有误,重新输入 输入有误,重新输入
if(day==31) {
month++; day=1; cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl; } break; case 12: if(day==32) { year++; month=1; day=1; cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl; } break; } cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl; }

使用等价类划分法为NextDate函数设计测试用例

使用等价类划分法为NextDate函数设计测试用例

1、使用等价类划分法为NextDate函数设计测试用例:NextDate函数包含三个输入变量month、day和year(要求month、day和year 均为整数值,并且满足:1≤month≤12; 1≤day≤31;1912≤year≤2050),函数的输出为输入日期后一天的日期。

(1)列出输入域等价类表(包括有效和无效等价类)。

(2)根据(1)中的等价类,设计能覆盖所有等价类的测试用例,要求包括输入数据和预期输出,并指出各个测试用例所覆盖的等价类编号。

2、某城市电话号码由三部分组成,分别是:地区码——空白或者三位数字;前缀——非‘0’或‘1’开头的三位数字;后缀——4位数字。

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。

(1)列出输入域等价类表(包括有效和无效等价类)。

(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例,要求包括输入数据和预期输出,并指出各个测试用例覆盖的等价类编号。

3、使用基本路径测试方法测试以下程序段:V oid sort(int irecordnum,int itype)1{2Int x = 0;3Int y = 0;4While( irecordnum -- >0 )5{6If( itype == 0)7Break;8Else9If(itype == 1)10x = x+10;11Else12y = y+20;13}14}说明:写在程序段某些行开头数字(1~14)是对每条语句的编号。

(1)画出程序的控制流程图(用题中给出的语句编号表示)。

(2)计算上述程序段的环形复杂度。

(3)导出基本路径集,列出程序的独立路径(用题中给出的语句编号表示)。

请根据(3)中的独立路径,设计测试用例的输入数据和预期输出。

4、使用基本路径测试方法测试以下程序段:Int IsGood( int grade ){① If (grade <= 100){② If( grade >= 80 ){③ If(year >= 90 )④ Result = 2; //优秀Else⑤ Result = 1; //良好}Else if(grade >= 0)⑥ Result = 0; //合格Else⑦ Result = -1; //分数为负数}Else⑦ Result = -1; //分数大于100⑧ Return Result;}说明:写在程序段某些行开头数字(①~⑧)是对应语句的编号。

第六章 软件测试等价类测试

第六章 软件测试等价类测试

{<a, c>: b+c D6 = {<a,b,c>:a≥b+c } {<a, c>: a+C D7 = {<a,b,c>:b≥a+C } {<a, c>: a+b D8 = {<a,b,c>:c≥a+b }
计算机软件测试
NextDate函数的等价类测试用例 NextDate函数的等价类测试用例
确定等价类: 确定等价类:
有效等价类: 有效等价类: M1 = {月份:1≤月份 月份: 月份 月份≤12} 月份 D1 = {日期:1≤日期 日期: 日期 日期≤31} 日期 Y1 = {年:1812≤年≤2012} 年 年 无效等价类: 无效等价类: M2 = {月份:月份 月份: 月份 月份<1} M3 = {月份:月份 月份: 月份 月份>12} D2 = {日期.:日期 日期. 日期<1} 日期 D3 = {日期:日期 日期: 日期 日期>31} Y2 = {年:年<1812} 年 Y3 = {年:年>2012} 年
计算机软件测试强健壮等价类测试用例计算机软件测试1请以nextdate函数的36个强一般等价类测试用例为基础按所讨论的那样修改日期类然后找出其他9个测试用例2如果使用强类型语言编译器请讨论怎样才能执行健壮等价类测试用例3请针对包含了直角的扩展三角形问题来修改弱一般等价类集合4请对比单多缺陷假设与边界值测试和等价类测试计算机软件测试5对电话账单来说春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题
g f e a b c d
计算机软件测试
弱一般等价类测试
• •
弱一般等价类测试是基于单缺陷假设的; 弱一般等价类测试是基于单缺陷假设的; 弱一般等价类测试通过使用一个测试用例中的每个等价 区间)的一个变量实现。 类(区间)的一个变量实现。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变量month、year无效 变量day有效
变量day、year无效 变量month有效
变量month、day、year无效
制作者:
等价类划分法——以输入域划分等价类
(2)改进等价类划分测试NextDate函数
在简单等价类划分测试NextDate函数中,没有考虑2月份的天数问题,也没有考虑 闰年的问题,月份只包含了30天和31天两种情况。在改进等价类划分测试NextDate 函数中,要考虑2月份天数的问题。 关于每个月份的天数问题,可以详细划分为以下等价类: 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} D5={day:day=31} Y1={year:year是闰年} Y2={year:year不是闰年}
制作者: 制作者:
Page 4
等价类划分法——以输入域划分等价类
显然还存在着大量的 year 、 month 、 day 的无效组 合, NextDate 函数将这些组合统一输出为:“无效 输入日期”。其无效等价类为: M2={month:month<1} M3={month:month>12}
制作者:
制作者:
Page 12
边界值分析法
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7 Test Case 8 Test Case 9 Test Case 10 Test Case 11 Test Case 12 Test Case 13 Test Case 14 Test Case 15 Test Case 16 Test Case 17 Test Case 18 -1 0 1 2 11 12 13 6 6 6 6 6 6 6 6 6 6 6 6 6 day 15 15 15 15 15 15 15 -1 0 1 2 30 31 32 15 15 15 15 15 15 Page 13 year 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 2000 1911 1912 1913 2049 2050 2051 month不在1~12中 month不在1~12中 2000年1月16日 2000年2月16日 2000年11月16日 2000年12月16日 month不在1~12中 day不在1~31中 day不在1~31中 2000年6月2日 2000年6月3日 2000年7月1日 不可能的输入日期 day不在1~31中 year不在1912~2050中 1912年6月16日 1913年6月16日 2049年6月16日 2050年6月16日 year不在1912~2050中 期望输出
制作者:
等价类划分法——以输入域划分等价类
测试用例 Test Case 1 Test Case 2 输入
month
9 0
day
9 9
year
2007 2007
期望输出 2007年9月10日 month不在1~12中
Test Case 3
Test Case 4 Test Case 5
13
9 9
9
0 32
返回
制作者:
Test Case 20
Test Case 19
制作者:
决策表法
NextDate函数的决策表测试用例设计:
NextDate函数中包含了定义域各个变量之间的依赖问题。等价类划分法和 边界值分析法只能“独立地”选取各个输入值,不能体现出多个变量的 依赖关系。决策表法则是根据变量间的逻辑依赖关系设计测试输入数据, 排除不可能的数据组合,很好地解决了定义域的依赖问题。 NextDate函数求解给定某个日期的下一个日期的可能操作(动作桩)如下: 变量day加1操作; 变量day复位操作; 变量month加1操作; 变量month复位操作; 变量year加1操作。
制作者:
制作者:
Page 8
等价类划分法——以输入域划分等价类
表5-4 NextDate函数的强健壮等价类测试用例
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 Test Case 5 Test Case 6 Test Case 7
返回
Test Case 5
Test Case 6 Test Case 7 Test Case 8
2
12 9 2
29
31 31 29
2004
2007 2007 2007
2000年3月1日(2004是闰年)
2008年1月1日 不可能的输入日期 不可能的输入日期
Test Case 9
Test Case 10 Test Case 11 Test Case 12 制作者:
2
15 9 9
30
9 35 9
Page 11
2007
2007 2007 2100
不可能的输入日期
变量month无效 变量day无效 变量year无效 制作者:
边界值分析法
边界值分析法设计测试用例
在NextDate函数中,规定了变量month、day、year的相应 取值范围。在上面等价类法设计测试用例中已经提过,具 体如下: M1={month:1≤month≤12} D1={day:1≤day≤31} Y1={year:1912≤year≤2050}
决策表共有22条规则: 第1~5条规则解决有30天的月份; 第6~10条规则解决有31天的月份(除12月份以外); 第11~15条规则解决12月份; 第16~22条规则解决2月份和闰年的问题。 不可能规则也在决策表中列出,比如第5条规则中在有30天的 月份中也考虑了31日。
制作者:
等价类划分法——以输入域划分等价类
强健壮等价类测试
强健壮等价类测试考虑了更多的无效值情况。强健壮 等价类测试中的无效测试用例可以包含多个无效值, 即含有多个缺陷假设。因为NextDate函数有三个变量, 所以对应的强健壮等价类测试用例可以包含一个无效 值,两个无效值或三个无效值。如表5-4所示。
制作者:
Page 16
决策表法
规则 选项 条件: C1: month在 C2: day在 C3: year在 动作: A1: 不可能 A2: day加1 A3: day复位 A4: month加1 A5: month复位 A6:year加1 √ √ √ √ √ √ √ √ √ √ √ √ √ M1 D1 - M1 D2 - M1 D3 - M1 D4 - M1 D5 - M2 D1 - M2 D2 - M2 D3 - M2 D4 - M2 D5 - M3 D1 - 1 2 3 4 5 6 7 8 9 10 11
2007
2007 2007
month不在1~12中
day不在1~31中 day不在1~31中
Test Case 6
Test Case 7
9
9
9
9
1911
2051
year不在1912~2050中
year不在1912~2050中
表5-3 NextDate函数的弱健壮等价类测试用例
制作者:
Page 7
制作者:
制作者:
期望输出 day 9 -1 9 -1 9 -1 -1
Page 9
year 2007 2007 1900 2007 1900 1900 1900 month不在1~12中 day不在1~31中 year不在1912~2050中
-1 9 9 -1 -1 9 -1
变量month、day无效 变量year有效
制作者: 制作者:
Page 10
等价类划分法——以输入域划分等价类
改进等价类划分测试NextDate函数如表5-5所示。
表5-5 改进等价类划分法测试用例
输入 测试用例 month Test Case 1 Test Case 2 Test Case 3 Test Case 4 6 8 2 2 day 30 31 27 28 year 2007 2007 2007 2007 2007年7月1日 2007年9月1日 2007年2月28日 2007年3月1日 期望输出制作者:Fra bibliotek制作者:
Page 17
决策表法
D2={day:day<1}
D3={day:day>31} Y2={year:year<1912} Y3={year:year>2050}
制作者: 制作者:
Page 5
等价类划分法——以输入域划分等价类
一般等价类测试用例如表5-2所示。
表5-2 NextDate函数的一般等价类测试用例 测试 用例 Test Case 1 输入 month 9 day 9 year 2007 期望输出
制作者: 制作者:
Page 3
等价类划分法——以输入域划分等价类
(1)简单等价类划分测试NextDate函数 有效等价类 M1={month:1≤month≤12}
简单等价类划分测试NextDate函数可以划分以下三种有效等价类:
D1={day:1≤day≤31}
Y1={year:1912≤year≤2050} 无效等价类 若条件 (1)~(3)中任何一个条件无效,那么NextDate 函数 都会产生一个输出,指明相应的变量超出取值范围,例如 month 的值不在 1~12 范围当中。
相关文档
最新文档