软件测试实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:
《软件测试技术》
实验报告与习题册2014 / 2015 学年第2学期系别计算机学院
专业
班级一班
姓名
指导教师
实验时间:实验地点:实验学时:
实验时间:实验地点:实验学时:
目录
项目成绩批改时间实验一基于白盒测试的用例设
计与验证(一)
实验二基于白盒测试的用例设
计与验证(二)
实验三基于黑盒测试的用例设
计与验证(一)
实验四基于黑盒测试的用例设
计与验证(二)
实验五JUnit的安装与使用
实验六LoadRunner的使用
实验七WinRunner的使用
实验时间:实验地点:实验学时:
实验一:基于白盒测试的用例设计与验证
(一)
一.实验目的
(1)熟悉Eclipse开发环境
(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发
(3)熟悉白盒测试基本原理
(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。
二.实验内容
(1)选择一门语言,完成指定的单元程序开发。
#include<stdio.h>
void main()
{
int m,n,p,q;
printf("please input m,n,p,q:\n");
scanf("%d,%d,%d,%d",&m,&n,&p,&q);
if(m>0&&n<6)
{
m=n+3;
n=n*2;
}
if(p>5||q<0)
{
p=2*q+5;
q++;
}
printf("输出的四个数是:%d,%d,%d,%d\n",m,n,p,q);
实验时间: 实验地点: 实验学时:
return ; }
(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理设计相应的测试用例。
(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。
三.程序流程图
m > 0 AND n < 6
m = n + 3n = n * 2
p > 5 OR q < 0
p = 2 * q + 5
q ++
打印m 、n 、p 、q
结束
开始
T
T
F
F
运行结果 语句覆盖: 测试用例
取值条件 具体取值条件 m=1,n=2,p=6,q=-1 T1,T2,T3,T4 m>0,n<6,p>5,q<0 m=2,n=3,p=4,q=1 T1,T2,F3,F4 m>0,n<6,p<5,q>0 m=-1,n=7,p=7,q=-2
F1,F2,T3,T4
m<0,n>6,p>5,q<0
m=-2,n=4,p=3,q=3 F1,F2,F3,F4 m<0,n<6,p<5,q>0
判定覆盖:
测试用例具体取值条件判定条件
输入:{m=3,n=2,p=9,q=-3} 输出:{m=5,n=4,p=-1,q=-2} m>0,n<6,p>5,q<0 m>0 and n<6
p>5 or q<0
输入:{m=-4,n=10,p=2,q=4}
输出:{ m=-4,n=10,p=2,q=4}
m<0,n>6,p<5,q>0 m<0 and n>6
p<5 or q>0
条件覆盖:
测试用例取值条件具体取值条件
输入:{m=1,n=7,p=6,q=2}
输出:{ m=1,n=7,p=9,q=3}
T1,F2,T3,F4 m>0,n>6,p>5,q>0
输入:{m=-3,n=4,p=1,q=-1}
输出:{ m=-3,n=4,p=3,q=0}
F1,T2,F3,T4 m<0,n<6,p<5,q<0
实验时间:实验地点:实验学时:
判定-条件覆盖:
测试用例取值条件具体取值条件
输入:{m=1,n=2,p=6,q=-1}
输出:{ m=5,n=4,p=3,q=0}
T1,T2,T3,T4 m>0,n<6,p>5,q<0
输入:{m=-1,n=9,p=4,q=2}
输出:{ m=-1,n=9,p=4,q=2}
F1,F2,F3,F4 m<0,n>6,p<5,q>0
实验时间:实验地点:实验学时:
条件组合覆盖:
测试用例覆盖条件具体取值条件
输入:{m=1,n=2,p=6,q=-1}
输出:{ m=5,n=4,p=3,q=0}
T1,T2,T3,T4 m>0,n<6,p>5,q<0
输入:{m=1,n=7,p=6,q=1}
输出:{ m=1,n=7,p=7,q=2}
T1,F2,T3,F4 m>0,n>6,p>5,q>0
输入:{m=-1,n=2,p=3,q=-1}
输出:{ m=-1,n=2,p=3,q=0}
F1,T2,F3,T4 m<0,n<6,p<5,q<0
输入:{m=-1,n=7,p=3,q=1}
输出:{ m=-1,n=7,p=3,q=0}
F1,F2,F3,F4 m<0,n>6,p<5,q>0
实验时间:实验地点:实验学时:
四.实验内容中遇到的问题、解决方法和体会。
答:遇到的问题:实验过程中,编写程序有点问题,总是输不出结果,不断进行检查和调试,以至于花费很多时间。
解决方法:通过自己检查和调试和向同学寻求帮助得以解决问题,最后运行得到结果。
体会:通过这次实验,我知道了只有自己动手去做,才会知道自己还有哪些不足,才能不断提高自己的实践能力。
同时,我还知道了白盒覆盖的几种覆盖方
实验时间:实验地点:实验学时:
法以及它们之间的区别。
总之,我们要知道理论和实践相结合的重要性,通过不断实践来提高自己的能力。
实验一:基于白盒测试的用例设计与验证
(二)
一.实验目的
(1)熟悉二分查找算法,能正确实现程序
(2)掌握白盒测试的基本路径测试法,重点掌握如何根据程序控制流计算程序的环路复杂度,并且确定程序基本路径。
二.实验内容
(1)选择一门语言,完成二分查找的实现;。
源代码:
#include<stdio.h>
int find(int *arry,int leng,int key)
{
int low=1;
int mid;
int high=leng;
while(low<=high)
{
mid=(low+high)/2;
if(key>arry[mid-1])
low=mid;
else if(key<arry[mid-1])
high=mid;
实验时间:实验地点:实验学时:
else
return mid;
}
return 0;
}
int main()
{
int a[10];
int i,m,n;
for(i=0;i<10;i++)
a[i]=i+1;
do
{
printf("请输入查找数(1~10!):");
scanf("%d",&m);
}while(m>10||m<1);
n=find(a,10,m);
printf("查询值为a[%d]\n",n-1);
return 0;
}
(2)完成相应的程序控制流图,并计算出程序的环路负责度;
(3)确定程序的基本路径,设计相应的测试用例,覆盖确定的基本路径。
程序控制流图如下:
实验时间: 实验地点: 实验学时:
A
D
F E
H G
I
C
B
1
34
2/5
由程序控制图可知环路复杂度为5,因此有5条基本路径。
基本路径1:A-B-A 基本路径2:A-B-C-D-E-A
基本路径3:A-B-C-D-E-F-H-C-D-E-A 基本路径4:A-B-C-D-E-G-I-C-D-E-A
基本路径5:A-B-C-D-E-F-H-C-D-E-G-I-C-D-E-A
实验时间:实验地点:实验学时:
测试用例图:
测试用例预期输出结果输出通过路径
M=0 Error ! --- 基本路径1 M=5 a[4] 查询值为a[4] 基本路径2 M=3 a[2] 查询值为a[2] 基本路径3 M=7 a[6] 查询值为a[6] 基本路径4 M=4 A[3] 查询值为a[3] 基本路径5 运行结果:
实验时间:实验地点:实验学时:
三.实验内容中遇到的问题、解决方法和体会。
答:遇到的问题:编写的程序有错误不知道该怎么改。
解决方法:通过向同学寻求帮助解决,最后运行得到结果。
体会:通过这次实验,感觉自己C语言的基础太差,以后要加强对C 语言的学习。
通过这次实验,我还知道了怎样计算出程序的环路复杂度,还有如何完成相应的程序控制流图。
实验时间:实验地点:实验学时:
实验一:基于黑盒测试的用例设计与验证
(一)
一.实验目的
(1)理解黑盒测试的基本原理;
(2)掌握黑盒测试的等价类划分法与边界值分析法,并能够根据相应的方法设计测试用例。
二.实验内容
(1)选择一门语言,完成以下程序:输入三个整数,三角形三条边的长度,输出三角形所属的类型。
#include <stdio.h>
double triangle(double a, double b, double c)
{
if (a + b > c && b + c > a && a + c > b)
return 1;
else
return 0;
}
double dengbian(double a, double b, double c)
{
if (a == b && b == c)
return 1;
else
实验时间:实验地点:实验学时:return 0;
}
double dengyao(double a, double b, double c)
{
if (a == b || b == c || a == c)
return 1;
else
return 0;
}
double zhijiao(double a, double b, double c)
{
if (a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b) return 1;
else
return 0;
}
void main()
{
double a, b, c;
printf("请输入三角形三边: ");
scanf("%lf", &a);
scanf("%lf", &b);
scanf("%lf", &c);
if (triangle(a, b, c))
{
if (dengbian(a, b, c))
printf("等边三角形\n");
else if (dengyao(a, b, c) && zhijiao(a, b, c))
printf("等腰直角三角形\n");
else if (dengyao(a, b, c))
printf("等腰三角形\n");
else if (zhijiao(a, b, c))
printf("直角三角形\n");
else
printf("一般三角形\n");
}
else
实验时间:实验地点:实验学时:
printf("不能构三角形\n");
}
(2)依据黑盒测试中的等价类划分法,边界值分析法设计相应的测试用例。
编号等价类输入输出
1 三边为数字字符
2
3
4 一般三角形
2 两边之和大于第三边 2
3
4 一般三角形
3 两边相等且两边之和大于第三边 3 3
4 等腰三角形
4 两边相等且满足a*a+b*b=c*c 2*2 +2*2=8 等腰直角三角形
5 能构成三角形且满足a*a+b*b=c*c 3*3 +4*4=25 直角三角形
6 能构成三角形且三边相等 2 2 2 等边三角形
7 三边中出现了非数字字符 a 2 3 不能构成三角形
8 两边之和小于第三边 2 3 6 不能构成三角形
9 三边中出现了负数-1 1 3 不能构成三角形
边界值分析法
编号输入边界值测试用例的设计思路
1 数字字符出现了除数字字符之外的
符号如输入:a 2 3,则不能构成三角形,反之成立
2 边长三边大于0 如果输入的数中有小
于0的数,则不能构
成三角形,反之成立3 三边边长之和两边之和大于第三边如果两边之和小于第
三边,则不能构成三
角形,反之成立(3)利用设计的测试用例测试编写的程序。
实验时间:实验地点:实验学时:
实验时间:实验地点:实验学时:
三.实验内容中遇到的问题、解决方法和体会。
答:遇到的问题:编写代码出现了一点问题,用等价类划分时不知道该怎么划分。
解决方法:通过查看书本和向同学寻求帮助解决。
体会:通过这次实验,我知道了黑盒测试的基本原理,掌握了黑盒测试的等价类划分法与边界值分析法,并能够根据相应的方法设计测试用例。
在此次实验中也遇到了一些问题,不过出现问题才能知道我们的不足之处,然后改正并完善。
所以遇到困难应该想办法解决,大胆尝试,这样才能提高自己的能力。
实验时间:实验地点:实验学时:
实验一:基于黑盒测试的用例设计与验证
(二)
一.实验目的
(1)理解黑盒测试的基本原理;
(2)掌握黑盒测试的判定表设计方法;
(3)能够根据判定表完成测试用例的生成。
二.实验内容
(1)选择一门语言,完成以下程序:输入年月日,输出该日的下一日日期。
#include<stdio.h>
实验时间:实验地点:实验学时:
void main()
{
int year,month,day,flag=0;
m:
printf("please input year month day:");
scanf("%d %d %d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0)
flag=1; //当年份为闰年时,flag为1
if(month==2) //月份为2
{
if((day==28&&flag==0)||(day==29&&flag==1))
{
day=1;
month++; //如果是平年的第28天或者闰年的第29天,则day复位,month加一
}
else if(day==29&&flag==0) //平年输入29天为错误
{
printf("there is not 29th February!\n",year);
goto m;
}
else //其他日期,则day加一
day++;
}
else if(month==12) //月份为12
{
if(day==31) //如果是输入31,则day复位,month复位,year++
{
day=1;
month=1;
year++;
}
else //如果是其他日期,则day++
实验时间:实验地点:实验学时:
day++;
}
else if(month==1||month==3||month==5||month==7||month==8||month==10) //月份为1,3,5,7,8,10
{
if(day==31) //如果输入31,则day复位,month加一
{
day=1;
month++;
}
else //如果是其他日期,则day加一
day++;
}
else //月份为4,6,9,11
{
if(day==30) //如果输入30,则day复位,month加一
{
day=1;
month++;
}
else //如果是其他日期,则day加一
day++;
}
printf("the next day is %4d %4d %4d\n",year,month,day);
}
(2)利用黑盒测试中的判定表法确定程序的条件项,条件桩,动作项,动作桩,完成并优化判定表。
条件桩:(1)1<=month<= 12
(2)1<=day<= 31
(3)2月平年28天,闰年29天
动作桩:(1)日期加1
(2)日期复位
实验时间:实验地点:实验学时:(3)月份加1
(4)月份复位
(5)年份加1
(6)不可能
条件序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 每月30天 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 每月31天,12
月除外
0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 12月0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 2月平年0 0 0 0 0 1 1 - 0 0 0 0 0 0 0 闰年0 0 0 1 1 0 0 - 0 0 0 0 0 0 0 1<=日期<=27 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 日期=30天0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 日期=31天0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 日期=28天0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 日期=29天0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
动作日期加1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 0 日期复位0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 月份加1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 月份复位0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 年份加1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 不可能0 0 1 0 0 0 0 1 0 0 0 0 0 0 1
(3)根据判定表完成测试用例的设计,并结合编写的程序完成实际的测试工作。
编号等价类输入输出
1 每月30天2009 04 30 2009 5 1
2 每月31天201
3 07 31 2013 8 1
3 2月平年28天2001 02 28 2001 3 1
4 2月闰年29天2000 02 29 2000 3 1
5 12月31天2014 12 31 2015 1 1
6 2月输入30天2000 02 30 错误的输入
7 每月30天时输入31 2008 06 31 错误的输入
8 月份大于12 2012 13 25 错误的输入
9 输入中含有非数字字符2011 0a 12 错误的输入
运行结果:
实验时间:实验地点:实验学时:
三.实验内容中遇到的问题、解决方法和体会。
答:遇到的问题:实验中编写代码的时候出现了许多问题,导致运行的不到结果;还有写判定表的时候不知道该怎么写,大脑有点混乱,不过最后判定表写出来了,虽然不知道是否正确。
解决方法:代码部分通过调试和向同学求助解决,最后运行得到正确的结果;判定表部分通过自己查看书本和不断思考解决。
体会:通过这次实验,我知道了判定表并不是像我们想象的那么好写,如果思绪紊乱就可能写不出来;同时我们要不断地锻炼自己,这样才能更好地提高自己
实验时间:实验地点:实验学时:的实践能力。