软件测试白盒测试用例练习题
- 格式:doc
- 大小:59.50 KB
- 文档页数:7
白盒测试练习题1、为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
语句覆盖:X=17,y=6; x=1,y=4; x=10,y=-1; 判定覆盖:x=18,y=7; x=3,y=2; x=1,y=-2; x=9,y=9 条件覆盖:对于第一个判定( (x>8)&&y>5) ):条件x>8 取真值记为T1,取假值记为F1条件y>5 取真值记为T2,取假值记为F2对于第二个判定( (x>16)||(y>10) ):条件x>16 取真值记为T3,取假值记为F3条件y>10 取真值记为T4,取假值记为F4 对于第三个判定((x>0)||(y>0):条件x>0 取真值记为T5,取假值记为F5条件y>0 取真值记为T6,取假值记为F6判定/条件覆盖:组合覆盖:1.X>8,Y>5:T1T22.X>8,Y<=5:T1F23.X<=8,Y>5:F1T24.X<=8,Y<=5:F1F25.X>0,Y>0:T5T66.X>0,Y<=0:T5F67.X<=0,Y>0:F5T68.X<=0,Y<=0:F5F69.X>16,Y>10:T3T410.X>16,Y<=10:T3F411.X<=16,Y>10:F3T412.X<=16,Y<=10:F3F42、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
程序如下,请按要求设计测试用例。
要求:画出流程图分别写出满足语句覆盖和判定覆盖的测试用例语句覆盖:c=a;c= ;c=0;c=, 判定覆盖:c=a,;c= ;c=0;c=, 1)画出控制流图;2)分析复杂性;V(G)=53)给出独立路径并设计测试用例;路径1:2-11路径2: 2-3-4-11路径3: 2-3-5-6-11路径4: 2-3-5-7-8-11路径5: 2-3-5-7-9-114)画出N-S图;5)计算要满足覆盖所需要的最少测试用例数;6)设计满足条件覆盖的测试用例。
一、问题:报表日期等价类划分和边界值分析设某公司要打印2001~2005年的
报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。
二、请结合等价类方法给出getNumDaysInMonth(int month, int year)方法
的测试用例,其中getNumDaysInMonth方法根据给定的月份和年份返回该月份的总天数。
三、阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
[说明]在 ERP(企业资源计划)系统中,“计划管理”模块的流程图如下:
[问题1]因果图法是功能测试案例设计方法中的一种,简述利用因果图导出测试用例需要经过哪几个步骤?
[问题2]根据题干中的流程图,利用因果图法,找出哪些是正确的输入条件,那些是正确的输出结果,将下列描述的字母编号填入表中。
a.可以进行销售发货管理
b.可用库存不满足销售需求(有可用库存)
c.可用库存不满足销售需求(无可用库存)
d.可用库存满足生产需求
e.可用库存不满足生产需求
f.可用库存不满足生产需求(无可用库存)
g.可以进行 MPS 运算
h.可用库存满足销售需求
i.生成主生产计划
j.生成计划采购单
k.生成计划生产定单
l.可以进行 MRP 运算
[问题3]下图画出“计划管理”模块的因果图。
请把问题2中列出的输入条件和输出结果的字母编号填入到空白框中相应的位置。
四、有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品
后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
五、根据如下流程图,写出白盒测试测试用例。
白盒测试用例练习一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
void DoWork (int x,int y,int z) {int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1;j=sqrt(k); //语句块1} if ( (x==4)||(y>5) ) {j=x*y+10;} //语句块2 j=j%3; //语句块3 } a Y cN be YN d由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d)将里面的判定条件和过程记录如下: 判定条件M ={x>3 and z<10} 判定条件N={x=4 or y>5}1、 语句覆盖测试用例输入输出 判定M 的取值 判定N 的取值 覆盖路径x=4,z=5,y=8 k=31,j=0T T P1(a-c-e)2、判定覆盖x>3 andz<10 x=4 or y>5 j=j%3j=x*y+10 k=x*y-1 j=sqrt(k)k=0 j=0p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。
测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e)x=2,z=11,y=5 k=0,j=0 F F P4(a-b-d)也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下:测试用例输入输出判定M的取值判定N的取值覆盖路径x=5,z=5,y=4 k=19,j=sqrt(19)%3 T F P2(a-c-d) x=4,z=11,y=6 k=0,j=1 F T P3(a-b-e)3、条件覆盖对于M:x>3取真时T1,取假时F1;z<10取真时T2,取假时F2;对于N:x=4取真时T3,取假时F3;y>5取真时T4,取假时F4。
白盒测试练习1、什么是白盒测试?白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
2、什么是测试用例?一组由前提条件、输入、执行条件、预期结果等组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档3、写出以上程序的所有路径;L1(1->2->3)L2(1->4->5->3)L3(1->2->6->7)L4(1->4->5->6->7)4、尝试用表格的形式描述满足以下情况的测试用例:a)写出满足语句覆盖需要的测试用例;解:语句覆盖就是程序中每一个语句至少能被执行一次运行结果b)写出满足判定覆盖(分支覆盖)需要的测试用例;解:判定覆盖就是程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次运行结果c) 写出满足条件覆盖需要的测试用例;解:条件覆盖是程序各判定中的每个条件获得各种可能的取值至少满足一次运行结果d) 写出满足判定/条件覆盖需要的测试用例;解:判定/条件覆盖是程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次,且使得各判定中的每个条件获得各种可能的取值至少满足一次。
运行结果e) 写出满足条件组合覆盖需要的测试用例。
解:条件组合覆盖是判定中条件的各种组合都至少被执行一次运行结果更改逻辑运算符以条件组合覆盖测试用例进行测试运行结果。
上机2 白盒测试
一、对下图所示程序段进行语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖方法进行测试用例设计。
1、语句覆盖:
2、判定覆盖
3、条件覆盖
5、组合覆盖
二、针对test函数按照基本路径测试方法设计测试用例。
int Test(int i_count, int i_flag)
{
1 int i_temp=0;
2 while (i_count>0)
{
3 If (0==i_flag)
{
4 i_temp=i_count+100;
5 break;
}
6 else
{
7 If (1==i_flag)
{
8 i_temp=i_temp+10;
}
9 else
{
10 i_temp=i_temp+20;
}
}
11 i_count--;
}
12 return i_temp;
}
解答:
1.画出程序控制流程图如下:
2.计算圈复杂度
从图中可以看到,V(G)=11(边数)-9(结点数)+2=3(判定结点数)+1=4,则上图的圈复杂图为4。
表示只要最多 4 个测试用例就可以达到基本路径覆盖。
3.确定独立路径的基本集合
路径1:1-2-3-4-5-12
路径2:1-2-12
路径3:1-2-3-6-7-8-11-2-12
路径4:1-2-3-6-7-9-10-11-2-12
4.设计测试用例。
例题2:应用白盒测试法的具体步骤:1.按照某种覆盖标准,选择一组需要覆盖的路径;2.确定上述路径所需的输入数据;3.计算与输入数据相应的输出。
下面以工资管理程序为例说明白盒测试方法的运用过程。
(白盒测试方法有6种)工资管理程序BONUS的输入数据是职员表(Employee Table)和部门销售表(Department Table)(图1)。
职员表由姓名(Name)、职务(Job)、部门(Dept.)和工资(Salary)四个属性组成。
部门销售表由部门(Dept)和销售量(Sales)组成。
程序的功能是:“为销售量最大的部门中每一个职工增加200元工资,但是,如果某个职员的原有工资已达15000元,或者他的职务是经理,则只给他增加100元。
如果程序能正常地完成,则输出出错码0;如果两表格中没有任何条目,则输出出错码1;如果没有职员在部门销售表中销售量最大的部门中工作,则输出出错码2;”工资管理程序BONUS的两个表如下:工资管理程序BONUS的源程序:参数表中EMPTAB、DEPTTAB分别是职员表和部门表,ESIZE、DSIZE分别是两个表的长度,ERRCODE是出错码。
这里略去了说明部分和注释。
Procedure Bonus(EMPTAB,DEPTTAB:TABLE; ESIZE,DSIZE,ERRCODE:INTEGER);/*最大销量和出错码初始化*/1. Begin MAXSALES:=0; ERRCODE:=0;/*判断表是否为空,空输出1,并退出程序,否则继续执行*/2. IF (ESIZE<=0) or (DSIZE<=0)3. THEN ERRCODE:=1;4. ELSE/*获得最大销量*/5. For i=1 to DSIZE6. If Sales(i)> MAXSALES7. then MAXSALES = Sales(i);/*找到销量最大的每一个部门,并做进一步处理*/8. For j=1 to DSIZE9. If Sales(j)= MAXSALES10. Then11. Begin Found:=False;/*找销量最大的职员所属部门对应的职员表中的职员并处理*/12. For k:=1 to ESIZE13. If (EMPTAB.DEPT(k)= DEPTTAB. DEPT(J))14. Then15. Begin Found:=True;/*如果该职员工资超过15000或职务是经理则加100工资,否则加200工资*/16. If (SALARY(k)>=15000.0) or (JOB(k)=”M”)17. Then18. SALARY(k):= SALARY(k)+100.0;19. Else20. SALARY(k):= SALARY(k)+200.0;21. End;/*如果找不到对应职员,则输出出错码2,否则出错码默认0*/22. If (!Found ) then ERRORCODE:=2;23. End24. End25. End用白盒测试方法设计测试用例。
白盒测试课程练习一、判断分析题1.语句覆盖是最弱的逻辑覆盖。
(√)2.语句覆盖是最强的逻辑覆盖。
(×)3.判定覆盖不一定包含条件覆盖。
(√)4.条件覆盖不一定包含判定覆盖.(√)5.判定/条件覆盖能同时满足判定、条件两种覆盖标准.(√)6.判定/条件覆盖指满足判定覆盖标准或条件覆盖标准。
(×)7.DD-路径图是一种压缩图。
(√)8.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。
(√)9.尽量用公共过程或子程序去代替重复的代码段。
(√)10.对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(√)11.尽量采用复合的条件测试,以避免嵌套的分支结构。
(×)12.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁.(√)二、简答题1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试.黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
白盒测试用例练习
一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
void DoWork (int x,int y,int z)
{
int k=0,j=0;
if ( (x>3)&&(z<10) )
{ k=x*y-1;
j=sqrt(k); //语句块1
}
if ( (x==4)||(y>5) )
{
j=x*y+10;
} //语句块2
j=j%3; //语句块3
}
由这个流程图可以看出,该程序模块有4条不同的路径:
P1:(a-c-e) P2:(a-c-d)
P3:(a-b-e) P4:(a-b-d)
将里面的判定条件和过程记录如下:
判定条件M={x>3 and z<10}
判定条件N={x=4 or y>5}
1、语句覆盖
2、判定覆盖
p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。
也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下:
3、条件覆盖
对于M:x>3取真时T1,取假时F1;
z<10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3;
y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5
条件:x<=3,z>=10,x!=4,y<=5
根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示:
4、判定/条件覆盖
5、组合覆盖
条件组合
1)x>3,z<10 2)x>3,z>=10
3) x<=3,z<10 4)x<=3,z>=10
5)x=4,y>5 6)x=4,y<=5
7)x!=4,y>5 8)x!=4,y<=5
6、路径覆盖
二、冒泡法排序:
#include<stdio.h> main()
{
int i,j,temp;
int a[10];
for(i=0;i<10;i++) scanf ("%d,",&a[i]); for(j=0;j<=9;j++) {
for (i=0;i<10-j;i++) if (a[i]>a[i+1]) { temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=0;i<10;i++) printf("%5d,",a[i] ); printf("\n");
}
2、程序流程图
3
3.1语句覆盖
3.2判定覆盖
3
3.3条件覆盖
3.4路径覆盖。