NextDate函数测试用例
- NextDate函数讲解
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}
返回
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 制作者:
制作者:
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
软件测试NextDate函数测试用例详解
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函数的代码#include#includevoid main(){int year,month,day;void nextdate(int ,int ,int );printf("请输入年份(范围在1912-2050之间):");scanf("%d",&year);printf("请输入月份(范围在1-12之间):");scanf("%d",&month);printf("请输入日期(范围在1-31之间):");scanf("%d",&day);printf("%d年%d月%d日的下一天是:",year,month,day);nextdate(year,month,day);}void nextdate(int year,int month,int day){int leap( int );switch(month){case 1:case 3:case 5:case 7:case 8:case 10:if(day>=1&&day<31)day=day+1;else if(day==31){day=1;month=month+1;}elseprintf("输入数据错误!\n"); break;case 12:if(day>=1&&day<31) day=day+1;else if(day==31){day=1;month=1;year=year+1;}else{printf("输入数据错误!\n"); exit(0);}break;case 4:case 6:case 9:case 11:if(day>=1&&day<30) day=day+1;else if(day==30){day=1;month=month+1;}else{printf("输入数据错误!\n");exit(0);}break;case 2:if(day>=1&&day<28)day=day+1;else if(!leap(year)&&day==28){day=1;month=month+1;}else if(leap(year)&&day==28)day=day+1;else if(leap(year)&&day==29){day=1;month=month+1;}else{printf("输入数据错误!\n");exit(0);}}printf("%d年%d月%d日\n",year,month,day); } int leap(int yy){return (yy%400==0||(yy%4==0&&yy%100!=0)); }。
NextData函数
NextData函数一、问题描述程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤year ≤2050。
),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。
例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。
请用黑盒测试方法设计测试用例。
二、程序界面计算下一天的程序代码见附录。
三、设计测试用例1. 用边界值测试方法设计测试用例用健壮性测试法设计测试用例,按照下列步骤进行:(1)分析各变量的取值健壮性测试时,各变量分别取:略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略大于最大值。
month:-1,1,2,6,11,12,13;day:-1,1,2,15,30,31,32year:1899,1900,1901,1975,2049,2050,2051;(2)测试用例数有n个变量的程序,其边界值分析会产生6n+1个测试用例。
这里有3个变量,因此会产生19个测试用例。
(3)设计测试用例,见表1-1。
NextDate函数的复杂性来源于两个方面:一是输入域的复杂性(即输入变量之间逻辑关系的复杂性),二是确定闰年的规则。
但是在进行健壮性测试时,没有考虑输入变量之间的逻辑关系,也没有考虑和闰年相关的问题,因此在设计测试用例时存在遗漏问题,比如和判断闰年相关的日期:2008.2.29、1999.2.28等。
表1-1NextDate函数测试用例2. 用基于判定表的方法设计测试用例(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。
month变量的有效等价类:M1 = { month = 4,6,9,11 }M2 = { month = 1,3,5,7,8,10 }M3 = { month = 12 }M4 = { month = 2 }day变量的有效等价类:D1={日期:1≤日期≤27}D2={日期:日期=28}D3={日期:日期=29}D4={日期:日期=30}D5={日期:日期=31}year变量的有效等价类:Y1 = { year是闰年}Y2 = { year不是闰年}(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
软件测试实验报告二doc
软件测试实验报告二一、实验目的掌握边界值、等价类和决策表测试的基本方法二、实验内容对于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);}。
next-date-系统测试报告
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。
软件测试-测试用例的经典例子
软件测试-测试用例的经典例子一、等价类划分问:某程序规定:"输入三个整数 a、 b、 c分别作为三边的边长构成三角形。
通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算… "。
用等价类划分方法为该程序进行测试用例设计。
(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。
)解:分析题目中给出和隐含的对输入条件的要求:(1)整数(2)三个数(3)非零数(4)正数(5)两边之和大于第三边(6)等腰(7)等边如果 a、 b 、 c满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形" 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。
列出等价类表并编号覆盖有效等价类的测试用例:a b c覆盖等价类号码3 4 5(1)--(7)4 4 5(1)--(7),(8)4 5 5(1)--(7),(9)5 4 5(1)--(7),(10)4 4 4(1)--(7),(11)覆盖无效等价类的测试用例:二、边界值分析法NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。
三、错误推测法测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:I.输入的线性表为空表;II.表中只含有一个元素;III.输入表中所有元素已排好序;IV.输入表已按逆序排好;V.输入表中部分或全部元素相同。
2014年9月计算机三级软件测试技术上机练习
2014年9月计算机三级软件测试技术上机练习1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。
例如,输入为2008年8月8日,则该程序的输出为2008年8月 10日。
NextDate函数包含三个整数变量month、day和year,并且满足下列条件:1≤ month ≤12、1≤ day ≤31和2000≤ yea r ≤2100。
分析各种输入情况,列出为输入变量month、day、year 划分的有效等价类:编程实现:输入等价类(1) 对每一个有效等价类,至少设计一个测试用例。
输入格式:输入(yyyymmdd):输出格式:输出(yyyy-mm-dd):覆盖等价类(ID类型):闰年(Y/N):例如:输入(yyyymmdd) 20080105↙(回车)输出(yyyy-mm-dd): 2008-01-07覆盖等价类(ID类型):1,8,11闰年(Y/N):N(2)对每一个无效的month、day和year,分别输入一个无效等价类。
例如:输入(yyyymmdd) 20081305 ↙(回车) 输出(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:测试路径41、三角形问题说明:输入三个正整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型是否为等边三角形、等腰三角形、直角三角形、普通三角形以及非三角形。
NextData函数
NextData函数一、问题描述程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤year ≤2050。
),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。
例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。
请用黑盒测试方法设计测试用例。
二、程序界面计算下一天的程序代码见附录。
三、设计测试用例1. 用边界值测试方法设计测试用例用健壮性测试法设计测试用例,按照下列步骤进行:(1)分析各变量的取值健壮性测试时,各变量分别取:略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略大于最大值。
month:-1,1,2,6,11,12,13;day:-1,1,2,15,30,31,32year:1899,1900,1901,1975,2049,2050,2051;(2)测试用例数有n个变量的程序,其边界值分析会产生6n+1个测试用例。
这里有3个变量,因此会产生19个测试用例。
(3)设计测试用例,见表1-1。
NextDate函数的复杂性来源于两个方面:一是输入域的复杂性(即输入变量之间逻辑关系的复杂性),二是确定闰年的规则。
但是在进行健壮性测试时,没有考虑输入变量之间的逻辑关系,也没有考虑和闰年相关的问题,因此在设计测试用例时存在遗漏问题,比如和判断闰年相关的日期:2008.2.29、1999.2.28等。
表1-1NextDate函数测试用例2. 用基于判定表的方法设计测试用例(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。
month变量的有效等价类:M1 = { month = 4,6,9,11 }M2 = { month = 1,3,5,7,8,10 }M3 = { month = 12 }M4 = { month = 2 }day变量的有效等价类:D1={日期:1≤日期≤27}D2={日期:日期=28}D3={日期:日期=29}D4={日期:日期=30}D5={日期:日期=31}year变量的有效等价类:Y1 = { year是闰年}Y2 = { year不是闰年}(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。
软件测试实验报告(测试用例 代码 截图)
软件测试实验报告(测试用例代码截图)计算机软件测试技术实验报告系别电子信息系专业计算机科学与技术班级学号姓名指导教师万聪2010年12月19月实验一黑盒测试用例设计一(实验内容:1( 三角形问题的等价类测试和边界值分析测试2( NextDate()函数决策表法测试二(实验要求:给出测试用例和测试结果三(实验步骤及结果:3.1(三角形)实验代码(c)#include<stdio.h> #include<stdlib.h>int a=0,b=0,c=0;void shuru();void panduan(int a1,int b1,int c1);void main(){char se;shuru();panduan(a,b,c);while(1){printf("是否要继续y or n :");scanf("%c",&se);if(se=='\n') scanf("%c",&se);switch(se){case 'y':shuru();panduan(a,b,c);break;case 'n':return;}}}void shuru(){printf("Please enter 三角形三边 (a,b,c)\n"); scanf("%d,%d,%d",&a,&b,&c);while((a<1||a>100)||(b<1||b>100)||(c<1||c>100)){if(a==0||b==0||c==0) printf("边长不能为0\n");else if(a<0||b<0||c<0) printf("边长不能为负\n");else printf("Please enter 1-100之间的整数\n");scanf("%d,%d,%d",&a,&b,&c);}}void panduan(int a1,int b1,int c1) {int m1=a1+b1;int m2=a1+c1;int m3=b1+c1;if(a1>=m3||b1>=m2||c1>=m1) printf("非三角形\n");else if(a1!=b1&&a1!=c1&&b1!=c1) printf("一般三角形\n");else if((a1==b1&&b1!=c1)||(a1==c1&&a1!=b1)||(c1==b1&&a1!=c1)) printf("等腰三角形\n");else if(a1==b1&&b1==c1) printf("等边三角形\n"); }3.2测试用例和结果(反映在图中)测试用例输入a,b,c 输出1 4,5,6 一般三角形2 2,3,6 非三角形3 4,4,7 等腰三角形4 6,6,6 等边三角形5 4,0,6 边长不能为06 4,-5,6 边长不能为负7 101,101,101 请输入1-100之间的整数图形结果:3.3(NextDate())实验代码(c)#include<stdio.h>#include<stdlib.h>#include<time.h>void main(){int year;int month,day;int leap;//标志是闰年还是平年,为1时是闰年,为2时是平年time_t t;//本来以下是用来判断格式输入是否正确的,但是结果不理想struct tm stm;//Awhile(1){//循环测试printf("请输入年(yyyy)/月(mm)/日(dd)\n");scanf("%d/%d/%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday);//B year=stm.tm_year;month=stm.tm_mon;day=stm.tm_mday;//Ct=mktime(&stm);//Dprintf("*****输出结果*****\n");if(t!=-1)//E有问题,不管输入格式是什么,t永远是-1{printf("输入的日期时间格式出错!\n");continue;}if(year%4==0)//年份判断{if(year%100==0){if(year%400==0){leap=1;printf("%ld年%d月%d日是闰年\n",year,month,day);}else{leap=2;printf("%ld年%d月%d日是平年\n",year,month,day); }}else{leap=1;printf("%ld年%d月%d日是闰年\n",year,month,day); }}else{leap=2;printf("%ld年%d月%d日是平年\n",year,month,day); }if(month==2){if(leap==1){printf("该月有29天\n");if(day>29){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==29){month=month+1;day=1;}else day=day+1;}if(leap==2){printf("该月有28天\n");if(day>28){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==28){month=month+1;day=1;}else day=day+1;}}else if(month==4||month==6||month==9||month==11){printf("该月有30天\n");if(day>30){printf("对不起!您输入的日期超出该月范围\n"); continue;}else if(day==30){month=month+1;day=1;}else day=day+1;}else{printf("该月有31天\n");if(day>31){printf("对不起~超出该月范围\n");continue;}else if(day==31){if(month==12&&day==31){year=year+1;month=1;day=1;}else{month=month+1;day=1;}}else day=day+1;}printf("NEXT日期:%ld年%d月%d日\n",year,month,day); }}3.4测试用例和结果(反映在图中)决策表测试用例 month day year 预期输出Test1~3 6 16 2001 2001/6/17Test4 6 30 2001 2001/7/1Test5 6 31 2001 对不起~超出该月范围Test6~9 1 17 2010 2010/1/18Test10 1 31 2013 2013/2/1Test 11~14 12 31 2010 2010/1/1Test15 2 28 2004 2004/2/29Test16 2 29 2004 2004/3/1Test17 2 28 2001 2001/3/1Test18 2 30 2001 对不起~超出该月范围界面效果:实验二白盒测试用例设计一(实验内容:求解一元二次方程程序控制流测试二(实验要求:给出控制流测试用例和测试结果三(实验步骤及结果:3.1实验代码(c)#include<stdio.h>#include<stdlib.h>#include<math.h>void main(){float a,b,c,x,y;float mid,x1,x2;y=a*x*x+b*x+c;printf("*************************************\n"); printf("二元一次方程的求解问题\n");printf("**************************************\n"); while(1){printf("请输入y方程中参数a,b,c: \n");scanf("%f,%f,%f",&a,&b,&c);if(a!=0){mid=b*b-4*a*c;if(mid>0){x1=(-b+sqrt(mid))/(2*a);x1=(-b-sqrt(mid))/(2*a);printf("该方程有两个解:x1=%f,x2=%f\n",x1,x2);//printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x1,x1,b,x1,c);//printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x2,x2,b,x1,c);}if(mid==0){x1=-b/(2*a);x2=x1;printf("该方程两个解相同:x1=x2=%f\n",x2);printf("y=(%f*%f*%f)+(%f*%f)+(%f)\n",a,x1,x1,b,x1,c);}if(mid<0){printf("该方程没有解\n");}}else printf("该方程不是二元方程,可能是一元一次方程\n");}}3.2测试用例和结果(反映在图中)测试用例 x,y,z a!=0 mid>0 mid==0 输出结果1 2,5,3 真真假该方程有两个解2 1,2,1 真假真该方程有两个相同解3 4,2,1 真假假该方程没有解4 0,2,1 假该方程不是二元方程,可能是一元一次方程图形结果:实验三基于缺陷模式的软件测试一(实验内容:C++语言、Java语言缺陷模式测试 (2学时) 二(实验要求:给出测试用例和测试结果三(实验步骤及结果:3.1实验代码(java)package hl.fengye.tt;public class base{//没必要的方法调用,System.exit()是没有必要的,应该抛出异常public String square(String x){try{int y=Integer.parseInt(x.toLowerCase());return y*y+"";}catch(NumberFormatException e){e.printStackTrace();System.exit(1);return "";}}//显示垃圾回收(缺陷)public String multiply(String x,int n){if(n<=0) return "";StringBuffer buf=new StringBuffer();while(n-->0){buf.append(x);}return buf.toString();}public String multiplyGc(String x,int n){ System.gc();//显示运行结果return multiply(x,n);}//字符串的低效操作(连接)public void connection(){String filed="东北大学秦皇岛分校 4080420 黄磊"; //this is badString s="";//System.out.print(s);//Startfor(int i=0;i<filed.length();++i){s=s+filed.charAt(i);//追加}System.out.print(s+'\n');//Stop1}public void connection2(){String filed="东北大学秦皇岛分校 4080420 黄磊";//this is betterString s="";StringBuffer buf=new StringBuffer();for(int i=0;i<filed.length();++i){buf.append(filed.charAt(i));}String ss=buf.toString();System.out.print(ss+'\n');//Stop2}public static void main(String[] args) {String h;base pp=new base();h=pp.square("100");System.out.print(h+"\n");String s="hello word!";h=pp.multiply(s, 2);//System.out.print(h+"\n");h=pp.multiplyGc(s,2);System.out.print(h+"\n");//以纳秒为单位计算的:long startTime = System.nanoTime();//获取当前时间pp.connection();long endTime = System.nanoTime();System.out.println("程序运行时间:"+(endTime-startTime)+"ms");long startTime2 = System.nanoTime();//获取当前时间pp.connection2();long endTime2 = System.nanoTime();System.out.println("程序运行时间:"+(endTime2-startTime2)+"ms"); }}3.2测试用例和结果(反映在图中)显示垃圾回收部分:测试用例输入String s ,int n 输出结果1 hello word !,2 hello word! hello word!2 ni hao ,1 ni hao3 love you ,0 (null)图形显示:低效字符串操作部分:测试用例输入String s 输出时间bad(ms) good(ms)1 hl 441694 271302 hello word 477785 378673 东北大学秦皇岛分校 4080420 黄磊 456245 392444 (空格) 313135 51604部分图形展示:实验四系统测试一(实验内容:数据库应用系统性能测试二(实验要求:给出响应时间、吞吐量测试用例和结果三(实验步骤及结果:3.1实验代码(java)import java.sql.Connection;import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;public class huanglei {/*** @param args* @throws Exception*/public void execute() throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");con.setAutoCommit(false);Statement st = con.createStatement();//st.execute("create table city (name varchar(20) not null)");for(int i = 100;i>0;i--){String str = "insert into city values('city"+i+"','huangeli','hebei')";System.out.println(str);st.addBatch(str);}//rs='select * from city';st.executeBatch();mit();}public static void main(String[] args) {// TODO Auto-generated method stubtry {new Luncher().execute();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}3.2测试用例和结果(反映在图中)测试用例线程数循环次数响应时间(seconds)吞吐结果1 100 10 1 592.002/minute2 50 5 1 293.232/minute1 100 102 586.61/minute图形展示:实验总结:通过这些课时的实验,了解了一些软件测试的基本含义,学会了一些基本测试步骤的设计和用例的构造。
判定表法-NextDate
为了获得下一个日期,NextDate函数执行如下操作:如果输入日期不是当月最后一天,则把day变量的值加1;如果输入日期是1~11月份中某月的最后一天,则把day变量的值复位为1,month变量的值加1;如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。
关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。
根据所执行的操作,可列出NextDate函数的动作桩:a1: 不可能;a2: day加1;a3: day复位;a4: month加1;a5: month复位;a6: year加1考虑到判断表的规模,条件使用month、day、year变量的等价类,在以下等价类集合上建立判定表:对于month变量的取值M1: {mouth: mouth有30天};M2: {mouth:mouth有31天,12月除外};M3: {mouth:mouth有12月};M4: {mouth:mouth是2月};对于day变量的取值D1:{day:1≤day≤27};D2: {day:day=28};D3: {day:day=29};D4: {day:day=30};D5: {day:day=31};对于year变量的取值Y1:{year:year是闰年};Y2: {year:year不是闰年}month变量的有效等价类:M1: {month=4,6,9,11} M2: {month=1,3,5,7,8,10}M3: {month=12} M4: {month=2}day变量的有效等价类:D1: {1≤day≤27} D2:{day=28} D3:{day=29}D4:{day=30} D5: {day=31}year变量的有效等价类:Y1: {year是闰年} Y2: {year不是闰年}考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1: day+2a2: day=2a3: day=1a4: month+1a5: month=1a6: year+1。
软件测试-NextDate函数
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日。
制作者:
Page 16
决策表法
NextDate函数的用例设计方法
主讲:黄老师
授课班级:软件设计班
制作者:
NextDate函数的用例设计方法
黑盒测试
等价类划分法
边界值分析法
因果图法 决策表法
制作者:
Page 2
等价类划分法——以输入域划分等价类
NextDate 函数包含三个变量:month(月份)、day(日期) 和 year(年),函数的输出为输入日期后一天的日期。 例如, 输入为 2007年9月 9日,则函数的输出为 2007年9月10日 。 要求输入变量 month 、 day 和 year 均为整数值,并且满足 下列条件: (1)1≤month≤12 (2)1≤day≤31 (3)1912≤year≤2050 此函数的主要特点是输入变量之间的逻辑关系比较复杂。复杂 性的来源有两个:一个是输入域的复杂性,另一个是指闰年 的规则。例如变量year和变量month取不同的值,对应的变 量day会有不同的取值范围,day值的范围可能是1~30或1~ 31,也可能是1~28或1~29。
黑盒测试试题及答案
1:程序规定;输入三个整数作为三边的边长构成三角形。
当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。
用等价类划分方法为该程序进行测试用例设计。
2:现有一个学生标准化考试批阅试卷,产生成绩报告的程序。
其规格说明如下:程序的输入文件由一些有80个字符的记录组成,所有记录分为3组,如图:1、标题:改组只有一个记录,其内容是成绩报告的名字。
2、各题的标准答案:每个记录均在第80个字符处标以数字2。
该组的记录:第一个记录:第1~3个字符为试题数(1~999)。
第10~59个字符是1~50题的标准答案(每个合法字符表示一个答案)。
第二个记录:是第51~100题的标准答案。
…….3、学生的答案:每个记录均在第80个字符处标以数字3。
每个学生的答卷在若干个记录中给出。
学号:1~9个字符1~50题的答案:10~59。
当大于50题时,在第二、三、……个记录中给出。
学生人数不超过200,试题数不超过999。
程序的输出有4个报告:a)按学号排列的成绩单,列出每个学生的成绩、名次。
b)按学生成绩排序的成绩单。
c)平均分数及标准偏差的报告d)试题分析报告。
按试题号排序,列出各题学生答对的百分比。
1. 黑盒测试的具体技术方法有哪些?答案: 黑盒测试的具体技术方法主要有边界值分析法、等价类划分法、因果图法、决策表测试法、场景法等。
2. 分析如何选择恰当的黑盒测试方法。
答案: 通常在决定测试策略时,有以下的参考原则:①在任何情况下都必须采用边界值分析法。
这种方法设计出的测试用例发现程序错误的能力最强。
②必要时采用等价划分类方法补充测试用例。
③采用错误推断法再追加测试用例。
④对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。
如果没有达到要求的覆盖标准,则应当在补充更多的测试用例。
⑤如果程序的功能说明中含有输入条件的组合情况,则应在一开始就选用因果图法。
3. 解释黑盒测试的概念。
答案: 黑盒测试被称为功能测试或数据驱动测试。
习题解答1_v2.0
习题解答第三章黑盒测试及其用例1、NextDate函数(P28)请使用等价类划分法为NextDate函数列出输入域等价类表,并设计相应的测试用例。
解答:NextDate函数包含三个变量month、day和year,函数的输出为输入日期后一天的日期。
要求输入变量month、day和year均为整数值,并且满足下列条件:条件1 1≤month ≤12条件2 1≤day ≤31条件3 1912≤year ≤2050分析程序规格说明中给出和隐含的对输入条件的要求。
列出等价类表*年份:闰年、非闰年(1912≤year ≤2050)*月份:1-12月*天数:1、3、5、7、8、10、12(31天),4、6、9、11(30天),2(28或29)等价类表2、找零钱最佳组合(P47)假设商店货品价格(R) 都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。
假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1) 四种。
请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。
解答:根据等价类划分法和边界值分析法的基本定义,得到下列基本认识:Step1.输入:商品价格R和顾客付款P有以下情况:R > 100 0 < R < = 100 R <= 0 P > 100 R<= P <= 100 P < RStep2.输出:N50 = 1 N50 = 0 4 > N10 >= 1 N10 = 0 N5 = 1 N5 = 0 4 > N1 >= 1 N1 = 0 Step3.分析规格中每一决策点之情形,以RR1, RR2, RR3 表示计算要找50, 10, 5 元货币数时之剩余金额。
R > 100R <= 0 P > 100 P < R RR1 >= 50 RR2 >= 10 RR3 >= 5Step4. 由上述之输入/ 输出条件组合出可能的情形。
一个例题的分析和思考
D3
D3
D3
D3 D3
D4
D4
D4
D4 D4
D5
D5
D5
年
Y1 Y2 Y1 Y2
份
动不
Y
YYY
作可
桩能
D+1 Y Y Y
YYYY
YYYY
YY
D=1
Y
Y
Y
YY
M+1
Y
Y
YY
M=1
Y
Y+1
Y
4. 合并决策表 按照决策表的合并规则,可以将上表的相应列进行合并,合并结果如下:
1(1-3) 2(4) 3(5) 4(6-9) 5(10) 6(11-14) 7(15) 8(16) 9(17) 10(18) 11(19) 12(20) 13(21-22)
一个例题的分析和思考
Apr.6, 2011 Mar.9, 2012 Apr.17,2012 mlcaister@
【题目】 用判定法设计 NextDate 函数的测试用例。
一、解答 1. 理解问题
题目要求假定输入为 3 个变量 month、day、year,函数的输出为输入日期后一天的日期。 要求输入变量 month、day、year 均为整数值,并且满足下列条件: 条件 1 1<=month <=12 条件 2 1<=day<=31。 经过分析我们可以得出:为了获得下一个日期,NextDate 函数执行如下操作。 1) 如果输入日期不是当月最后一天,则把 day 变量的值加 1。 2) 如果输入日期是 1 至 11 月份中某月的最后一天,则把 day 变量的值复位为 1,month
} 4) 至此我们的 tGetNextDate 已经是万事具备啦,可以定义如下: TDate tGetNextDate(TDate tDate) {
测试用例设计方法总结(1)
测试用例地设计方法(全)等价类划分方法:一.方法简介一.定义是把所有可能地输入数据,即程序地输入域划分成若干部分(子集),然后从每一个子集选取少数具有代表地数据作为测试用例。
该方法是一种重要地,常用地黑盒测试用例设计方法。
二.划分等价类:等价类是指某个输入域地子集合。
在该子集合,各个输入数据对于揭露程序地错误都是等效地,并合理地假定:测试某等价类地代表值就等于对这一类其它值地测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类取一个数据作为测试地输入条件就可以用少量代表地测试数据取得较好地测试结果。
等价类划分可有两种不同地情况:有效等价类与无效等价类。
一)有效等价类是指对于程序地规格说明来说是合理地,有意义地输入数据构成地集合。
利用有效等价类可检验程序是否实现了规格说明所规定地功能与能。
二)无效等价类与有效等价类地定义恰巧相反。
无效等价类指对程序地规格说明是不合理地或无意义地输入数据所构成地集合。
对于具体地问题,无效等价类至少应有一个,也可能有多个。
设计测试用例时,要同时考虑这两种等价类。
因为软件不仅要能接收合理地数据,也要能经受意外地考验,这样地测试才能确保软件具有更高地可靠。
三.划分等价类地标准:一)完备测试,避免冗余;二)划分等价类重要地是:集合地划分,划分为互不相地一组子集,而子集地并是整个集合;三)并是整个集合:完备;四)子集互不相:保证一种形式地无冗余;五)同一类标识(选择)一个测试用例,同一等价类,往往处理相同,相同处理映射到"相同地执行路径"。
四.划分等价类地方法一)在输入条件规定了取值范围或值地个数地情况下,则可以确立一个有效等价类与两个无效等价类。
如:输入值是学生成绩,范围是零~一零零;二)在输入条件规定了输入值地集合或者规定了"需要如何"地条件地情况下,可确立一个有效等价类与一个无效等价类;三)在输入条件是一个布尔量地情况下,可确定一个有效等价类与一个无效等价类。
NEXTDATE的决策表示例(软件测试技术实验报告)
NextDate函数测试用例选择NextDate函数,是因为它可以说明输入定义域中的依赖性问题,这使得这个例子成为基于决策表测试的一个完美例子,因为决策表可以突出这种依赖关系。
从前面对等价类测试的分析我们知道,等价类分析假设所有的变量都是独立的。
如果变量确实是独立的,则使用类的笛卡尔积是有意义的。
如果变量之间在输入定义域中存在逻辑依赖关系,则这些依赖关系在笛卡尔积中就会丢失(说抑制可能更确切)。
决策表格式通过使用“不可能动作”概念表示条件的不可能组合,使我们能够强调这种依赖关系。
下面将对NextDate函数的决策表描述做三次尝试。
第一次尝试标识合适的条件和动作,假设首先从分析等价类集合开始。
M1 = {月份:每月有30天}; M2 = {月份:每月有31天};M3 = {月份:此月是2月}D1 = {日期:1≤日期≤28};D2 = {日期:日期=29};D3 = {日期=30};D4 = {日期=31}Y1 = {年:年是闰年};Y2 = {年:年不是闰年}如果我们希望突出不可能的组合,则可以建立具有以下条件和动作的有限项决策表。
(请注意,年变量对应的等价类收缩为下表的一个条件。
)这个决策表会有256条规则,其中很多是不可能的。
如果要显示为什么这些规则是不可能的,可将动作修改为:a1:月份中的天数太多;a2:不能出现在非闰年中;a3:计算NextDate。
第二次尝试如果我们将注意力集中到NextDate函数的闰年问题上,则可以修改已有的等价类集合。
为了说明另一种决策表表示方法,这一次采用扩展项决策表开发,并更仔细地研究动作桩。
在构建扩展项决策表时,必须保证等价类构成输入定义域的真划分。
如果规则项之间存在“重叠”,则会存在冗余情况,使得多个规则都能够满足。
这里,Y2是一组1812~2012之间的年份,并除以4,2000除外。
M1 = {月份:每月有30天}; M2 = {月份:每月有31天};M3 = {月份:此月是2月}D1 = {日期:1≤日期≤28};D2 = {日期:日期=29};D3 = {日期=30};D4 = {日期=31}Y1 = {年:年=2000};Y2 = {年:年是闰年};Y3 = {年:年是平年}从某种意义上说,我们采用的是“灰盒”技术,因为更仔细地研究了NextDate函数。
NextDate函数测试用例
1.测试程序源代码#include"stdafx。
h"#include <iostream>using namespace std;void NextDate(int year,int month,int day);void main(){int year=0,month=0,day=0;NextDate(year,month,day);}void NextDate(int year,int month,int day){cout〈<”请输入年份:”<<endl;cin>>year;while(!(year>=1911 && year<=2013)){cout<<"年份超过界限,请重新输入”<〈endl;cin>〉year;}cout<〈”请输入月份:"<〈endl;cin〉〉month;while (month〉12||month<1){cout〈〈”月份输入有误,请重新输入"<〈endl;cin>>month;}cout<〈”请输入日期:"<〈endl;cin〉>day;while (day〉31||day<1){cout〈〈”日期输入有误,请重新输入"〈<endl;cin>>day;}while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&day==31) {cout〈<”小月没有31号”〈<endl;cin〉>day;} if((year%4==0 && year%100!=0) ||(year%400==0)) //检查闰年;{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:if (day==32){month++;day=1;cout<<"明天是:"<<year〈〈’/'〈<month〈<’/'<〈day<〈endl;}break;case 2:if(day==29){month=3;day=1;cout〈〈"明天是:"〈<year〈<’/’〈<month<<'/'<<day<<endl;}break;case 4:case 6:case 9:case 11: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;}白盒测试7DD-路径情况1. 由一个节点组成,内度=0情况2。
白盒测试报告
正确
输入正确年份
1988
1988请输入月份
1988请输入月份
正确
输入错误年份
1810
年份超限,请重新输
年份超限,请重新输
错误
输入错误年份
2014
年份超限,请重新输
年份超限,请重新输入
错误
输入错误年份
#747
输入有误
#747
错误
输入错误年份
1 0 H
输入有误
1 0 H
错误
输入大月月份
8
请输入日期
1.4
软件测试(第二版)(美)Ron Patton著张小松王钰曹跃译机械工业出版社
测试报告模板原创作者:jerry
2、
2.1
#include <iostream>
using namespace std;
void NextDate(int year,int month,int day);
void main()
请输入日期
正确
输入小月份
9
请输入日期
请输入日期
正确
输入闰月份
2
请输入日期
请输入日期
正确
输入错误月份
0
输入有误
输入有误
错误
输入月错误份
13
输入有误
输入有误
错误
输入正确日期
20
明天是:
明天是:
正确
输入错误日期
0
输入有误,请重新输入
输入有误,请重新输入
错误
输入错误日期
56
输入有误,请重新输入
输入有误,请重新输入
错误
输入正确日期
28
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.测试程序源代码#include"stdafx.h"#include <iostream>using namespace std;void NextDate(int year,int month,int day);void main(){int year=0,month=0,day=0;NextDate(year,month,day);}void NextDate(int year,int month,int day){cout<<"请输入年份:"<<endl;cin>>year;while(!(year>=1911 && year<=2013)){cout<<"年份超过界限,请重新输入"<<endl;cin>>year;}cout<<"请输入月份:"<<endl;cin>>month;while (month>12||month<1){cout<<"月份输入有误,请重新输入"<<endl;cin>>month;}cout<<"请输入日期:"<<endl;cin>>day;while (day>31||day<1){cout<<"日期输入有误,请重新输入"<<endl;cin>>day;}while(month==4&&day==31||month==6&&day==31||month==9&&day==31||month==11&&da y==31){cout<<"小月没有31号"<<endl;cin>>day;} if((year%4==0 && year%100!=0) || (year%400==0)) //检查闰年;{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:if (day==32){month++;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;case 2:if(day==29){month=3;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;case 4:case 6:case 9:case 11: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;}白盒测试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-路径测试用例用例说明输入数据预期结果实际结果输入正确的年、月、日2011年6月15日2011年6月16日2011年6月16日输入错误的年、月、日2501年6月15日日期输入有误输入有误,重新输入输入错误的年、月、日2011年6月33日日期输入有误输入有误,重新输入输入错误的年、月、日2011年13月15日日期输入有误输入有误,重新输入输入闰年2月29日2000年2月29日2000年3月1日2000年3月1日输入非闰年2月28日2001年2月28日2001年3月1日2001年3月1日输入大月31日2001年3月31日2001年4月1日2001年4月1日输入小月30日2001年4月30日2001年5月1日2001年5月1日输入12月31日2004年12月31日2005年1月1日2005年1月1日判定覆盖编号输入数据预期结果实际结果1 2000年6月30日2000年7月1日2000年6月16日2 2010年12月31日2011年1月1日2011年1月1日黑盒测试输入条件编号有效等价类编号无效等价类输入年份⑴1912<=年<=2012 ⑺年<1912⑻年>2012输入月份⑵1<=月份<=12 ⑼月<1⑽月>12输入日期⑶1<=日期<=31 ⑾日期<1⑿日期>31输入类型⑷输入为int型⒀除int型外的任意输入输入为闰年⑸输入2月29日⒁输入为闰年2月30日输入为平年⑹输入2月28日⒂输入2月29日测试用例编号输入预期结果实际输出覆盖等价类1 1988/2/3 1988/2/4 1988/2/4 ⑴⑵⑶⑷2 2000/2/29 2000/3/1 2000/3/1 ⑸3 2001/2/28 2001/3/1 2001/3/1 ⑹4 1800/1/23 年份输入年份输入有误,请重新输入⑺有误,请重新输入5 2200/3/2 年份输入年份输入有误,请重新输入⑻有误,请重新输入6 1912/0/3 月份输入月份输入有误,请重新输入⑼有误,请重新输入7 1927/30/3 月份输入月份输入有误,请重新输入⑽有误,请重新输入8 1956/3/-20 日期输入有误,请重新输入日期输入有误,请重新输入⑾9 1972/3/43 日期输入有误,请重新输入日期输入有误,请重新输入⑿10 asd 程序进入死循环程序进入死循环⒀11 2000/2/30 本月是闰月,请在1-29之间从新输入日期本月是闰月,请在1-29之间从新输入日期⒁12 2001/2/29 2001/2/30 2001/2/30 ⒂边界值测试用例月份日期年预期输出实际输出1 6 15 1911 6/16/1911 6/16/19112 6 15 1912 6/16/1912 6/16/19123 6 15 1962 6/16/1962 6/16/19624 6 15 2012 6/16/2012 6/16/20125 6 15 2013 6/16/2013 6/16/20136 6 1 1962 6/2/1962 6/2/19627 6 2 1962 6/3/1962 6/3/19628 6 15 1962 6/16/1962 6/16/19629 6 30 1962 7/1/1962 7/1/196210 6 31 1962 非法输入非法输入11 1 15 1962 1/16/1962 1/16/196212 2 15 1962 2/16/1962 2/16/196213 6 15 1962 6/16/1962 6/16/196214 11 15 1962 11/16/1962 11/16/196215 12 15 1962 12/16/1962 12/16/1962结果分析:白盒测试和黑盒测试的用例中,预期结果与运行结果都是相同的,与实际日期符合的,因此,本函数准确性较好,但是存在死循环,说明程序鲁棒性不好,还有待改进。