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是一个三变量函数,即月份、日期和年,这些变量的有效值区间定义如下:M1={月份:1≤月份≤12}D1={日期:1≤日期≤31}Y1={年:1812≤年≤2012}无效等价类:M2={月份:月份<1}M3={月份:月份>12}D2={日期:日期<1}D3={日期:日期>31}Y2={年:年<1812}Y3={年:年>2012}由于有效类的数量等于独立变量的个数,因此只有弱一般等价类测试用例出现,并且与强一般等价类测试用例相同:用例ID 月份日期年预期输出WN1,SN1 6 15 1912 1912年6月16日用例ID 月份日期年预期输出WR1 6 15 1912 1912年6月16日WR2 -1 15 1912 月份不在有效值域1..12中WR3 13 15 1912 月份不在有效值域1..12中WR4 6 -1 1912 日期不在有效值域1..31中WR5 6 32 1912 日期不在有效值域1..31中WR6 6 15 1811 年不在有效值域1812..2012中WR7 6 15 2013 年不在有效值域1812..2012中强健壮等价类测试用例集合:用例ID 月份日期年预期输出SR1 -1 15 1912 月份不在有效值域1..12中SR2 6 -1 1912 日期不在有效值域1..31中SR3 6 15 1811 年不在有效值域1812..2012中SR4 -1 -1 1912 月份不在有效值域1..12中日期不在有效值域1..31中SR5 6 -1 1811 日期不在有效值域1..31中年不在有效值域1812..2012中SR6 -1 15 1811 月份不在有效值域1..12中年不在有效值域1812..2012中SR7 -1 -1 1811 月份不在有效值域1..12中日期不在有效值域1..31中年不在有效值域1812..2012中。
软件测试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所示。
等价类划分
黑盒测试
测试用例设计技术
等价类划分方法
等价类划分
是把所有可能的输入数据,即程序的输入域 划分成若干部分(子集),然后从每一个子 集中选取少数具有代表性的数据作为测试用 例.该方法是一种重要的,常用的黑盒测试用 例设计方法.
等价类划分
方法简介
1) 划分等价类:
等价类是指某个输入域的子集合.在该子集 合中,各个输入数据对于揭露程序中的错误都是 等效的.并合理地假定:测试某等价类的代表值就 等于对这一类其它值的测试.
等价类划分
⑤在规定了输入数据必须遵守的规则的情况下,可 确立一个有效等价类(符合规则)和若干个无 效等价类(从不同角度违反规则)。
例,Pascal语言规定 “一个语句必须以分号‘;’结 束”。这时,可以确定一个有效等价类 “以‘;’结束”, 若干个无效等价类 “以‘:’结束”、“以‘,’结束”、 “以‘ ’结束”、“以LF结束”等。
M2={月份:月份<1} M3={月份:月份>12} D2={日期:日期<1} D3={日期:日期>31} Y2={年:年<1812} Y3={年:年>2012}
NextDate 函数等价类测试用例
弱一般等价类测试用例
月份 日期 年
预期输出
6
15 1912 1912年6月16日
强一般等价类测试用例同弱一般等价类测试用 例
(三角形问题的复杂之处在于输入与输出之间的关系 比较复杂。 )
等价类划分
分析题目中给出和隐含的对输入条件的要求: (1)整数 (2)三个数 (3)非零数 (4)正数 (5)两边之和大于第三边 (6)等腰 (7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列 四种情况之一: 1. 如果不满足条件(5),则程序输出为 “ 非三角形 ” 。 2. 如果三条边相等即满足条件(7),则程序输出为 “ 等 边三角形 ” 。 3. 如果只有两条边相等、即满足条件(6),则程序输出 为 “ 等腰三角形 ” 。 4. 如果三条边都不相等,则程序输出为 “ 一般三角 形”。
黑盒测试报告
NextDate函数黑盒测试1、简介1.1编写目的本测试报告为nextdate函数的测试报告,目的在于总结测试阶段的测试以及分析测试结果,通过测试来检测每个功能是否都能正常使用。
预期参考人员包括测试人员、开发人员和需要阅读本报告的老师。
1.2项目背景本项目为软件测试上机作业。
1.3术语等价类划分:把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。
每一类的代表性数据在测试中的作用等价于这一类中的其他值。
1.4参考资料软件测试(第二版)(美)Ron Patton著张小松王钰曹跃译机械工业出版社测试报告模板原创作者:jerry2、测试概要2.1测试程序源代码#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>=1811 && 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;}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;}2.2测试用例设计利用等价类划分法设计测试用例输入条件编号有效等价类编号无效等价类输入年份⑴1812<=年<=2012 ⑺年<1812⑻年>2012输入月份⑵1<=月份<=12 ⑼月<1⑽月>12输入日期⑶1<=日期<=31 ⑾日期<1⑿日期>31输入类型⑷输入为int型⒀除int型外的任意输入输入为闰年⑸输入2月29日⒁输入为闰年2月30日输入为平年⑹输入2月28日⒂输入2月29日2.3测试环境与配置操作系统:windows XPCpu:Intel(R) Core(TM)2 Duo T5470内存:1G2.4测试方法手工利用黑盒测试中的等价类划分法进行测试,主要测试目标为检验函数是否符合题目所给要求。
使用等价类划分法为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
赣南师范大学 数计学院计算机软件测试技术 实验报告专业 班级学号 姓名 成绩软件工程2016 年 月 月实验一黑盒测试用例设计一.实验内容: 1. 三角形问题的边界值分析测试 2. NextDate()函数决策表法测试 二.实验要求:给出测试用例和测试结果 三.实验步骤及结果: (一) (三角形)实验代码(c)#include<stdio.h> #include<stdlib.h> int a=0,b=0,c=0; voidshuru(); voidpanduan(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; } } } voidshuru() { 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); } } voidpanduan(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"); }实验一:输入三个整数 有效等价类 范围:1~100 号码 1 无效等价类 a<1或a>100 b<1或b>100 c<1或c>100 a+b<c a+b=c b+c<a b+c=a a+c<b a+c=b 号码 7 8 9 10构成一般三角 形 a+b>c b+c>a2 311a+c>b412构成等腰三角 (a=b||b=c||a=c) 5 形 && 两 边 之 和 大于第三遍 构成等边三角 a=b=c 6 形覆盖有效等价类的测试用类 a b c 覆盖有效等价类号码3 4 44 4 45 5 41、2、3、4 1、2、3、4、5 1、2、3、4、6覆盖无效等价类的测试用类 a 0 3 3 3 7 2 b 4 0 4 4 2 5 c 5 5 0 7 3 3 覆盖无效等价类号码 7 8 9 10 11 12(二) 有函数 f(x,y,z), 其中 x∈[1900,2100], y∈[1,12], z∈[1,31]的。
等价类划分法
设计测试用例的着眼点
根据产品规格,测试基本功能; 考虑设计一般用户(非专业人员)的使用方案; 考虑设计稀有或特殊的使用方案; 与系统其他组成部分的配合(如 FAX 和上网可能要用到 MODEM,测试中考虑对设备的共享); 考虑特殊情况(如内存和硬件的冲突等); 设计极端情况(如内存泄漏、破坏性测试等); 好的测试用例集能花费最小的代价(人力、物力、财力、 时间)做最好的测试。
设计测试用例的基本准则
测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法的和非 法的、边界的和越界的以及极限的输入数据、操作和环 境设置等。 测试结果的可判定性 即测试执行结果的正确性是可判定的,每一个测试用 例都应有相应的期望结果。 测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是相同的。
例:程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序 中对这4个数值分别进行了处理,则有效等价类为x=1、x=3、 x=7、x=15,无效等价类为x≠1,3,7,15的值的集合。
等价类的划分
(3)按照数值集合划分 在输入条件规定了输入值的集合或 规定了“必须如何”的条件下,可以确定一个有效等价类和 一个无效等价类(该集合有效值之外)。 例:程序输入条件为取值为奇数的整数 x,则有效等价类为x (4)按照限制条件或规则划分 在规定了输入数据必须遵 的值为奇数的整数,无效等价类为 x的值不为奇数的整数。 守的规则或限制条件的情况下,可确定一个有效等价类(符 合规则)和若干个无效等价类(从不同角度违反规则)。 例:程序输入条件为以字符‘a’开头、长度为8的字符串,并且 (5)细分等价类 在确知已划分的等价类中各元素在程序中 字符串不包含‘a’~ ‘z’之外的其它字符,则有效等价类为满 的处理方式不同的情况下,则应再将该等价类进一步划分为 足了上述所有条件的字符串,无效等价类为不以‘a’开头的字 更小的等价类,并建立等价类表。 符串、长度不为8的字符串和包含了‘a’~ ‘z’之外其它字符的 字符串。
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。
习题解答1_v2.0
4
(
13
123
23 233 拒绝(无效) 15
4
45
(2)上述方法设计出的测试用例已经相当完善,无须补充。 8、有一个处理单价为 5 角钱的饮料的自动售货机,相应规格说明如下:
若投入 5 角钱或 1 元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就 送出来。(每次只投入一个硬币,只押下一种饮料的按钮)
15
a.首先为等价类表中的每一 个等价类分别规定一个唯一 的编号。 b.设计一个新的测试用例,使 它能够尽量覆盖尚未覆盖的 有效等价类。重复这个步骤, 直到所有的有效等价类均被 测试用例所覆盖。
@
c.设计一个新的测试用例, 使它仅覆盖一个尚未覆盖的 无效等价类。重复这一步骤, 直到所有的无效等价类均被 测试用例所覆盖。
2060
9
2030 14 5 无法推算
10
[
2 30 无法推算
2000
2、找零钱最佳组合(P47) 假设商店货品价格(R) 都不大于 100 元(且为整数),若顾客付款(P)在 100 元内,现有
一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。 假定此商 店的货币面值只包括:50 元(N50)、10 元(N10)、 5 元(N5)、1 元(N1) 四种。
“……对于功率大于 50 马力的机器或者维修记录不全的或已经运行 10 年以上的 机器应予以优先的维修处理……”。
这里假定“维修记录不全”和“优先维修处理”有严格的定义。 请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。
解答: 根据题目意思,得到本题有三个条件: C1:功率大于 50 马力 C2:维修记录不全 C3:已经运行 10 年以上
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函数
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。
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。
一个例题的分析和思考
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) {
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函数。
Nextday测试用例
Nextday测试⽤例
流程图
程序流程图
程序控制流图
计算其环形复杂度
E=15,N=11,V(G)=E-N+2=14-11+2=5 P=4,v(G)=P+1=4+1=5基本路径法的测试⽤例
(1) 1,2-3-4-12
(2)1,2-3—5-6-12
(3)1,2-3-5-7-8-10-12
(4)1,2-3-5-7-8-9-12
(5)1,2-3-5-7-11-12
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
组合条件覆盖
1.⽇期合适?是标记T1,不是标记F1
2.闰年的2⽉29⽇或者⾮闰年的2⽉29⽇?是标记T2,不是标记F2
3.⼤⽉的31⽇或者⼩⽉的30⽇?是标记T3,不是标记F3
4.下个⽉是否⼤于12⽉?是标记T4,不是标记F4
条件间的可能组合关系
路径法的测试⽤例
1、语句覆盖
2、判定覆盖
也可以让测试⽤例测试路径P2和P3。
相应的两组输⼊数据如下:
3、条件覆盖
对于M:x>3取真时T1,取假时F1;
z<10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3;
y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5
条件:x<=3,z>=10,x!=4,y<=5
5、组合覆盖
1) X>3,Z<10 2)X>3,Z>=10
3)X<=3,Z<10 4)X<=3,Z>=10
5)X=4,Y>5 6)X=4,Y<=5
7)X≠4,Y>5 8)X≠4,Y<=5
6。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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; }
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)) //检查闰年; {
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) {
2011 年 1 月 1 日
黑盒测试
利用等价类划分法设计测试用例
输入条件
编号 有效等价类
输入年份
⑴
1912<=年<=2012
输入月份
⑵
1<=月份<=12
输入日期 输入类型
⑶
1<=日期<=31
⑷
输入为 int 型
编号 ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀
无效等价类
年<1912 年>2012 月<1 月>12 日期<1 日期>31 除 int 型外的任意输 入
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); }
输入数据 2011 年 6 月 15 日 2501 年 6 月 15 日 2011 年 6 月 33 日 2011 年 13 月 15 日 2000 年 2 月 29 日 2001 年 2 月 28 日 2001 年 3 月 31 日 2001 年 4 月 30 日 2004 年 12 月 31 日
白盒测试
பைடு நூலகம் 开始
2 输入年、月、日
3 日期是否合 法?
5 闰年的2月29日或者 非闰年的2月28日
大月的31号或者小月
7
的30号
11
日期加1
4 无效日期
6 明天为3月1日
8 下个月是否大
于12
9
下个月1 号
10 1月1号
12
结束
DD-路径
情况 1. 由一个节点组成,内度=0 情况 2. 由一个节点组成,外度=0 情况 3. 由一个节点组成,内度>=2 或外度>=2 情况 4. 由一个节点组成,内度=1 并且外度=1 情况 5. 长度>=1 的最大链
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:
情况 2 :节点 6、节点 9、节点 10 情况 3 :节点 2、节点 3、节点 5、节点 7、节点 8 情况 4 :节点 4、节点 11
白盒测试对每条 DD-路径测试用例
用例说明 输入正确的年、月、日 输入错误的年、月、日 输入错误的年、月、日 输入错误的年、月、日 输入闰年 2 月 29 日 输入非闰年 2 月 28 日 输入大月 31 日 输入小月 30 日 输入 12 月 31 日
2000 年 3 月 1 日 2001 年 3 月 1 日 2001 年 4 月 1 日 2001 年 5 月 1 日 2005 年 1 月 1 日
判定覆盖
编号 1 2
输入数据
预期结果
实际结果
2000 年 6 月 30 日 2000 年 7 月 1 日 2000 年 6 月 16 日
2010 年 12 月 31 日 2011 年 1 月 1 日
输入为闰年
⑸
输入 2 月 29 日