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函数的等价类测试用例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函数测试用例详解

软件测试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所示。

等价类划分

等价类划分

黑盒测试
测试用例设计技术
等价类划分方法
等价类划分
是把所有可能的输入数据,即程序的输入域 划分成若干部分(子集),然后从每一个子 集中选取少数具有代表性的数据作为测试用 例.该方法是一种重要的,常用的黑盒测试用 例设计方法.
等价类划分
方法简介
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函数设计测试用例

使用等价类划分法为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

赣南师范大学 数计学院计算机软件测试技术 实验报告专业 班级学号 姓名 成绩软件工程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]的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 日
相关文档
最新文档