软件测试实验报告.doc
《软件测试实验报告.doc》由会员分享,可在线阅读,更多相关《软件测试实验报告.doc(24页珍藏版)》请在冰点文库上搜索。
桂林航天工业学院
课程设计报告
课程名称:
软件测试
专业:
软件技术
学号:
201102520xxx
姓名:
指导教师:
实验一黑盒测试
一.实验目的
(1)能熟练应用黑盒测试技术进行测试用例设计;
(2)对测试用例进行优化设计;
二.实验内容
1.三角形问题的边界值分析测试用例
在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。
在此,我们将三角形每边边长的取范围值设值为[1,100]。
在三角形问题中,有四种可能的输出:
等边三角形、等腰三角形、一般三角形和非三角形。
利用这些信息能够确定下列输出(值域)等价类。
R1={:
边为a,b,c的等边三角形}
R2={:
边为a,b,c的等腰三角形}
R3={:
边为a,b,c的一般三角形}
R4={:
边为a,b,c不能组成三角形}
2.找零钱最佳组合
假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。
假定此商店的货币面值只包括:
50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。
请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。
三、程序代码
1.三角形问题程序。
#include
intmain(void){
inta,b,c;//定义三个整数a,b,c
printf("请输入1到100的三个整数:
");
scanf("%d%d%d",&a,&b,&c);
if((a>=1&&a<=100)&&(b>=1&&b<=100)&&(b>=1&&b<=100))//判断取值范围
{
if((a+b>c)&&(a+c>b)&&(b+c>a))//判断是否构成三角形
{
if(a==b&&b==c)
printf("等边三角形\n");
elseif(a==b||a==c||b==c)
printf("等腰三角形\n");
else
printf("一般三角形\n");
}
else
printf("不能组成三角形\n");
}
else
printf("输入1到100的三个整数!
\n");
return0;
}
2.找零钱最佳组合问题程序。
#include"stdio.h"
voidcalc(int);//计算找钱
intmain(void){
intR,P;
while
(1){
printf("请输入商品的价格:
");
scanf("%d",&R);
if(0 {
printf("请输入支付的金额:
");
scanf("%d",&P);
if(0
{
R=P-R;
if(R<0)
printf("不够钱支付!
\n");
elseif(R==0)
printf("不用找零钱!
\n");
else
printf("\n");
calc(R);
printf("\n");
}
else
printf("支付金额大于0不大于100!
\n");
}
else
printf("价格应大于0不大于100!
\n");
}
return0;
}
voidcalc(intR)
{
intN50,N10,N5,N1;
N50=N10=N5=N1=0;
printf("找零钱:
¥%d\n",R);
while(R-50>=0){
N50+=1;
R-=50;
}
while(R-10>=0){
N10+=1;
R-=10;
}
while(R-5>=0){
N5+=1;
R-=5;
}
while(R-1>=0){
N1+=1;
R-=1;
}
printf("............\n");
printf("¥50x%d\n",N50);
printf("¥10x%d\n",N10);
printf("¥5x%d\n",N5);
printf("¥1x%d\n",N1);
printf("............\n");
printf("Total:
%d\n",N50+N10+N5+N1);
}
四、写出划分的等价类
1.三角形问题划分等价类
有效等价类
① a,b,c为整数。
② a,b,c的取值范围在[1,100]。
③ 任意两边的和大于第三边。
④ 三条边相等。
⑤ 任意两边相等。
⑥ 一般三角形。
无效等价类
⑦ a,b,c的取值范围不在[1,100]。
⑧ 任意两边的和小于第三边。
⑨ 不是整数(字母、字符、小数)
2.找零钱最佳组合问题划分等价类
有效等价类
① 0② 0
③ 0≤N1≤4
④ 0≤N5≤1
⑤ 0≤N10≤4
⑥ 0≤N50≤1
无效等价类
⑦ R≤0
⑧ R>100
⑨ P≤0
⑩ P>100
五、根据等价类设计的测试用例
三角形问题等价类测试用例:
用例编号
输入的数据
预期输出
实际输出
覆盖的等价类
a
b
c
1
50
50
50
等边三角形
等边三角形
③④
2
50
50
2
等腰三角形
等腰三角形
①②③⑤
3
3
4
5
一般三角形
一般三角形
①②⑥
4
101
2
1
输入1到100的三个整数
输入1到100的三个整数
⑦
5
3
2
1
不能组成三角形
不能组成三角形
①②⑧
6
z
x
y
输入1到100的三个整数
输入1到100的三个整数
⑨
7
!
*
@
输入1到100的三个整数
输入1到100的三个整数
⑨
8
0.1
0.8
0.3
输入1到100的三个整数
输入1到100的三个整数
⑨
找零钱最佳组合问题等价类测试用例:
用例编号
输入的数据
预期输出
实际输出
覆盖的等价类
R
P
1
1
2
N1=1
N1=1
①②③
2
5
10
N5=1
N5=1
①②④
3
10
50
N10=4
N10=4
①②⑤
4
50
100
N50=1
N50=1
①②⑥
5
4
10
N5=1,N1=1
N5=1,N1=1
①②③④
6
32
50
N10=1,N5=1,N1=3
N10=1,N5=1,N1=3
①②③④⑤
7
34
100
N50=1,N10=1,N5=1,N1=1
N50=1,N10=1,N5=1,N1=1
①②③④⑤⑥
8
0
100
价格应大于0不大于100
价格应大于0不大于100
②⑦
9
3
2
不够钱支付
不够钱支付
①②
10
5
5
不用找零钱
不用找零钱
①②
11
100
0
支付金额大于0不大于100
支付金额大于0不大于100
①⑨
12
101
100
价格应大于0不大于100
价格应大于0不大于100
②⑧
13
100
101
支付金额大于0不大于100
支付金额大于0不大于100
①⑩
六、根据边界值分析法设计测试用例
1.三角形问题边界值分析法测试用例:
根据输入值分析边界值:
① 边界值为0
② 边界值为1
③ 边界值为2
④ 边界值为99
⑤ 边界值为100
⑥ 边界值为101
用例编号
输入的数据
预期输出
实际输出
覆盖的边界值
a
b
c
1
0
50
50
输入1到100的三个整数
输入1到100的三个整数
①
2
1
50
50
等腰三角形
等腰三角形
②
3
2
50
50
等腰三角形
等腰三角形
③
4
99
50
50
等腰三角形
等腰三角形
④
5
100
50
50
等腰三角形
等腰三角形
⑤
6
101
50
50
输入1到100的三个整数
输入1到100的三个整数
⑥
7
50
0
50
输入1到100的三个整数
输入1到100的三个整数
①
8
50
1
50
等腰三角形
等腰三角形
②
9
50
2
50
等腰三角形
等腰三角形
③
10
50
99
50
等腰三角形
等腰三角形
④
11
100
50
50
等腰三角形
等腰三角形
⑤
12
50
101
50
输入1到100的三个整数
输入1到100的三个整数
⑥
13
50
50
0
输入1到100的三个整数
输入1到100的三个整数
①
14
50
50
1
等腰三角形
等腰三角形
②
15
50
50
2
等腰三角形
等腰三角形
③
16
50
50
99
等腰三角形
等腰三角形
④
17
50
50
100
等腰三角形
等腰三角形
⑤
18
50
50
101
输入1到100的三个整数
输入1到100的三个整数
⑥
2.找零钱最佳组合问题边界值分析法测试用例:
根据输入值分析边界值:
a)R的边界值为0
b)R的边界值为1
c)R的边界值为-1
d)R的边界值为99
e)R的边界值为100
f)R的边界值为101
g)P的边界值为0
h)P的边界值为1
i)P的边界值为-1
j)P的边界值为99
k)P的边界值为100
l)P的边界值为101
根据输出值分析边界值:
① 找50元1张
② 找10元4张
③ 找10元3张
④ 找10元2张
⑤ 找10元1张
⑥ 找5元1张
⑦ 找1元4张
⑧ 找1元3张
⑨ 找1元2张
⑩ 找1元1张
用例编号
输入的数据
预期输出
实际输出
覆盖的边界值
R
P
1
101
50
价格应大于0不大于100
价格应大于0不大于100
f
2
0
50
价格应大于0不大于100
价格应大于0不大于100
a
3
-1
50
价格应大于0不大于100
价格应大于0不大于100
c
4
50
101
支付金额大于0不大于100
支付金额大于0不大于100
l
5
50
0
支付金额大于0不大于100
支付金额大于0不大于100
g
6
50
-1
支付金额大于0不大于100
支付金额大于0不大于100
i
7
100
50
不够钱支付
不够钱支付
e
8
96
100
N1=4
N1=4
k⑦
9
95
100
N5=1
N5=1
k⑥
10
91
100
N5=1,N1=4
N5=1,N1=4
k⑥⑦
11
90
100
N10=1
N10=1
k⑤
12
51
100
N10=4,N5=1,N1=4
N10=4,N5=1,N1=1
k②⑥⑦
13
50
100
N50=1
N50=1
k①
14
1
2
N1=1
N1=1
b⑩
15
1
3
N1=2
N1=2
b⑨
16
97
100
N1=3
N1=3
k⑧
17
80
100
N10=2
N10=2
k④
18
70
100
N10=3
N10=3
k③
19
60
100
N10=4
N10=4
k②
20
2
1
不够钱支付
不够钱支付
h
21
99
50
不够钱支付
不够钱支付
d
黑盒测试实验二
一.实验目的
(1)能熟练应用黑盒测试技术进行测试用例设计;
(2)对测试用例进行优化设计;
二.实验内容
1.NextDate函数的边界值分析测试用例
程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:
1≤month≤12、1≤day≤31、1900≤year≤2050。
),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。
例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。
请用等价类测试和边界测试法设计测试用例。
三、程序代码
#include"stdio.h"
intmain(void){
intyear;
intmonth;
intday;
printf("请输入年份:
");
scanf("%d",&year);
while(!
(year>=1900&&year<=2050))//判断年是否有效
{
printf("输入的年份不正确!
\n");
return;
}
printf("请输入月份:
");
scanf("%d",&month);
while(month>12||month<1)//判断月是否有效
{
printf("月份输入有误,请重新输入!
\n");
return;
}
printf("请输入日期号:
");
scanf("%d",&day);
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//判断31天
{
while(day>31||day<1)//判断日否有效
{
printf("日期输入有误,请重新输入!
\n");
return;
}
}
if(month==4||month==6||month==9||month==11)//判断30天
{
while(day>30||day<1)//判断日否有效
{
printf("日期输入有误,请重新输入!
\n");
return;
}
}
if((year%4==0&&year%100!
=0)||(year%400==0))//检查闰年;
{
if(month==2)
{
if(day>29)
{
printf("本月是闰月,请在1-29之间重新输入日期!
\n");
return;
}
else
{
if(day==29)
{
day=1;
}
elseday++;
}
}
}
else
{
if(month==2)
{
if(day>28)
{
printf("本月是闰月,请在1-28之间从新输入日期!
\n");
return;
}
else
{
if(day==28)
{
day=1;
}
elseday++;
}
}
}
switch(month)//计算当前日期的下一天
{
case1:
case3:
case5:
case7:
case8:
case10:
if(day==31)
{
month++;
day=1;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
else{
day++;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
case2:
if(day==1)
{
month++;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
else{
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
case4:
case6:
case9:
case11:
if(day==30)
{
month++;
day=1;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
else{
day++;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
case12:
if(day==31)
{
year++;
month=1;
day=1;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
else{
day++;
printf("明天是:
%d/%d/%d\n",year,month,day);
break;
}
}
}
四、写出划分的等价类
输入条件
编号
有效等价类
编号
无效等价类
输入年份
⑴
1900<=year<=2050
⑺
year<1900
⑻
year>2050
输入月份
⑵
1<=month<=12
⑼
month<1
⑽
month>12
输入日期
⑶
1<=day<=31
⑾
day<1
⑿
day>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
100/1/23
输入的年份不正确!
输入的年份不正确!
⑺
5
2300/3/2
输入的年份不正确入!
输入的年份不正确!
⑻
6
1912/0/3
月份输入有误,请重新输入!
月份输入有误,请重新输入!
⑼
7
1927/90/3
月份输入有误,请重新输入!
月份输入有误,请重新输入!
⑽
8
1956/3/-21
日期输入有误,请重新输入!
日期输入有误,请重新输入!
⑾
9
1972/3/43
日期输入有误,请重新输入!
日期输入有误,请重新输入!
⑿
10
Dasd@#¥%asdasdasd&……%ffgwgrwgrerhsxcvxfgdfg
程序进入死循环
程序进入死循环
⒀
11
2000/2/30
本月是闰月,请在1-29之间从新输入日期!
本月是闰月,请在1-29之间从新输入日期!
⒁
12
2001/2/29
本月是闰月,请在1-28之间从新输入日期!
本月是闰月,请在1-28之间从新输入日期!
⒂
六、边界值分析法测试用例:
a.month=0
b.month=1
c.month=2
d.month=11
e.month=12
f.month=13
g.day=0
h.day=1
i.day=2
j.day=30
k.day=31
l.day=32
m.year=1899
n.year=1900
o.year=1901
p.year=2049
q.year=2050
r.year=2051
用例编号
输入的数据
预期输出
实际输出
覆盖的边界值
month
day
year
1
6
15
1899
输入的年份不正确!
输入的年份不正确!
m
2
6
15
1900
1900.6.16
1900.6.16
n
3
6
15
1901
1901.6.16
1901.6.16
o
4
6
15
2049
1975.6.16
1975.6.16
p
5
6
15
2050
2049.6.16
2049.6.16
q
6
6
15
2051
输入的年份不正确!
输入的年份不正确!
r
7
6
0
1975
日期输入有误,请重新输入!
日期输入有误,请重新输入!
g
8
6
1
1975
1975.6.2
1975.6.2
h
9
6
2
1975
1975.6.3
1975.6.3
i
10
6
30
1975
1975.7.1
1975.7.1
j
11