软件测试实验报告.docx
- 文档编号:8930287
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:22.73KB
软件测试实验报告.docx
《软件测试实验报告.docx》由会员分享,可在线阅读,更多相关《软件测试实验报告.docx(23页珍藏版)》请在冰豆网上搜索。
软件测试实验报告
软件测试技术
实验报告
姓名
黄泓
余鑫淼
王天纯
周彪
学号
黄泓
余鑫淼
王天纯
周彪
班级
软件0907班
指导教师
实验名称
功能性测试方法与结构性测试方法
开设学期
2011–2012第二学期
评定成绩
评定人签字
评定日期
东北大学软件学院
2010年10月
分工:
黄泓:
实验1三种测试方法测试用例的设计;
余鑫淼:
实验1被测程序代码编写;
王天纯:
实验2被测程序编写,画流程图与测试用例设计;
周彪:
实验2JUnit测试程序编写;
实验1 功能性测试方法(4学时)
1.实验目的
掌握功能性测试方法。
2. 实验类型
综合性。
3.实验参考题目
对电话账单来说,春季和秋季的标准时间与夏时制时间的转换会带来有意思的问题。
春季,这种转换发生在(3月末、4月初的)星期日凌晨2:
00时,这时时钟要设置为凌晨3:
00时。
对称的转换通常发生在10月最后一个星期日,时钟要从2:
59:
59调回到2:
00:
00。
请为采用以下费率计算用户的每月通话费:
通话时间<=20分钟时,每分钟收费0.05美元,通话时间不到1分钟时按1分钟计算。
通话时间>20分钟时,收费1.00美元,超过20分钟的部分,每分钟0.10美元,不到1分钟时按1分钟计算。
假设:
通话计费时间从被叫方应答开始计算,到呼叫方挂机时结束。
没有超过20个小时的通话。
4.实验内容
(1)找到可测试的内容,或对实验参考题目进行编码(程序语言自定)。
(2)根据实验内容设计测试用例,要求分别是用边界值分析、等价类测试和决策表测试方法生成测试用例。
(3)执行测试用例,并记录测试结果。
(4)编写实验报告,实验报告的内容包括测试用例的测试结果、程序中存在的bug、以及这三种测试用例生成方法对于揭露程序的错误有什么异同点。
程序初始版代码清单:
importjava.util.*;
publicclassFee{
publicstaticvoidmain(String[]args)
{
intbeginSet=0,endSet=0;
DatebeginDate=null,endDate=null;
intisSpeaking=0;
intset=0;//0是夏时制,1是标准时制
intflag=1;
while(flag==1)
{
if(set==0)
{"现在是夏时制");}
else{"现在是标准时间");}
"请输入您需要的服务");
"1改变时制");
if(isSpeaking==0)
{"2开始通话");}
else
{"2结束通话");}
Scannerscanner=newScanner(System.in);
inti=scanner.nextInt();
switch(i)
{
case1:
if(set==0){set=1;}
elseif(set==1){set=0;}
break;
case2:
if(isSpeaking==0)
{
beginDate=newDate();
beginSet=set;
"开始通话时间是"+beginDate);
isSpeaking=1;
}
elseif(isSpeaking==1)
{
endDate=newDate();
endSet=set;
"结束通话时间是"+endDate);
doubleminute=(endDate.getTime()-beginDate.getTime())/(60*1000);
if(beginSet==endSet)
{
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
isSpeaking=0;
}else{
if(beginSet==1&&endSet==0)
{minute-=60;
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
}
if(beginSet==0&&endSet==1)
{
minute+=60;
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
}
isSpeaking=0;
}
}
break;
}
}
}
}
边界值分析:
输入:
通话时间,通话日期
通话时间={19’,19’59”,20’,20’59”,21’}
通话日期:
1月15日(标准时间)
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
6月15日(夏时制)
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
通话时间
通话日期
预计输出(美元)
12:
00-12:
20
1月15日(标准时间)
1
12:
00-12:
20
6月15日(夏时制)
1
1:
50-3:
10
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
1
2:
50-2:
10
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
1
12:
00-12:
19
1月15日(标准时间)
0.95
12:
00-12:
19:
59
1月15日(标准时间)
1
12:
00-12:
20:
00
1月15日(标准时间)
1
12:
00-12:
20:
59
1月15日(标准时间)
1.1
12:
00-12:
21
1月15日(标准时间)
1.1
12:
00-12:
19
6月15日(夏时制)
0.95
12:
00-12:
19:
59
6月15日(夏时制)
1
12:
00-12:
20:
00
6月15日(夏时制)
1
12:
00-12:
20:
59
6月15日(夏时制)
1.1
12:
00-12:
21
6月15日(夏时制)
1.1
等价类划分:
通话时间={小于20分钟,等于20分钟,大于20分钟}
通话日期={标准时间,夏时制}
测试用例:
通话时间
通话日期
预计输出
10min
1月15日
0.5
20min
1月15日
1
30min
1月15日
2
10min
6月15日
0.5
20min
6月15日
1
30min
6月15日
2
测试时制转换时能否正确运行:
通话时间
通话日期
预计输出
1:
50-3:
10
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
1
2:
50-2:
10
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
1
测试未满一分钟是否按照一分钟计算:
通话时间
通话日期
预计输出
19min59sec
1月15日
1
19min59sec
6月15日
1
1:
50-3:
09:
59
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
1
2:
50-2:
09:
59
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
1
决策表:
C1通话时间:
T1小于20min,T2等于20min,T3大于20min,T419min59sec
C2通话日期:
D1标准时间,D2夏时制,D3标准时间转夏时制,D4夏时制转标准时间
A1:
每分钟0.05美元
A2:
一美元加上每分钟0.1美元
C1
T1
T2
T3
T4
T1
T2
T3
T4
T1
T2
T3
T4
T1
T2
T3
T4
C2
D1
D1
D1
D1
D2
D2
D2
D2
D3
D3
D3
D3
D4
D4
D4
D4
A1
*
*
*
*
*
*
*
*
*
*
*
*
A2
*
*
*
*
编号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
测试用例:
编号
通话时间
通话日期
预计输出
1
2:
00-2:
10
1月15日
0.5
2
2:
00-2:
20
1月15日
1
3
2:
00-2:
30
1月15日
2
4
2:
00-2:
19:
59
1月15日
1
5
2:
00-2:
10
6月15日
0.5
6
2:
00-2:
20
6月15日
1
7
2:
00-2:
30
6月15日
2
8
2:
00-2:
19:
59
6月15日
1
9
1:
55-3:
05
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
0.5
10
1:
50-3:
10
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
1
11
1:
50-3:
20
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
2
12
1:
50-3:
09:
59
3月底4月初的一个星期日凌晨2:
00(标准时间转为夏时制)
1
13
2:
55-2:
05
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
0.5
14
2:
50-2:
10
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
1
15
2:
50-2:
20
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
2
16
2:
50-2:
09:
59
10月最后一个星期天(夏时制转成标准时间凌晨,2:
00)
1
测试出的bug:
1初始版程序中计算两个通话时间的间隔时有问题,没实现“不满1分钟按1分钟计算”
于是将代码:
minute=(endDate.getTime()-beginDate.getTime())/(60*1000);
改成:
minute=Math.ceil((endDate.getTime()-beginDate.getTime())/(60*1000));
向上取整
2初始版程序没有对20小时进行限制;
3初始版程序无法退出。
修改后的程序为:
importjava.util.*;
publicclassFee{
publicstaticvoidmain(String[]args)
{
intbeginSet=0,endSet=0;
DatebeginDate=null,endDate=null;
intisSpeaking=0;
intset=0;//0是夏时制,1是标准时制
intflag=1;
while(flag==1)
{
if(set==0)
{"现在是夏时制");}
else{"现在是标准时间");}
"请输入您需要的服务");
"1改变时制");
if(isSpeaking==0)
{"2开始通话");}
else
{"2结束通话");}
"3退出程序");
Scannerscanner=newScanner(System.in);
inti=scanner.nextInt();
switch(i)
{
case1:
if(set==0){set=1;}
elseif(set==1){set=0;}
break;
case2:
if(isSpeaking==0)
{
beginDate=newDate();
beginSet=set;
"开始通话时间是"+beginDate);
isSpeaking=1;
}
elseif(isSpeaking==1)
{
endDate=newDate();
endSet=set;
"结束通话时间是"+endDate);
doubleminute=Math.ceil((endDate.getTime()-beginDate.getTime())/(60*1000));
if(minute>20*60)
{"超过20小时了!
");}
if(beginSet==endSet)
{
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
isSpeaking=0;
}else{
if(beginSet==1&&endSet==0)
{minute-=60;
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
}
if(beginSet==0&&endSet==1)
{
minute+=60;
if(minute<=20)
{"通话费是"+minute*0.05+"美元");
}else
{
"通话费是"+((minute-20)*0.1+1)+"美元");
}
}
isSpeaking=0;
}
}
break;
case3:
flag=0;
"感谢使用");
break;
}
}
}
}
三种测试方法的不同点:
边界值分析,基于定义域,不识别数据或逻辑关系,生成的测试用例数比较多;等价类技术考虑数据依赖关系,标识等价类时需要更多的判断和技巧,等价类标识出以后的处理也是机械的;决策表技术也要考虑数据的逻辑依赖关系,它的考虑较为完备,能够正确反映输入的依赖关系。
三种测试方法的相同点:
边界值分析,等价类划分和决策表技术都属于黑盒测试,都能一定程度上测试出软件的缺陷
实验2 结构性测试方法(4学时)
1. 实验目的
(1)学习使用自动化测试工具Junit 。
(2)掌握逻辑覆盖测试。
2. 实验类型
综合性。
3. 实验参考题目
一个假想的保险金计算程序,根据两个因素计算半年保险金:
投保人的年龄和驾驶历史记录:
保险金 = 基本保险费率×年龄系数 - 安全驾驶折扣
年龄系数是投保人年龄的函数,如果投保人驾驶执照上的当前点数(根据交通违规次数确定)低于与年龄有关的门限,则给予安全驾驶折扣。
书面保险政策的驾驶人年龄范围为从16-100岁,如果投保人有12点,则驾驶入的执照就会被吊销(因此不需要保险)。
基本保险费率随时间变化,对于这个例子,是每半年500美元。
具体情况如表2.1所示。
表2.1 保险金计算情况分类
年龄范围
年龄系数
门限点数
安全驾驶折扣
16≤年龄<25
2.8
1
50
25≤年龄<35
1.8
3
50
35≤年龄<45
1.0
5
100
45≤年龄<60
0.8
7
150
60≤年龄<100
1.5
5
200
4. 实验内容
(1)使用各种逻辑覆盖方法生成测试用例。
(2)使用JUNIT测试工具进行TDD开发。
(3)执行测试用例,并记录测试结果。
(4)修改BUG,并进行回归测试直到测试用例全部通过。
(5)编写实验报告,实验报告的内容包括测试用例的测试结果、程序中存在的bug、以及这几种测试用例生成方法的异同点。
王天纯:
intage,num,discount=0;①
scanf("%d%d",&age,&num);②
if(age>=100){;}③
elseif(age>=60)④
{
if(num<5)⑤
discount=550;⑥
}
elseif(age>=45)⑦
{
if(num<7)⑧
discount=250;⑨
}
elseif(age>=35)⑩
{
if(num<5)⑪
discount=400;⑫
}
elseif(age>=25)⑬
{
if(num<3)⑭
discount=850;⑮
}
elseif(age>=16){⑯
if(num<1)⑰
discount=1350;⑱
}
printf("折扣=%d\n",discount);⑲
1.语句覆盖
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
20
0
1350
是
3
30
1
850
是
4
40
0
400
是
5
50
5
250
是
6
80
4
550
是
2.判断覆盖
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
101
0
0
是
2
20
0
1350
是
3
20
1
0
是
4
30
2
850
是
5
30
3
0
是
6
40
4
400
是
7
40
5
0
是
8
50
6
250
是
9
50
7
0
是
10
70
4
550
是
11
70
6
0
是
3.条件覆盖
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
101
0
0
是
2
20
0
1350
是
3
20
1
0
是
4
30
2
850
是
5
30
3
0
是
6
40
4
400
是
7
40
5
0
是
8
50
6
250
是
9
50
7
0
是
10
70
4
550
是
11
70
6
0
是
4.条件判断覆盖
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
101
0
0
是
2
20
0
1350
是
3
20
1
0
是
4
30
2
850
是
5
30
3
0
是
6
40
4
400
是
7
40
5
0
是
8
50
6
250
是
9
50
7
0
是
10
70
4
550
是
11
70
6
0
是
5.条件组合覆盖
Defineage>=100trueasA1,falseas!
A1
Defineage>=60trueasA2,falseas!
A2
Defineage>=45trueasA3,falseas!
A3
Defineage>=35trueasA4,falseas!
A4
Defineage>=25trueasA5,falseas!
A5
Defineage>=16trueasA6,falseas!
A6
Definenum<5trueasB1,falseas!
B1
Definenum<7trueasB2,falseas!
B2
Definenum<3trueasB3,falseas!
B3
Definenum<1trueasB4,falseas!
B4
条件组合:
!
A1!
A2!
A3!
A4!
A5!
A6B1B2B3B4
!
A1!
A2!
A3!
A4!
A5A6B1B2B3B4
!
A1!
A2!
A3!
A4A5A6B1B2B3!
B4
!
A1!
A2!
A3A4A5A6B1B2B3!
B4
!
A1!
A2A3A4A5A6!
B1B2!
B3!
B4
!
A1A2A3A4A5A6B1B2!
B3!
B4
A1A2A3A4A5A6!
B1!
B2!
B3!
B4
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
20
0
1350
是
3
30
1
850
是
4
40
1
400
是
5
50
6
250
是
6
70
4
550
是
7
101
7
0
是
6.路径覆盖
用例ID
年龄
违规次数
保险金
是否通过
备注
1
15
0
0
是
2
101
0
0
是
2
20
0
1350
是
3
20
1
0
是
4
30
2
850
是
5
30
3
0
是
6
40
4
400
是
7
40
5
0
是
8
50
6
250
是
9
50
7
0
是
10
70
4
550
是
11
70
6
0
是
周彪:
Junit测试:
Main.java
import;
publicclassM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 实验 报告