软件测试实验设计测试用例.docx
- 文档编号:3340497
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:10
- 大小:101.43KB
软件测试实验设计测试用例.docx
《软件测试实验设计测试用例.docx》由会员分享,可在线阅读,更多相关《软件测试实验设计测试用例.docx(10页珍藏版)》请在冰豆网上搜索。
软件测试实验设计测试用例
实验一、设计测试用例
目标
1、掌握如何编写测试用例
2、掌握如何填写测试报告
实验内容
分析以下程序,掌握在白盒测试中的测试用例的设计方法,包括语句覆盖,分支覆盖,条件覆盖和路径覆盖。
阅读下面的一段程序
voidTest1(intX,intY,intZ)
1{
2intk=0,j=0;
3if((X>3)&&(Z<10))
4{
5k=X*Y-1;
6j=sqrt(k);
7}
8if((X==4)||(Y>5))
9j=X*Y+10;
10j=j%3;
11}//Test1
根据所给定的程序,该程序的可能路径如下:
路径1:
1→2→3→5→6→8→9→10→11
路径2:
1→2→3→8→10→11
路径3:
1→2→3→8→9→10→11
路径4:
1→2→3→5→6→8→10→11
编程实现:
(1)设计测试用例,实现分支判定覆盖,使得每个判定中的真假值至少执行一次,并在判定路径中插入一条显示输出语句(printf/cout),输出路径标号。
输入格式:
输入(X,Y,Z):
输出格式:
输出(k,j):
k=j=
路径ID:
例如:
输入(X,Y,Z):
2,5,5↙(回车)
输出(k,j):
k=0j=0
路径ID:
路径2:
1→2→3→8→10→11
(2)设计测试用例,实现路径覆盖,使得每个可能路径至少执行一次。
输入格式:
输入(X,Y,Z):
输出格式:
输出(k,j):
k=j=
路径ID:
例如:
输入(X,Y,Z):
4,5,5↙(回车)
输出(k,j):
k=19j=0
路径ID:
路径1:
1→2→3→5→6→8→9→10→11
(3)设计测试用例,实现语句覆盖,并在每条语句后插入一条显示输出语句(printf/cout),输出语句标号。
输入格式:
输入(X,Y,Z):
输出格式:
输出(k,j):
k=j=
路径ID:
例如:
输入(X,Y,Z):
4,5,5↙(回车)
输出(k,j):
k=19j=0
路径ID:
路径1:
1→2→3→5→6→8→9→10→11
(4)设计测试用例,实现条件覆盖,使得每个判定中的每个条件至少执行一次。
输入格式:
输入(X,Y,Z):
输出格式:
输出(k,j):
k=j=
路径ID:
例如:
输入(X,Y,Z):
2,5,15↙(回车)
输出(k,j):
k=0j=0
路径ID:
路径2:
1→2→3→8→10→11
实验设备
装有c语言运行环境的计算机。
实验步骤
步骤一:
根据实验要求,设计如下可执行程序:
#include"stdio.h"
#include"math.h"
voidTest1(intX,intY,intZ)
{//1
intn=0;
intcout[11]={0,0,0,0,0,0,0,0,0,0,0};
cout[n++]=1;
intk=0,j=0;//2
cout[n++]=2;
cout[n++]=3;
if((X>3)&&(Z<10))//3
{//4
//cout[n++]=4;
k=X*Y-1;//5
cout[n++]=5;
j=sqrt(k);//6
cout[n++]=6;
//cout[n++]=7;
}//7
cout[n++]=8;
if((X==4)||(Y>5)){//8
j=X*Y+10;//9
cout[n++]=9;
}
j=j%3;//10
cout[n++]=10;
printf("输出:
k=%d\tj=%d\n",k,j);
printf("路径ID:
");
intm=0;
while(cout[m]!
=0)
{
printf("%d→",cout[m++]);
}
printf("11\n");
}//11
voidmain()
{
intx,y,z;
printf("输入(x,y,z):
");
scanf("%d,%d,%d",&x,&y,&z);
Test1(x,y,z);
}
步骤二:
编译驱动程序,运行通过;
步骤三:
根据实验给出路径,设计测试用例;
步骤四:
运行程序,检验测试用例;
步骤五:
比较实际输出结果和预期输出结果,得出测试结论;
步骤六:
根据上述实验及结果,给出测试用例文档说明。
实验结果
1)对于
(1)分支覆盖,共设计两个测试用例如下:
分支覆盖测试用例1-1:
实际输出结果,如图1-1:
图1-1
说明:
Test1在分支1→2→3→8→10→11运行正确。
分支覆盖测试用例1-2:
实际输出结果,如图1-2:
图1-2
说明:
Test1在分支1→2→3→5→6→8→9→10→11运行正确。
2)对于
(2)路径覆盖,共设计四个测试用例如下:
路径覆盖测试用例2-1:
实际输出结果,如图2-1:
图2-1
说明:
Test1在给定可能路径1:
1→2→3→5→6→8→9→10→11上运行正确。
路径覆盖测试用例2-2:
实际输出结果,如图2-2:
图2-2
说明:
Test1在给定可能路径2:
1→2→3→8→10→11上运行正确。
路径覆盖测试用例2-3:
实际输出结果,如图2-3:
图2-3
说明:
Test1在给定可能路径3:
1→2→3→8→9→10→11上运行正确。
路径覆盖测试用例2-4:
实际输出结果,如图2-4:
图2-4
说明:
Test1在给定可能路径4:
1→2→3→5→6→8→10→11上运行正确。
3)对于(3)语句覆盖,设计测试用例如下:
语句覆盖测试用例3-1:
实际输出结果,如图3-1:
图3-1
说明:
Test1覆盖全部语句运行正确。
4)对于(4)条件覆盖,共设计三个测试用例如下:
条件覆盖测试用例4-1:
实际输出结果,如图3-1:
图4-1
说明:
Test1在条件X〈=3、Y〈=4、Z〈10上运行正确。
条件覆盖测试用例4-2:
实际输出结果,如图4-2:
图4-2
说明:
Test1在条件X〉3、X!
=4、Y〉5、Z〈10上运行正确。
条件覆盖测试用例4-3:
实际输出结果,如图4-3:
图4-3
说明:
Test1在条件X==4、Y〈=5、Z〉=10上运行正确。
实验总结
根据以上测试用例以及实验结果,可以得出如下结论:
1)实现了语句覆盖,不能覆盖全部分支。
如果覆盖了所有分支,所有语句就覆盖了。
例如:
题目中,测试用例5,6,7可以覆盖全部代码行,但还有分支(!
((X>3)&&(Z<10)))与(!
((X==4)||(Y>5)))没有被覆盖,即实现了语句覆盖,不能覆盖全部分支;而测试用例覆盖了全部分支后,所有语句就覆盖了。
2)分支覆盖不能代表条件覆盖。
例如:
题目中判断((X>3)&&(Z<10))只有两个分支,但条件组合有四个。
如果只要满足分支覆盖,可选择两个测试用例:
X=4,Z=5和X=4,Z=11。
至少有一个条件没有得到覆盖,即X=2时。
3)条件全部覆盖了,也不能覆盖全部分支。
例如:
还以题目中判断((X>3)&&(Z<10)),X=4,Z=11和X=2,Z=5覆盖了全部的4个条件X〉3、X〈=3、Z〈10、Z〉=10,但结果只覆盖了判断((X>3)&&(Z<10))错误的一条分支,判断((X>3)&&(Z<10))正确分支却没有得到覆盖。
综上所述:
实现了分支覆盖,也就实现了语句覆盖,但不能保证条件覆盖。
条件覆
盖,一般情况下会强于分支覆盖,但条件覆盖也不能保证分支覆盖。
实验报告
课程名称
软件测试
实验题目
实验一、设计测试用例
实验地点
6#503
时间
2011.09.29
成绩
班级学号:
00000000
姓名:
xxxx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 实验设计
![提示](https://static.bdocx.com/images/bang_tan.gif)