搜索
您的当前位置:首页正文

软件测试实验报告53439

2023-09-21 来源:易榕旅网


学号: 《软件测试技术》

实验报告与习题册

2014 / 2015 学年 第2学期

系 别 专 业 班 级 姓 名 指导教师

计算机学院

一班

目 录

项 目 实验一 基于白盒测试的用例设计与验证(一) 实验二 基于白盒测试的用例设计与验证(二) 实验三 基于黑盒测试的用例设计与验证(一) 实验四 基于黑盒测试的用例设计与验证(二) 实验五 JUnit的安装与使用 成 绩 批改时间 实验六 LoadRunner的使用 实验七 WinRunner的使用

实验一:基于白盒测试的用例设计与验证

(一)

一.实验目的

(1)熟悉Eclipse开发环境

(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发 (3)熟悉白盒测试基本原理

(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。

二.实验内容

(1)选择一门语言,完成指定的单元程序开发。 #include<> void main() { }

int m,n,p,q;

scanf(\"%d,%d,%d,%d\ if(m>0&&n<6) { }

if(p>5||q<0)

{

p=2*q+5; q++; }

printf(\"输出的四个数是:%d,%d,%d,%d\\n\ m=n+3; n=n*2;

printf(\"please input m,n,p,q:\\n\");

return ;

(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\\条件覆盖、条件组合覆盖的原理设计相应的测试用例。

(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。

三.程序流程图

开始m > 0 AND n < 6FTm = n + 3n = n * 2p > 5 OR q < 0FTp = 2 * q + 5q ++打印m、n、p、q结束

运行结果 语句覆盖: 测试用例 m=1,n=2,p=6,q=-1 m=2,n=3,p=4,q=1 m=-1,n=7,p=7,q=-2 m=-2,n=4,p=3,q=3 取值条件 T1,T2,T3,T4 T1,T2,F3,F4 F1,F2,T3,T4 F1,F2,F3,F4 具体取值条件 m>0,n<6,p>5,q<0 m>0,n<6,p<5,q>0 m<0,n>6,p>5,q<0 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=-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,n<6,p>5,q<0 判定条件 m>0 and n<6 p>5 or 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} 输入:{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 取值条件 T1,F2,T3,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} 输入:{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 取值条件 T1,T2,T3,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} 输入:{m=1,n=7,p=6,q=1} 输出:{ m=1,n=7,p=7,q=2} 输入:{m=-1,n=2,p=3,q=-1} 输出:{ m=-1,n=2,p=3,q=0} 输入:{m=-1,n=7,p=3,q=1} 输出:{ m=-1,n=7,p=3,q=0} T1,T2,T3,T4 m>0,n<6,p>5,q<0 T1,F2,T3,F4 m>0,n>6,p>5,q>0 F1,T2,F3,T4 m<0,n<6,p<5,q<0 F1,F2,F3,F4 m<0,n>6,p<5,q>0

四.实验内容中遇到的问题、解决方法和体会。

答:遇到的问题:实验过程中,编写程序有点问题,总是输不出结果,不断进行检查和调试,以至于花费很多时间。

解决方法:通过自己检查和调试和向同学寻求帮助得以解决问题,最后运行得到结果。

体会:通过这次实验,我知道了只有自己动手去做,才会知道自己还有哪些不足,才能不断提高自己的实践能力。同时,我还知道了白盒覆盖的几种覆盖方法以及它们之间的区别。总之,我们要知道理论和实践相结合的重要性,通过不断实践来提高自己的能力。

实验一:基于白盒测试的用例设计与验证

(二)

一.实验目的

(1)熟悉二分查找算法,能正确实现程序

(2)掌握白盒测试的基本路径测试法,重点掌握如何根据程序控制流计算程序的环路复杂度,并且确定程序基本路径。

二.实验内容

(1)选择一门语言,完成二分查找的实现;。

源代码: #include<>

int find(int *arry,int leng,int key) { }

int main() {

int a[10]; int i,m,n; for(i=0;i<10;i++) int low=1; int mid; int high=leng; while(low<=high) { } return 0;

mid=(low+high)/2; if(key>arry[mid-1])

low=mid;

else if(keyhigh=mid;

else

return mid;

}

do {

a[i]=i+1;

printf(\"请输入查找数(1~10!):\"); scanf(\"%d\

}while(m>10||m<1); n=find(a,10,m);

printf(\"查询值为a[%d]\\n\ return 0;

(2)完成相应的程序控制流图,并计算出程序的环路负责度;

(3)确定程序的基本路径,设计相应的测试用例,覆盖确定的基本路径。

程序控制流图如下:

A1BCD3E4FGHI2/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 M=5 M=3 M=7 M=4 预期输出 Error ! a[4] a[2] a[6] A[3] 结果输出 --- 查询值为a[4] 查询值为a[2] 查询值为a[6] 查询值为a[3] 通过路径 基本路径1 基本路径2 基本路径3 基本路径4 基本路径5 运行结果:

三.实验内容中遇到的问题、解决方法和体会。

答:遇到的问题:编写的程序有错误不知道该怎么改。

解决方法:通过向同学寻求帮助解决,最后运行得到结果。

体会:通过这次实验,感觉自己C语言的基础太差,以后要加强对C语言的学习。通过这次实验,我还知道了怎样计算出程序的环路复杂度,还有如何完成相应的程序控制流图。

实验一:基于黑盒测试的用例设计与验证

(一)

一.实验目的

(1) 理解黑盒测试的基本原理;

(2) 掌握黑盒测试的等价类划分法与边界值分析法,并能够根据相应的方法设计测试用例。

二.实验内容

(1)选择一门语言,完成以下程序:输入三个整数,三角形三条边的长度,输出三角形所属的类型。 #include <>

double triangle(double a, double b, double c) { }

double dengbian(double a, double b, double c) { }

double dengyao(double a, double b, double c) { }

double zhijiao(double a, double b, double c) {

if (a == b || b == c || a == c)

return 1; return 0; else

if (a == b && b == c)

return 1; return 0; else

if (a + b > c && b + c > a && a + c > b)

return 1; return 0; else

}

if (a*a + b*b == c*c || b*b + c*c == a*a || a*a + c*c == b*b)

return 1; return 0; else

void main() { }

(2)依据黑盒测试中的等价类划分法,边界值分析法设计相应的测试用例。

等价类划分: 编号 1 2 等价类 三边为数字字符 两边之和大于第三边 输入 2 3 4 2 3 4 输出 一般三角形 一般三角形 double a, b, c;

printf(\"请输入三角形三边: \"); scanf(\"%lf\ scanf(\"%lf\ scanf(\"%lf\ if (triangle(a, b, c)) { } else

printf(\"不能构三角形\\n\"); if (dengbian(a, b, c))

printf(\"等边三角形\\n\"); printf(\"等腰直角三角形\\n\"); printf(\"等腰三角形\\n\"); printf(\"直角三角形\\n\"); printf(\"一般三角形\\n\");

else if (dengyao(a, b, c) && zhijiao(a, b, c)) else if (dengyao(a, b, c)) else if (zhijiao(a, b, c)) else

3 4 5 6 7 8 9 两边相等且两边之和大于第三边 两边相等且满足a*a+b*b=c*c 能构成三角形且满足a*a+b*b=c*c 能构成三角形且三边相等 三边中出现了非数字字符 两边之和小于第三边 三边中出现了负数 边界值分析法 编号 1 输入 数字字符 符号 2 边长 三边大于0 边界值 3 3 4 2*2 +2*2=8 3*3 +4*4=25 2 2 2 a 2 3 2 3 6 -1 1 3 等腰三角形 等腰直角三角形 直角三角形 等边三角形 不能构成三角形 不能构成三角形 不能构成三角形 测试用例的设计思路 能构成三角形,反之成立 如果输入的数中有小于0的数,则不能构成三角形,反之成立 出现了除数字字符之外的如输入:a 2 3,则不3 三边边长之和 两边之和大于第三边 如果两边之和小于第三边,则不能构成三角形,反之成立 (3)利用设计的测试用例测试编写的程序。

三.实验内容中遇到的问题、解决方法和体会。

答:遇到的问题:编写代码出现了一点问题,用等价类划分时不知道该怎么划分。 解决方法:通过查看书本和向同学寻求帮助解决。

体会:通过这次实验,我知道了黑盒测试的基本原理,掌握了黑盒测试的等价类划分法与边界值分析法,并能够根据相应的方法设计测试用例。在此次实验中也遇到了一些问题,不过出现问题才能知道我们的不足之处,然后改正并完善。所以遇到困难应该想办法解决,大胆尝试,这样才能提高自己的能力。

实验一:基于黑盒测试的用例设计与验证

(二)

一.实验目的

(1) 理解黑盒测试的基本原理; (2) 掌握黑盒测试的判定表设计方法; (3) 能够根据判定表完成测试用例的生成。

二.实验内容

(1)选择一门语言,完成以下程序:输入年月日,输出该日的下一日日期。 #include<> void main() {

int year,month,day,flag=0; m:

printf(\"please input year month day:\"); scanf(\"%d %d %d\

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\

goto m; }

else //其他日期,则day加一 } { }

if(day==31) //如果是输入31,则day复位,month复位,year++ { day=1; month=1; year++; } day++; day++;

else if(month==12) //月份为12

else //如果是其他日期,则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++; }

day++;

else //如果是其他日期,则day加一

}

(2)利用黑盒测试中的判定表法确定程序的条件项,条件桩,动作项,动作桩,完成并优化判定表。

条件桩:(1)1<=month<= 12 (2)1<=day<= 31

(3)2月平年28天,闰年29天 动作桩:(1)日期加1 (2)日期复位 (3)月份加1 (4)月份复位 (5)年份加1 (6)不可能 序号 每月30天 月除外 12月 2月 平年 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 - 0 0 0 0 1 0 1 0 1 0 0 0 1 2 1 1 3 4 5 1 0 0 0 0 0 6 0 0 7 8 9 10 11 12 13 14 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 15 0 0 } {

if(day==30) //如果输入30,则day复位,month加一 }

{ day=1; month++; } day++;

else //月份为4,6,9,11

else //如果是其他日期,则day加一

printf(\"the next day is %4d %4d %4d\\n\

每月31天,120 0 条件 闰年 1<=日期<=27 日期=30天 日期=31天 日期=28天 日期=29天 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 - 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 动作 日期加1 日期复位 月份加1 月份复位 年份加1 不可能

(3)根据判定表完成测试用例的设计,并结合编写的程序完成实际的测试工作。

测试用例 编号 1 2 3 4 5 6 7 8 9 运行结果:

等价类 每月30天 每月31天 2月平年28天 2月闰年29天 12月31天 2月输入30天 每月30天时输入31 月份大于12 输入中含有非数字字符 输入 2009 04 30 2013 07 31 2001 02 28 2000 02 29 2014 12 31 2000 02 30 2008 06 31 2012 13 25 2011 0a 12 输出 2009 5 1 2013 8 1 2001 3 1 2000 3 1 2015 1 1 错误的输入 错误的输入 错误的输入 错误的输入

三.实验内容中遇到的问题、解决方法和体会。

答:遇到的问题:实验中编写代码的时候出现了许多问题,导致运行的不到结果;还有写判定表的时候不知道该怎么写,大脑有点混乱,不过最后判定表写出来了,虽然不知道是否正确。

解决方法:代码部分通过调试和向同学求助解决,最后运行得到正确的结果;判定表部分通过自己查看书本和不断思考解决。

体会:通过这次实验,我知道了判定表并不是像我们想象的那么好写,如果思绪紊乱就可能写不出来;同时我们要不断地锻炼自己,这样才能更好地提高自己的实践能力。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top