";
测试人
修正人
确认人
修正日期
年月日
缺陷编号
3
用例编号
2~4
缺陷类型
严重级别
严重
优先级
优先
缺陷状态
New
测试阶段
单元□集成□系统□验收□其它()
可重现性
是□否
BUG原因
□需求分析
基本设计□详细设计□设计式样理解□编程□数据库设计
□环境配置□其它()
缺陷描述
输入正确的三个数,不能正确判断三角形的类型
预期结果
等腰三角形
重现步骤
备注
在VC++6.0中运行源程序
输入数据如图所以:
以下部分由BUG修改人填写
缺陷修改描述
将以下代码:
if(a==b&&b==c)cout<<"是等边三角形!
";
改为:
if((a==b&&b!
=c)||(a==c&&c!
=b)||(b==c&&a!
=c))cout<<"是等腰三角形!
";
测试人
修正人
确认人
修正日期
年月日
缺陷编号
4
用例编号
6~12,20~39
缺陷类型
严重级别
严重
优先级
优先
缺陷状态
New
测试阶段
单元□集成□系统□验收□其它()
可重现性
是□否
BUG原因
□需求分析
基本设计□详细设计□设计式样理解□编程□数据库设计
□环境配置□其它()
缺陷描述
输入无效数据,不能判定能否构成三角形
预期结果
给出提示判断是否为有效的输入
重现步骤
备注
在VC++6.0中运行源程序
输入数据如图所示:
以下部分由BUG修改人填写
缺陷修改描述
将以下代码:
if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!
";
改为:
if((a>0&&a<=100)&&(b>0&&b<=100)&&(c>0&&c<=100))
{
if(a!
=b&&b!
=c&&c!
=a)cout<<"一般三角形!
";
}
测试人
修正人
确认人
修正日期
年月日
缺陷编号
5
用例编号
40~45
缺陷类型
严重级别
严重
优先级
优先
缺陷状态
New
测试阶段
单元□集成□系统□验收□其它()
可重现性
是□否
BUG原因
□需求分析
基本设计□详细设计□设计式样理解□编程□数据库设计
□环境配置□其它()
缺陷描述
输入不能构成三角形的有效数据,不能判定是否为三角形
预期结果
不能构成三角形
重现步骤
备注
在VC++6.0中运行源程序
输入数据如图所示:
以下部分由BUG修改人填写
缺陷修改描述
将以下代码:
if(a<>b&&b<>c&&c<>a)cout<<"一般三角形!
";
改为:
if((a>0&&a<=100)&&(b>0&&b<=100)&&(c>0&&c<=100))
{
if((a!
=b&&b!
=c&&c!
=a)&&(a+b>c&&a+c>b&&b+c>a))cout<<"一般三角形!
";
}
测试人
修正人
确认人
修正日期
年月日
缺陷编号
6
用例编号
13~19
缺陷类型
严重级别
严重
优先级
优先
缺陷状态
New
测试阶段
单元□集成□系统□验收□其它()
可重现性
是□否
BUG原因
□需求分析
基本设计□详细设计□设计式样理解□编程□数据库设计
□环境配置□其它()
缺陷描述
只输入三角形的一边或两边,程序进入等待的状态,没有提示。
预期结果
给出提示判断是否为有效的输入
重现步骤
备注
在VC++6.0中运行源程序
输入数据如图所示:
以下部分由BUG修改人填写
缺陷修改描述
测试人
修正人
确认人
修正日期
年月日
2、某城市电话号码由三部分组成,分别是:
1)地区码:
以0开头的三位或者四位数字(包括0);
2)电话号码:
以非0、非1开头的七位或者八位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
要求:
(1)请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,给出测试用例表。
(2)如果所生成的测试用例不够全面,请考虑用别的测试方法生成一些补充的测试用例。
解:
(1)采用等阶类划分法,因为等阶类划分把输入域分成若干部分,然后从每个部分选取少数代表性的数据当做测试用例。
(2)步骤:
划分等阶类,列出等阶类表,确定测试用例。
等价类表:
输入条件
有效等价类
号码
无效等价类
号码
地区码
0
以0开头的3位数
以0开头的4位数
1
2
3
非数字字符
非0开头的3位数
非0开头的4位数
0开头且少于3位数字
0开头且多于4位数字
非0开头且少于3位数
非0开头且多于4位数
6
7
8
9
10
11
12
电话号码
非0、非1开头的7位数
非0、非1开头的8位数
4
5
有非数字字符
少于7位数
多于8位数
起始位为0
起始位为1
13
14
15
16
17
测试用例表:
用例ID
测试数据
期望结果
覆盖等价类
地区码
电话号码
1
0
2235688
接受(有效)
1,4
2
0
22347789
接受(有效)
1,5
3
087
2235688
接受(有效)
2,4
4
087
22347789
接受(有效)
2,5
5
0234
2235688
接受(有效)
3,4
6
0234
22347789
接受(有效)
3,5
7
04A3
2235688
拒绝(无效)
6
8
122
2235688
拒绝(无效)
7
9
1223
2235688
拒绝(无效)
8
10
02
2235688
拒绝(无效)
9
11
02234
2235688
拒绝(无效)
10
12
12
2235688
拒绝(无效)
11
13
12345
2235688
拒绝(无效)
12
14
078
2334AA4
拒绝(无效)
13
15
078
234567
拒绝(无效)
14
16
078
723467890
拒绝(无效)
15
17
078
0234455
拒绝(无效)
16
18
078
1234546
拒绝(无效)
17
3、请尝试编写NextDate函数,考虑闰年,2月等特殊情况,并划分等价类,按强一般等价类划分法设计测试用例,并进行测试,要求给出部分测试用例截图,撰写测试报告(模版见附录3)。
测试报告
一、实验目的
1.掌握等价类划分的方法
2.掌握按等价类方法设计测试用例
二、实验内容
2.1实验问题描述:
请尝试编写NextDate函数,考虑闰年,2月等特殊情况,并划分等价类,按强一般等价类划分法设计测试用例,并进行测试,要求给出部分测试用例截图
2.2测试环境与配置:
在xp系统下运行VC++6.0的Win32控制台应用程序,执行c++源程序。
2.3源程序:
2.1测试程序源代码
#include
usingnamespacestd;
voidNextDate(intyear,intmonth,intday);
voidmain()
{
intyear=0,month=0,day=0;
NextDate(year,month,day);
}
voidNextDate(intyear,intmonth,intday)
{
cout<<"请输入年份:
"<cin>>year;
while(!
(year>=1811&&year<=2013))
{
cout<<"年份超过界限,请重新输入"<cin>>year;
}
cout<<"请输入月份:
"<cin>>month;
while(month>12||month<1)
{
cout<<"月份输入有误,请重新输入"<cin>>month;
}
cout<<"请输入日期:
"<cin>>day;
while(day>31||day<1)
{
cout<<"日期输入有误,请重新输入"<cin>>day;
}
if((year%4==0&&year%100!
=0)||(year%400==0))//检查闰年;
{
inti=0;
i=day-29;
while(month==2&&i>0)
{
cout<<"本月是闰月,请在1-29之间从新输入日期"<cin>>day;
}
if(month==2&&day==29)
{
month=3;
day=1;
}
elseday++;
}
elseday++;
//月底计算;
switch(month)
{
case1:
case3:
case5:
case7:
case8:
case10:
if(day==32)
{
month++;
day=1;
cout<<"明天是:
"<}
break;
case2:
if(day==29)
{
month=3;
day=1;
}
break;
case4:
case6:
case9:
case11:
if(day==31)
{
month++;
day=1;
cout<<"明天是:
"<}
break;
case12:
if(day==32)
{
year++;
month=1;
day=1;
cout<<"明天是:
"<}
break;
}
cout<<"明天是:
"<}
2..4程序思路说明:
1、判断输入年是否在1812——2012范围内。
2、判断输入月是否在1——12范围内。
3、判断输入日期是否在1——31范围内。
4、考虑年份是否为闰年,月份是否为2月。
三、测试方法
3.1等价类划分
有效等价类:
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不是闰年}
无效等价类:
M5={月份:
月份<1}
M6={月份:
月份>12}
D6={日期.:
日期<1}
D7={日期:
日期>31}
Y3={年:
年<1812}
Y4={年:
年>2012}
3.2测试用例设计
用例ID
月份
日期
年
预期输出
1
4
10
2001
2001年4月11日
2
4
10
2004
2004年4月11日
3
4
28
2001
2001年4月29日
4
4
28
2004
2004年4月29日
5
4
29
2001
2001年4月30日
6
4
29
2004
2004年4月30日
7
4
30
2001
2001年5月1日
8
4
30
2004
2004年5月1日
9
4
31
2001
无效输入
10
4
31
2004
无效输入
11
1
10
2001
2001年1月11日
12
1
10
2004
2004年1月11日
13
1
28
2001
2001年1月29日
14
1
28
2004
2004年1月29日
15
1
29
2001
2001年1月30日
16
1
29
2004
2004年1月30日
17
1
30
2001
2001年1月31日
18
1
30
2004
2004年1月31日
19
1
31
2001
2001年2月1日
20
1
31
2004
2004年2月1日
21
12
10
2001
2001年12月11日
22
12
10
2004
2004年12月11日
23
12
28
2001
2001年12月29日
24
12
28
2004
2004年12月29日
25
12
29
2001
2001年12月30日
26
12
29
2004
2004年12月30日
27
12
30
2001
2001年12月31日
28
12
30
2004
2004年12月31日
29
12
31
2001
2002年1月1日
30
12
31
2004
2005年1月1日
31
2
10
2001
2001年2月11日
32
2
10
2004
2004年2月11日
33
2
28
2001
2001年3月1日
34
2
28
2004
2004年2月29日
35
2
29
2001
无效输入
36
2
29
2004
2004年3月1日
37
2
30
2001
无效输入
38
2
30
2004
无效输入
39
2
31
2001
无效输入
40
2
31
2004
无效输入
四、测试结果及缺陷分析
4.1测试执行情况与记录
测试用例编号
输入
输