工学白盒测试实验报告.docx
《工学白盒测试实验报告.docx》由会员分享,可在线阅读,更多相关《工学白盒测试实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
工学白盒测试实验报告
白盒测试实验报告
一实验内容
一、系统地学习和理解白盒测试的大体概念、原理,掌握白盒测试的大体技术和方式;
二、举例进行白盒测试,利用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过实验和应用,要慢慢提高和运用白盒测试技术解决实际测试问题的能力;
4、熟悉C++编程环境下编写、调试单元朝码的大体操作技术和方式;
五、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)
二实验原理
白盒测试原理:
已知产品的内部工作进程,能够通过测试证明每种内部操作是不是符合设计规格要求,所有内部成份是不是已通过检查。
它是把测试对象看做装在一个透明的白盒子里,也就是完全了解程序的结构和处置进程。
这种方式依照程序内部的逻辑测试程序,查验程序中的每条通路是不是都能按预定要求正确工作。
其又称为结构测试。
对于该实验的例子给出其流程图如下图所示,咱们来了解白盒测试的大体技术和方式。
语句覆盖是指选择足够的测试用例,使得程序中每一个语句至少执行一次。
如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少取得一次“真”值和“假”值,从而使得程序的每一个分支都通过一次(不是所有的逻辑路径)。
选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试用例,使得程序判定中的每一个条件能取得各类不同的结果。
选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。
判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每一个条件取得条件可能的值,并使每一个判定取到各类可能的结果(每一个分支都通过一次)。
即知足条件覆盖,又知足判定覆盖。
选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。
条件组合覆盖是指选择足够的测试用例,使得每一个判定中的条件的各类可能组合都至少出现一次(以判定为单位找条件组合)。
注:
a,条件组合只针对同一个判断语句存在多个条件的情形,让这些条件的取值进行笛卡尔乘积组合。
b,不同的判断语句内的条件取值之间无需组合。
c,对于但条件的判断语句,只需要知足自己的所有取值即可。
选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。
路径覆盖是分析软件进程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。
三实验方式
1、语句覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=1,y=-1
0
F
T
acdf
2、判定覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=1,y=-1
0
F
T
acdf
3、条件覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=-1,y=-1
0
T
T
acdf
4、判定/条件覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=-1,y=-1
0
T
T
acdf
5、条件组合覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=1,y=-1
0
T
T
acdf
x=-1,y=1
0
T
T
acdf
x=-1,y=-1
0
T
T
acdf
6、路径覆盖
测试用例输入
输出magic
判定M的取值
判定N的取值
覆盖路径
x=1,y=1
12
T
F
abef
x=1,y=-1
0
T
T
acdf
x=12,y=-1
1
T
F
acef
本例覆盖路径abdf不存在
四实验结果
按照上面设计的测试案例,编写程序后,白盒测试结果如下所示:
7、语句覆盖
x=1,y=1
x=1,y=-1
8、判定覆盖
x=1,y=1
x=1,y=-1
9、条件覆盖
x=1,y=1
x=-1,y=-1
10、判定/条件覆盖
x=1,y=1
x=-1,y=-1
11、条件组合覆盖
x=1,y=1
x=1,y=-1
x=-1,y=1
x=-1,y=-1
12、路径覆盖
x=1,y=1
x=1,y=-1
x=12,y=-1
本例覆盖路径abdf不存在
五实验分析
对于白盒测试,在设计测试用例时第一对程序进行分析,从程序的内部结构动身设计测试用例,涉及到程序的控制方式、源语句、编码细节、数据库设计等。
设计测试用例时应用了白盒测试中的多种测试方式,其中包括:
测试覆盖(语句覆盖、分支覆盖、分支条件覆盖等)、基路径测试等方式。
白盒测试中,对代码的测试比较透彻,但不容易生成测试用例,而且测试工作量专门大。
因为白盒测试是基于代码的基础上,所以对变量的概念、数据的分析、精度的气宇都有严格的要求。
同时,对于白盒测试的案例设计,要注意以下几点
(1)保证每一个模块中的所有独立路径至少被执行一次;
(2)对所有的逻辑值均需要测试真、假两个分支;(3)在上下边界及可操作范围内运行所有循环;(4)检查内部数据结构以确保其有效性。
附件:
(测试实现源程序)
#include
/*static*/intsign=0;
staticcharm='T',n='T';
//intlogicExample(int,int);
intlogicExample(intx,inty)
{
intmagic=0;
if(x>0&&y>0)
{
magic=x+y+10;sign++;
}
else
{
magic=x+y-10;m='F';
}
if(magic<0)
{
magic=0;sign+=2;
}
elsen='F';
returnmagic;
}
main(){
intx,y;
//staticintsign=0;
//staticcharm='T',n='T',
charp[4][5]={"acef","abef","acdf","abdf"};
cout<<"---------------"<<'\n';
cout<<"请输入x:
";
cin>>x;
cout<<"请输入y:
";
cin>>y;
cout<<"magic已知:
0"<cout<<"---------------"<<'\n';
cout<<"测试结果别离是:
"<<'\n';
cout<<"---------------"<<'\n';
cout<<"x的值y的值logic的值判定M判定N覆盖路径"<cout<<"---------------------------------------------------------"<<'\n';
cout<cout<<""<}