白盒测试练习题11
- 格式:doc
- 大小:44.50 KB
- 文档页数:2
白盒测试练习题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)设计满足条件覆盖的测试用例。
[ 试题分类 ]: [04]白盒测试方法/[0400][综合]白盒测试方法1.下边不属于白盒测试能保证的是。
A. 模块中所有独立门路起码测试一次B. 测试所以逻辑决议真和假两个方面D.不正确或遗漏的功能答案 :D分数 :1题型 :单项选择题难度 :12.因果图方法是依据()之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序答案 :A分数 :1题型 :单项选择题难度 :13.使用白盒测试方法时,确立测试数据应依据()和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能答案 :A分数 :1题型 :单项选择题难度 :14.软件测试中常用的静态剖析方法是()和接口剖析。
A.引用剖析B.算法剖析C.靠谱性剖析D.效率剖析答案 :A分数 :1题型 :单项选择题难度 :15.软件测试中常用的静态剖析方法是引用剖析和()。
A.引用剖析B.算法剖析C.靠谱性剖析D.接口剖析答案 :D分数 :1题型 :单项选择题难度 :16.白盒方法中常用的方法是()方法。
A.路径测试B.等价类C.因果图D.概括测试答案 :A分数 :1题型 :单项选择题难度 :17.在软件工程中,白箱测试法可用于测试程序的内部构造。
此方法将程序看作是()A.路径的会合B.循环的会合C.目标的会合D.地点的会合答案 :A分数 :1题型 :单项选择题难度 :18.软件测试白箱测试是对软件的构造进行测试,下述:Ⅰ .边沿值剖析Ⅱ .语句测试Ⅲ .分值测试Ⅳ .路经测试()是其应包含的内容。
A. ⅠB. Ⅱ和ⅢC.Ⅲ和ⅣD. Ⅱ .Ⅲ和Ⅳ答案 :D分数 :1题型 :单项选择题难度 :19.在进行单元测试时,常用的方法是()。
A.采纳白盒测试,辅之以黑盒测试B.采纳黑盒测试,辅之以白盒测试D.只合用黑盒测试答案 :A分数 :1题型 :单项选择题难度 :110. 白盒测试法一般使用于()测试。
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/int logicExample(int x, int y){int magic=0;if(x>0 && y>0){magic = x+y+10; // 语句块1}else{magic = x+y-10; // 语句块2}if(magic < 0){magic = 0; // 语句块3}return magic; // 语句块4}解答:一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
2、测试用例:{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0 || y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
在本例中共有两个判断if(x>0 && y>0)(记为P1)和if(magic < 0)(记为P2)。
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
例题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.下列选项中不属于测试评估内容的是()A)对测试工作的总结B)对测试过程的评估C)对缺陷数据的分析D)对测试人员的评估2.在loadrunner中,能够帮助用户定位问题并生成性能测试报告的模块是()A)load generatorB)Mi listenserC)ControllerD)Analysis3.在XML中,下列关于标识和属性的描述中正确的是()A)标识可以不成对出现B)一个标识只能有一个属性C)标识是由用户自己创建的D)标识和属性是同一概念的不同表述方式4.在linux中,从vi输入模式切换到命令模式,可以按下键盘(esc)5.在c语言中,下列用于连接两个字符串的函数是()A)StrcpyB)StrlenC)StrcmpD)Strcat6.下列白盒测试策略中,通常需要实际运行被测程序的是()A)桌前检查B)静态分析C)单元测试D)代码评审7.通常,如果用下图表示软件开发不同阶段引入缺陷的比例,则其中最能表示在需求说明书阶段引入缺陷的是()3142A)1 B)2 C)3 D)48.在计算机硬盘中,所有盘面上的同一磁道构成一个圆柱,通常被称作()A)磁道B)盘面C)柱面D)扇区9.文档测试中需要对用户说明书进行测试,下例关于对用户说明书的测试说法中错误的()A)语言检查:检查标准时说明书语言专业,用词华丽B)功能检查:检查标准时功能描述完整、准确、并且没有描述不存在的功能C)图片检查:检查标准时图片正确、清晰D)排版检查:检查标准是排版正确、合理、风格统一10.对一台硬件正常的A TM机进行提取功能测试,若该机允许的提取增量为100元,提取金额从100元到5000元人民币(含5000元人民币)。
使用等价类划分方法设计测试用例,则下例说法中错误的是()选2个A)提取20元人民币的数据输入属于无效等价类数据B)提取150元人民币的数据输入属于有效等价类数据C)提取5100元人民币的数据输入属于无效等价类数据D)提取5000元人民币的数据输入属于无效等价类数据E)提取2000元人民币的数据输入属于有效等价类数据11.在testdirector 中,下列关于定制邮件内容的说法错误的是()选2个A)testedirector允许对项目邮件发送的条件进行定制B)testdirector具有自动向相关人员发送邮件的功能C)testdirector不能为相关人员定制收到的邮件内容D)testdirector不具备手动向相关人员发送邮件的功能12.下列关于白盒测试和黑盒测试的说法中正确的是()选2个A)只要通过白盒测试或黑盒测试对程序进行彻底的测试,就可以发现程序中所有的潜在缺陷B)在单元测试时大量采用白盒测试,在系统测试和确认测试时通常采用黑盒测试C)白盒测试和黑盒测试时两种相互独立的测试方法,在白盒测试中不能使用黑盒测试的思考方法D)白盒测试关注软件的结构和逻辑细节,而黑盒测试则关注软件的用户需求13.在c语言中,假设指针p和数组b[4]是相同的数据类型,且p的初值为&b[0],则p+3指的元素为()A)b[3] B)&b[3] C)b[2] D)&b[2]14.根据国家相关标准的规定,SQLserver 2005属于软件分类中的()A)系统软件B)工具软件C)支持软件D)应用软件15.在linux中,用rpm命令来判断一个命令属于哪个安装包时,用到的参数是()A)—qf B)—ql C)—pl D)—pf16.在c语言中,有一函数关系如下所示:x-1 (c<0)Y={x (x=0)X+1 (x>0)则下列各程序段中能正确表达上述关系的是()A)if(x>=0)y=x+1;if(x==0)y=x;else y=x-1;B)if(x!=0)y=x-1;if(x>0)y=x+1;else y=x;C)if(x<=0)if(x<0)y=x-1;else y=x;else y=x+1;D)If(x<=0)y=x;if(x<0)y=x-1;else y=x+1;17.下列关于卸载测试的说法中错误的是()A)卸载后要查看注册表中相关的注册信息是否都被删除B)在卸载过程中,需要测试卸载界面上的按钮功能是否都能实现C)需要测试卸载过程中突然中断卸载操作后的反应D)卸载测试方法中不包括卸载正在使用的程序18.下列所示的程序控制流程图和()的程序控制结构相符A)if 选择结构B)Until 循环结构C)While循环结构D)Switch 分支结构19.通常情况下,下列关于软件测试于调试的说法中错误的是()A)软件测试工作可以由测试人员和程序共同参与B)软件测试主要集中在开发阶段进行,而软件调试将贯穿于整个软件生命周期C)软件调试的主要任务是确定程序中潜在错误的确切位置和原因并加以改正D)软件调试通常是由开发人员完成的工作20.下列数据库管理系统中,只能在windows平台上运行的是()A)OracleB)SQLserverC)DB2D)Sybase21.在testdirector中,当测试人员向项目的缺陷管理模块中提交一个缺陷后,缺陷状态默认被置为()A)OpenB)NewC)ResolvedD)Unconfirmed22.在linux系统中,下列关于命令“mv conf conf.old”(其中conf和conf.old均为文件)所实现的功能说法正确的是()A)拷贝文件B)重命名文件C)创建归档文件D)解压缩文件23.通常情况下,下列关于控件测试的说法中正确的是()选2项A)要求控件摆放对齐,间隔一致,没有重叠区域B)控件中有错别字是软件的bug,而中英文混合不算是软件的bugC)文字的全角和半角混用不影响软件的功能,不是软件的bugD)控件的字体和大小都一致,是软件的bugE)要求控件显示完整,不被裁切24.图形矩阵是为()能够实现工具化得一种方法A)循环覆盖测试B)基本路径测试C)路径覆盖测试D)判定覆盖测试25.在windows server2003中,小列关于组策略的说法中错误的是()A)组策略中包含计算机配置和用户配置B)使用组策略可以设置计算机启动/关机、用户登录/注销等脚本C)默认情况下,域控制器安全策略会影响相关域中的所有计算机D)默认情况下,应用于域的组策略影响域中的所有计算机和用户26.有如下c语言程序:#include<stdio.h>Struct student{int a,b,c};V oid main(){Struct student stu[2]={{1,2,3},{4,5,6}}int t;t=sru[0].a+stu[1].b%stu[0].c;Printf("%d \n",t);}则程序运行后的输出结果是()A)5 B)3 C)1 D)027.在“输入非法数据”的测试模型中,对于输入,需要从下列()方面进行考虑1 输入数据的类型2输入数据的长度3输入数据的边界值4输入数据的默认值A)1 2 3B)2 3 4C)1 2 4D)1 2 3 428.有如下c语言程序#include<stdio.h>V oid main(){int y=10;do{y--;}while(--y);Printf("%d\n",y--);}则程序运行后的输出结果()A)-1B)0C)1D)829.c语言中允许函数类型缺省定义,此时该函数隐含的类型是()A)float型B)int 型C)Long型D)V oid型30.在SQLserver2000 的某数据库中,有一张商品信息表(goods)若要查询不同厂家(pro_name)的数量,下列SQL语句中可以正确实现的是()A)SELECT SUM(DISTINCT pro_name)FROM goodsB)SELECT COUNT(DISTINCT pro_name)FROM goodsC)SELECT SUM(UNIQUE pro_name)FROM goodsD)SELECT COUNT(UNIQUE pro_name)FROM goods31.下列关于缺陷报告书写准则的说法中错误的是()A)报告的缺陷信息应真实准确,不能为了引起关注而夸大缺陷的严重性B)使用最少的步骤重现缺陷,但要包含所有重视缺陷的必要步骤C)尽量吧一个模块的缺陷写在一个报告中,以节约开发人员的阅读时间D)不可重现的错误、小缺陷报告中32.扇入与扇出是软件结构度量中的常用方法,下列关于扇入与扇出的说法正确的是()A)扇入数是调用给定模块的次数B)扇出数是调用给定模块的次数C)扇出数是给定模块所调用的模块数量D)扇入是给定模块所调用的模块数量33.通常,下列关于窗体测试的说法中错误的是()A)对于含有按钮的界面一般要求必须支持缩放操作B)在不同的计算机显示分辨率下,窗体内容正确显示C)多个子窗体弹出时应依次向右下方偏移,以显示出窗体标题D)缩放窗体时,窗体上的控件也应随着窗体而缩放34.下列关于在QTP的对象仓库中维护对象的说法错误的是()选2项A)在对象仓库的树型列表中选中一个对象后,会在右侧的属性信息中列出该对象的全部属性B)测试人员完成录制脚本的操作后,就不能在对象仓库中添加和删除对象了C)为对象启用了自动识别机制后,可以在一定程度上减少回放脚本时找不到对象的问题D)如果知道某个对象的属性发生了变化,测试人员可以再对象仓库中修改该属性,以避免回放脚本时出错35.有如下c语言程序#include<stdio.h>V oid main(){Static int x=1;int y=4;Int z=0;X++;Y--;Z=x>=y?1:0;Printf("%d",z);}V oid main(){Int a;For(a=0;a<3;a++)Function();}则程序运行后的输出结果是()A)0 1 1B)0 0 1C)1 0 1D)1 1 036.关于loadrunner中的聚合点的位置,下列说法中正确的是()选2个A)可以在脚本中的vuser_init部分插入集合点B)可以在脚本中vuser_end部分插入集合点C)只能在脚本中的action部分插入集合点D)集合点经常和事务结合使用,通常放在事务的前面37.要使用一块硬盘的分区数为5,下列分区方式正确可行的是()A)将硬盘分成5个主分区B)将硬盘分成3个主分区和2个扩展分区C)将硬盘分成3个主分区和1个扩展分区D)将硬盘分成4个主分区和1个扩展分区38.在HTML中,若要设置表格中某一行的背景颜色,下列语句中正确的是()A)<th bhcolor=#>B)<td bhcolor=#>C)<tr bhcolor=#>D)<table bhcolor=#>39.下列关于常用测试方法的描述中错误的是()A)错误猜测是基于经验和直觉推测程序中所有可能存在的错误B)随机测试的所有输入数据都是随机生成的,其目标是模拟用户的操作C)通过测试主要用于验证系统和它的需求是否一致,确认软件至少能做什么D)失败测试时不要蓄意攻击软件薄弱的环节40.如果用户被设置拒绝写人某文件夹的权限,而该用户所属的组对该文件夹具有写入的权限,则下列说法正确的是()A)该用户对该文件夹所具有的权限无法确定B)该用户对该文件夹一定具有读取权限C)拒绝权限高于一切,该用户对该文件夹具有拒绝写入的权限D)权限是积累的,该用户对该文件夹具有写入权限41.在c语言中,如果函数malloc 未能成功执行分配到满足尺寸的内存,则该函数的返回值是()A)0B)-1C)eofD)null42.下列关于测试用列和测试需求的说法中正确的是()选2个A)测试需求来源于测试用例,是对测试用例的总结B)测试用例来自于测试需求,是对测试需求的细化C)测试用例控制软件测试的执行过程,是对每个测试项目的实例化D)测试需求等同于测试计划,是测试过程中的指导性文档43.有效性测试是在模拟的环境下,运用墨盒测试的方法验证所测试软件是否()中所列的要求。
大连东软信息学院软件测试考题题库白盒测试方法习题及答案1.计算环路复杂度方法有哪三种,答:(1)V(G)=判定节点数+ 1 ;(2)V(G) = E-N+2 ;(3)V(G)=区域数+ 12.白盒测试有几种方法,白盒测试方法分为两大类:静态测试方法和动态测试方法。
答:静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
4.比较白盒测试和黑盒测试,答:使用白盒测试方法时,测试根据程序的内部逻辑和指定的覆盖标准;黑盒测试法是通过分析程序的接口功能设计测试用例的。
5.为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。
int test(int A,int B){if((A>1) AND (B<10)) thenX=A-B;if((A=2) OR (B>20)) thenX=A+B;return x;}答:语句覆盖测试用例:A=2,B=0;判定覆盖测试用例:A=3,B=0;A=2,B=20;条件覆盖测试用例:A=2,B=0;A=0,B=21;6. 为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。
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);} //语句块1if ( (x==4)||(y>5) ){ j=x*y+10; } //语句块2j=j%3; //语句块3}答:语句覆盖测试用例:x=4、y=5、z=5;判定覆盖测试用例::x=4、y=5、z=5;x=2、y=5、z=5;条件覆盖测试用例:x=4、y=6、z=5 ;x=2、y=5、 z=15 ; 8.看代码程序: void Sort ( int iRecordNum, int iType )1 {2 int x=0;3 int y=0;4 while ( iRecordNum> 0 )5 {6 If ( iType==0 )7 x=y+2;8 else9 If ( iType==1 ) 10 x=y+10; 11 else12 x=y+20;13 }14 }要求(1)给以上代码画出控制流图(2)控制流图的环复杂度V(G),写出独立路径。
1.说出静态白盒测试的几个好处
答:进行静态白盒测试的首要原因是尽早发现软件缺陷,以找出动态黑盒测试难以发现或隔离的软件缺陷。
另一个好处是给黑盒测试人员提供思路。
2.判断是非:静态白盒测试可以找出需求遗漏之处和相关问题。
答:错误,因为静态白盒测试保证程序中所有关键路径的测试,防止由于没有执行的路径在实际投入运行后执行到发生意外的情况,但无法找出需求遗漏之处和相关问题。
3.正式审查由哪些关键要素组成?
答:确定问题、遵守规则、准备、编写报告
4.为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判
定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖
语句覆盖:
判定覆盖
条件覆盖
将X>8 真为T1,假为F1 将Y>5 真为T2,假为F2 将X>0 真为T3,假为F3 将Y>0 真为T4,假为F4 将X>16 真为T5,假为F5 将Y>10 真为T6,假为F6
判定/条件覆盖
条件组合覆盖
组合1:T1,T2 组合5:T3,T4 组合9:T5,T6 组合2:T1,F2 组合6:T3,F4 组合10:T5,F6 组合3:F1,T2 组合7:F3,T4 组合11:F5,T6 组合4:F1,F2 组合8:F3,F4 组合12:F5,F6
路径覆盖:
所有路径:a b c d e f g h k m n p
6. 按照基本路径测试方法设计测试用例
●画流图、计算环形复杂度
●导出独立路径
流图如下:。
第五章白盒测试一、判断分析题1.语句覆盖是最弱的逻辑覆盖。
(√)2.语句覆盖是最强的逻辑覆盖。
(X)3.判定覆盖不一定包含条件覆盖。
(X)4.条件覆盖不一定包含判定覆盖。
(√)5.判定/条件覆盖能同时满足判定、条件两种覆盖标准。
(√)6.判定/条件覆盖指满足判定覆盖标准或条件覆盖标准。
(X)7.DD-路径图是一种压缩图。
(X)8.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。
(X )9.尽量用公共过程或子程序去代替重复的代码段。
(X)10.对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(√)11.尽量采用复合的条件测试,以避免嵌套的分支结构。
(√)12.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
(√)二、简答题1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。
它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。
从这一层意义上讲,组件是指多个单元的集成聚合。
在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。
方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。
最后,将构成进程的所有模块一起测试。
系统测试是将经过测试的子系统装配成一个完整系统来测试。
它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。
白盒测试用例练习一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定 / 条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
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;}//语句块2j=j%3;//语句块3}k=0j=0ax>3 and z<10N bx=4 or y>5N d Y ck=x*y-1 j=sqrt(k)eYj=x*y+10j=j%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、语句覆盖判定N 的取值覆盖路径测试用例输入输出判定M的取值x=4,z=5,y=8k=31,j=0T T P1(a-c-e)2、判定覆盖p1 和 p4 可以作为测试用例,其中p1 作为取真的路径,p4 作为取反的路径。
测试用例输入输出判定 M的取值判定 N 的取值覆盖路径x=4,z=5,y=8k=31,j=0T T P1(a-c-e) x=2,z=11,y=5k=0,j=0F F P4(a-b-d)也可以让测试用例测试路径P2 和 P3。
相应的两组输入数据如下:测试用例输入输出判定 M的取值判定 N的取值覆盖路径x=5,z=5,y=4k=19,j=sqrt(19)T F P2(a-c-d)%3x=4,z=11,y=6k=0,j=1F T P3(a-b-e)3、条件覆盖对于 M: x>3 取真时 T1,取假时F1;z<10取真时 T2,取假时F2;对于 N: x=4 取真时 T3,取假时F3;y>5取真时 T4,取假时F4。
#include <iostream.h> //白盒测试测验题目白盒测试测验题目//程序功能:输入年、月,输出该月份的最大天数 void main() 1{2 int year, int month;3 int maxday = 0;4 cin>>year>>month;5 if ( month >= 1 && month <= 12 )6 {7 if ( month == 2 )8 {9 if ( year % 4 == 0 ) 10 { 11 if ( year % 100 == 0 ) 12 {13 if ( year % 400 == 0 ) 14 maxday = 29; 15 else16maxday = 28;17 } 18 else19 maxday = 29; 20 } 21else22 maxday = 28; 23 } 24 else 25 {26 if ( month == 4 || month == 6 || month == 9 || month == 11 ) 27 maxday = 30; 28 else29 maxday = 31; 30 } 31 }32cout<<"The MaxDay is:"<<maxday<<endl;33}要求:要求: 1. 画出该程序的程序流程图画出该程序的程序流程图1 2345 7 F1T168 10 F 2 T2912 11 27 F3 T 31331 33 F6 T632 28 14 29 23 F4 T4 1535 24 341630 25 36 18 F5 T51737 2026 2138 2219 39400:开始:开始 1 2 3456798 101112 13 14 1516 17 18 19 2021 22 23242526 27 28 29 30 31 323334:结束结束2. 画出该程序的DD 路径图路径图转换后的(D-D 图):A :{1-5};B :{6-7};C:{8-9}; D :{24-26};E :{10-11}; F :{21-23}; G :{12-13}; H :{18-20}; I :{14};J :{15-17};K :{27}; L :{28-31}; M :{32-33}; F1T1F2 T2T3F6 T6 F3 F4 T4F5T50:开始开始ABD C FEH GJ KL M 34:结束:结束 I3. 试用路径覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定条件覆盖以及路径覆盖五种方法对上述问题设计测试用例述问题设计测试用例 1.语句覆盖:语句覆盖: 测试用例编号输入数据输入数据预期输出结果预期输出结果 覆盖语句覆盖语句yearmonthTC-00120002The MaxDay is:290,1,2,3,4,5,6,7,8,9,10,11,12,13,14,32,33,34TC-002 1700 2 The MaxDay is:280,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,32,33,34 TC-003 1604 2 The MaxDay is:290,1,2,3,4,5,6,7,8,9,10,11,18,19,20,32,33,34TC-004 1605 2 The MaxDay is:28 0,1,2,3,4,5,6,7,8,9,21,22,23,32,33,34TC-005 1914 6 The MaxDay is:30 0,1,2,3,4,5,6,7,24,25,26,27,32,33,34TC-006 1914 7 The MaxDay is:310,1,2,3,4,5,6,7,24,25,26,28,29,30,31,32,33,342.判定覆盖:判定覆盖:解释:我在各判断分支的真假分支都编有相应的真假符号,在判定覆盖中用判定分支的真假序号表示; 测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖判定覆盖判定yearmonthTC-001 2000 2 The MaxDay is:29 T1,T2,T3,T4,T5 TC-002 1700 2 The MaxDay is:28 T1,T2,T3,T4,F5TC-003 1604 2 The MaxDay is:29 T1,T2,T3,F4TC-004 1605 2 The MaxDay is:28 T1,T2,F3TC-005 1914 6 The MaxDay is:30 T1,F2,T6TC-006 1914 7 The MaxDay is:31 T1,F2,F6TC-007 1914 14 The MaxDay is:0 F13.条件覆盖:条件覆盖:(1)在判定语句5中有以下条件:中有以下条件:1.month >= 1 ;2.month <= 12 ;(2)在判定语句7中有以下条件:中有以下条件:3.month == 2;(3)在判定语句9中有以下条件:中有以下条件:4.year % 4 == 0;(4)在判定语句11中有以下条件:中有以下条件:5.year % 100 == 0;(5)在判定语句13中有以下条件:中有以下条件:6. year % 400 == 0;(6)在判定语句26中有以下条件:7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11;测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的条件覆盖的条件yearmonthTC-001 2000 0 The MaxDay is:0 F1TC-002 1700 15 The MaxDay is:0 T1,F2TC-003 2000 2 The MaxDay is:29 T1,T2,T3,T4,T5,T6 TC-004 1605 4 The MaxDay is:30 T1,T2,F3,T7TC-005 1900 2 The MaxDay is:28 T1,T2,T3,T4,T5,F6TC-006 1604 2 The MaxDay is:29 T1,T2,T3,T4,F5TC-007 2013 2 The MaxDay is:28 T1,T2,T3,F4TC-008 1700 5 The MaxDay is:31 T1,T2,F3,F7,F8,F9,F10TC-009 1604 11 The MaxDay is:30 T1,T2,F3,F7,F8,F9,T10TC-0010 1605 9 The MaxDay is:30 T1,T2,F3,F7,F8,T9TC-0011 1914 6 The MaxDay is:30 T1,T2,F3,F7,T84.判定条件覆盖:(1)在判定语句5中有以下条件:中有以下条件:1.month >= 1 ;2.month <= 12 ;(2)在判定语句7中有以下条件:中有以下条件:3.month == 2;(3)在判定语句9中有以下条件:中有以下条件:4.year % 4 == 0;(6)在判定语句11中有以下条件:中有以下条件:5.year % 100 == 0;(7)在判定语句13中有以下条件:中有以下条件:6. year % 400 == 0;(6)在判定语句26中有以下条件:7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11;(覆盖的判定语句在程序流程图中有标识)(覆盖的判定语句在程序流程图中有标识)测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的条件覆盖的条件 覆盖的判定覆盖的判定yearmonthTC-001 2000 0 The MaxDay is:0 F1 F1 TC-002 1700 15 The MaxDay is:0 T1,F2 F1TC-003 2000 2 TheMaxDay is:29 T1,T2,T3,T4,T5,T6 T1,T2,T3,T4,T5TC-004 1605 4 TheMaxDay is:30 T1,T2,F3,T7 T1,F2,T6TC-005 1900 2 TheMaxDayis: 28 T1,T2,T3,T4,T5,F6 T1,T2,T3,T4,F5TC-006 1604 2 The MaxDay is:29 T1,T2,T3,T4,F5 T1,T2,T3,F4 TC-007 2013 2 The MaxDay is:28 T1,T2,T3,F4 T1,T2,F3TC-008 1700 5 The MaxDay is:31 T1,T2,F3,F7,F8,F9,F10T1,F2,F6TC-009 1604 11 The MaxDay is:30 T1,T2,F3,F7,F8,F9,T10T1,F2,T6TC-0010 1605 9 The MaxDay is:30 T1,T2,F3,F7,F8,T9T1,F2,T6TC-0011 1914 6 The MaxDay is:30 T1,T2,F3,F7,T8 T1,F2,T65.路径覆盖:路径覆盖:解释:我在控制流程图的各条边上都编了序号,在路径覆盖中覆盖的路径用分支边上的序号表示;测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的路径覆盖的路径year monthTC-001 2000 2 The MaxDay is:29 1-2-3-4-5-6-8-9-11-13-14-15-16-17-19-39-40 TC-00217002The MaxDay is:281-2-3-4-5-6-8-9-11-13-14-15-16-18-20-21-22-39-40TC-003 1604 2 The MaxDay is:29 1-2-3-4-5-6-8-9-11-13-14-23-24-25-26-39-40 TC-004 1605 2 The MaxDay is:28 1-2-3-4-5-6-8-9-11-27-28-29-30-39-40TC-005 1914 6 The MaxDay is:30 1-2-3-4-5-6-8-10-12-31-32-34-39-40TC-006 1914 7 The MaxDay is:31 1-2-3-4-5-6-8-10-12-31-33-35-36-37-38-39-40 TC-007 191414The MaxDay is:01-2-3-4-5-7-39-404. 用三种方法求出上述问题的圈复杂度(基路径数量V (G ))方法一:判定()结点个数计算法:V(G)=p+1;在此D-D 图中,判定结点个数为P=6;V(G)=6+1=7;方法二:.圈数计算法:V(G)= 圈数+1;该D-D 图中,圈数为6;V(G)=6+1=7;方法三:根据连通图公式计算:V(G)=E-N+2p ;E 是D-D 图中边的个数,图中边的个数, N 是D-D 图中结点的个数,p 是连通图的个数,p 一般等于1;在该图中E=40,N=35,p=1; V(G)=E-N+2p=40-35+2=7; 5. 写出上述问题的基路径测试方法所采用的基路径,写明过程写出上述问题的基路径测试方法所采用的基路径,写明过程过程:过程: 首先我根据D-D 路径来寻找基路径,找到一条最长的路径为路径1,再根据路径1中的中的 第一个分一个分支结点A 寻找其他没走过的路,这条路为路径2, 此时遍历完了分支结点A ,再在路径1中找第2个分支结点为B ,根据分支结点B 找到路径3,同理我们在路径1中还有分支结点C ,E ,G ,它们可以找到路径4,路径5和路径6,此时我们会发现已经查找完了5个分支结点,只剩下分支结点D 未被遍历,我们根据分支结点D 可以找到路径7,此时所有的基路径就已经全部找到的。
1、拍卖网站用户登录的流程如下图所示,程序完成后进行黑盒测试,采用等价类划分法。
请问“用户资料不齐全”属于[1]等价类“用户资料不齐全”不代表用户不存在或者密码错误,所以是有效等价类。
等价类可分两种情况:有效等价类和无效等价类。
有效等价类是指对程序的规格说明是有意义的、合理的输入数据所构成的集合;无效等价类是指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
1、[1]中填入[#####] 有效2、紧接上题操作,用户表如下┏━━━━━━━━━━━━━┯━━━━━━┓┃用户名│密码┃┠─────────────┼──────┨Array┃ long │ 123456 ┃┠─────────────┼──────┨┃ guagua │ 123456 ┃┠─────────────┼──────┨┃ linda │ 123456 ┃┠─────────────┼──────┨┃ mimi │ 123456 ┃┠─────────────┼──────┨┃ ddd│ 111111 ┃┗━━━━━━━━━━━━━┷━━━━━━┛设计测试用例如下帐户=linda,密码=[1] 12 覆盖等价类①②用户名存在、密码存在正确帐户=[2],密码=[3] 14 覆盖等价类①④用户名存在、密码不存在帐户=long555,密码=111111 3 覆盖等价类③用户名不存在帐户=[4],密码=111111 15 覆盖等价类①⑤ 用户名存在、密码不正确 覆盖所有等价类,[1]、[2]、[3]、[4]中应该分别顺序填入 1、123456、ddd 、111111、mimi 2、111111、ddd 、111111、mimi 3、123456、mimi 、456789、mimi 4、111111、ddd 、123456、linda判定覆盖法,就是设计若干个测试用例,使得程序中的每一个判断的取真和取假分支都至少执行一次。
3、 一个用户注册的流程如下图所示,用户表如下,┏━━━━━━━━━━━━━┯━━━━━━┓ ┃ 用户名 │ 密码 ┃┠─────────────┼──────┨ ┃ ediok11 │ gzediok ┃ ┗━━━━━━━━━━━━━┷━━━━━━┛ 采用白盒测试法,使用判定覆盖,设计测试用例如下 用户名=[1],密码=ok1234,确认密码=ok1234 用户名=[2],密码=ok1234,确认密码=ok123 用户名=[3],密码=ok123,确认密码=ok123 用户名=gzediok ,密码=[4],确认密码=ok123 用户名=ediok12,密码=ok123,确认密码=ok123 用户名=ediok12,密码=ok1234,确认密码=ok1234 [1]、[2]、[3]、[4]中应该顺序填入1、张叁、edi 、ediok11、edi2、张叁、ediok 、edi 、edi3、edi 、张叁、ediok11、ok1234、edi 、张叁、ediok 、ok123①②③④⑤⑥ ⑦⑧⑨⑩3-1、 一个用户注册的流程如下图所示,用户表如下,┏━━━━━━━━━━━━━┯━━━━━━┓ ┃ 用户名 │ 密码 ┃┠─────────────┼──────┨┃edi123 │gzediok ┃ ┗━━━━━━━━━━━━━┷━━━━━━┛采用白盒测试法,使用判定覆盖,设计测试用例如下用户名=张叁,密码=ok1234,确认密码=ok1234 用户名=edi ,密码=ok1234,确认密码=ok123 用户名=[1],密码=ok123,确认密码=ok123 用户名=gzediok ,密码=ok1234,确认密码=ok123 用户名=ediok12,密码=ok123,确认密码=ok123用户名=ediok12,密码=[2],确认密码=ediok12 (2分)[1]中填入 edi123[2]中填入 ediok124、 交易大厅用户登录程序流程图如下图所示,完成后做测试,采用黑盒测试法,使用等价类划分法下面属于无效等价类的是1、用户不存在2、用户密码太短3、用户名长度太短4、用户密码正确① ② ③ ④ ⑤⑥⑦⑧⑨⑩5、 紧接上题,交易大厅管理员会员代码是admin ,密码是admin 。
【说明】本流程图描述了某子程序的处理流程,现要求用白盒测试法为该子程序设计测试数据。
【流程图】【问题】根据判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等5种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小测试数据组(用(1)~(12)回答)。
供选择的答案(1)X=90, Y=90: X=70, Y=70(2)X=90, Y=70; X=70, Y=90(3) X=90, Y=90: X=90, Y=75; X=75, Y=90(4) X=90, Y=75: X=75, Y=90: X=70, Y=70(5) X=90, Y=90: X=90, Y=75: X=75, Y=90; X=70, Y=70(6) X=80, Y=80: X=90, Y=70; X=70, Y=90; X=70, Y=70(7) X=80, Y=80: X=90, Y=75: X=90, Y=90; X=75, Y=90: X=70, Y=70(8) X=80, Y=80: X=90, Y=70: X=70, Y=90: X=70, Y=70; X=70, Y=75(9) X=80, Y=80: X=90, Y=75; X=90, Y=70: X=70, Y=80; X=70, Y=75: X=70,Y=70(I0) X=90, Y=90: X=90, Y-75; X=90, Y=70: X=75, Y=90: X=70, Y=70: X=70,Y=90(II) X=80, Y=80: X=90, Y=75; X=90, Y=70: X=70, Y-80: X=70, Y=75: X=70,Y=70: X=70,Y=90(12) X=80, Y=80: X=80, Y=70: X=70, Y=80: X=70, Y=70: X=90, Y=75: X=90,Y=70: X=70,Y=75: X=75, Y=90: X=75, Y=80; X=70, Y=90以下为C语言代码:intDoWork(int x, int y, int z){intj = 0;if (x > 3 && z < 10)j = x * y - 1;if (x == 4 || y > 5)j = x * y + 10;j = j % 3;return j;}写出分别达到语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、路径覆盖的测试用例。
白盒测试课程练习一、判断分析题1.语句覆盖是最弱的逻辑覆盖。
(√)2.语句覆盖是最强的逻辑覆盖。
(×)3.判定覆盖不一定包含条件覆盖。
(√)4.条件覆盖不一定包含判定覆盖.(√)5.判定/条件覆盖能同时满足判定、条件两种覆盖标准.(√)6.判定/条件覆盖指满足判定覆盖标准或条件覆盖标准。
(×)7.DD-路径图是一种压缩图。
(√)8.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。
(√)9.尽量用公共过程或子程序去代替重复的代码段。
(√)10.对于连锁型分支结构,若有n个判定语句,则有2n条路径。
(√)11.尽量采用复合的条件测试,以避免嵌套的分支结构。
(×)12.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁.(√)二、简答题1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试.黑盒测试主要是为了发现以下几类错误:1、是否有不正确或遗漏的功能?2、在接口上,输入是否能正确的接受?能否输出正确的结果?3、是否有数据结构错误或外部信息(例如数据文件)访问错误?4、性能上是否能够满足要求?5、是否有初始化或终止性错误?白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
白盒测试练习及答案1、在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中( A )是最强的覆盖准则。
为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试用例组。
若x, y是两个变量,可供选择的测试用例组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组,如表中给出,则实现判定覆盖至少应采取的测试用例组是( B )或( C );实现条件覆盖至少应采取的测试用例组是( D );实现路径覆盖至少应采取的测试用例组是( E )或( F )。
供选择的答案A:① 语句覆盖② 条件覆盖③ 判定覆盖④ 路径覆盖B~F:① Ⅰ和Ⅱ组② Ⅱ和Ⅲ组③ Ⅲ和Ⅳ组④ Ⅰ和Ⅳ组⑤ Ⅰ、Ⅱ、Ⅲ组⑥ Ⅱ、Ⅲ、Ⅳ组⑦ Ⅰ、Ⅲ、Ⅳ组⑧ Ⅰ、Ⅱ、Ⅳ组解答:A. ④ B. ⑤ C. ⑧ D. ④ E. ⑤ F. ⑧2. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到条件覆盖。
( B )int func(int a,b,c){ int k=1;if ( (a>0) || (b<0) || (a+c>0) ) k=k+a;else k=k+b;if (c>0) k=k+c;return k;}A. (a,b,c) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,9,-2)、(-4,8,3)3. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定覆盖。
( D )int func(int a,b,c){ int k=1;if ( (a>0) &&(b<0) && (a+c>0) ) k=k+a;else k=k+b;if (c>0) k=k+c;return k;}A. (a,b,c) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,-9,-2)、(-4,8,3)4. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定条件覆盖。
覆盖率(白盒)测试、功能(黑盒)测试(总分166,考试时间90分钟)一、选择题1. 使用白盒测试方法时,确定测试数据应根据______和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂结构C.使用说明书D.程序的功能2. 下列选项中不属于覆盖率对软件测试作用的是______。
A.得知测试是否充分B.了解测试的弱点在哪些方面C.指导设计能够增加覆盖率的测试用例D.协助找出代码中的语法错误3. 如果程序中有两个判定条件,其复合条件表达式分别为(a>=1)and(b<=10)和(a>0)or(c <4),为了达到100%的判定覆盖率,至少需要设计的测试用例个数为______个。
A.1 B.2 C.3 D.44. 以下程序的路径数为______条。
if(a>0)if(b>0)result=a+b;if(c>0) result+=1;A.3 B.6 C.8 D.125. 数据流覆盖关注的是程序中某个变量从其声明、赋值到引用的变化情况,它是______的变种。
A.语句覆盖 B.判定覆盖 C.路径覆盖 D.分支覆盖6. 下列选项中不能作为定义节点的是______。
A.过程调用 B.循环控制语句C.输入语句 D.输出语句7. 下列选项中不能作为使用节点的是______。
A.过程调用 B.循环控制语句C.输入语句 D.输出语句8. 以下程序如果采用路径覆盖法进行测试,则至少需要______个测试用例。
if (result==null || result.getRowCount() == 0)found=false;System.out.println("没有结果!!!");elseif(type==1)found=true;elsefound=false;A.2 B.3 C.4 D.59. 路径覆盖必定也满足______。
A.判定覆盖 B.条件覆盖C.语句覆盖 D.多条件覆盖10. 在用逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖等。
一、“白盒”测试1. 逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是(A)。
语句段:if (A && (B||C)) x=l;else x=O;用例表:A.①TRUE ②FALSE ③TRUE B.①TRUE ②FALSE ③FALSEC.①FALSE ②FALSE ③TRUE D.①TRUE ②TRUE ③FALSE2. 不属于白盒测试的技术是(C)。
A. 语句覆盖B. 判定覆盖C. 边界值分析D. 基本路径测试3.实际的逻辑覆盖测试中,一般以(C)为主设计测试用例。
A. 条件覆盖B. 判定覆盖C. 条件组合覆盖D. 路径覆盖4. 使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准。
A. 程序内部逻辑B. 程序的复杂度C. 使用说明书D. 程序的功能5. 在用白盒测试中的逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等,在下列覆盖中,(D)是最强的覆盖准则。
A. 语句覆盖B. 条件覆盖C. 判定-条件覆盖D. 路径覆盖6. 在用白盒测试中的逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等,其中(A)是最弱的覆盖准则。
A. 语句覆盖B. 条件覆盖C. 判定-条件覆盖D. 路径覆盖7.软件测试中白盒法是通过分析程序的(B)来设计测试用例的。
A. 应用范围B. 内部逻辑C. 功能D. 输入数据8.下列几种逻辑覆盖标准中,查错能力最强的是(D)。
A. 语句覆盖B. 判定覆盖C. 条件覆盖D. 条件组合覆盖9. 造成测试覆盖率不达标的原因可能是(D)。
A. 存在不可到达的代码或冗余的代码B. 测试用例不足C. 存在不可能的路径和条件D. 以上全部10. 下列叙述中,(A)是正确的。
白盒测试复习题一、名词解释:1、白盒测试(也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。
它根据程序的控制结构设计测试用例,主要用于软件或程序验证。
白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。
但即使每条路径都测试过了,仍然可能存在错误。
因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。
穷举路径测试不可能查出程序因为遗漏路径而出错。
穷举路径测试发现不了一些与数据相关的错误。
2、语句覆盖(选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。
3、判定覆盖(通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值,也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。
4、条件覆盖(设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。
5、判定/条件覆盖(设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。
6、组合覆盖(通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。
——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。
)7、路径覆盖(设计足够多的测试用例,要求覆盖程序中所有可能的路径。
)二、简答题基本路径测试方法包括哪些步骤?路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。
完成路径测试的理想情况是做到路径覆盖,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。
在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。
白盒测试练习题
1、为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
程序如下,请按要求设计测试用例。
要求:画出流程图分别写出满足语句覆盖和判定覆盖的测试用例
1)画出控制流图;
2)分析复杂性;
3)给出独立路径并设计测试用例;
4)画出N-S图;
5)计算要满足覆盖所需要的最少测试用例数;
6)设计满足条件覆盖的测试用例。
7)设计满足条件组合覆盖的测试用例
#include <stdio.h>
void main()
{
char c;
int letters=0,space=0,digit=0,other=0; ①
printf("请输入一行字符:\n");
while((c=getchar())!='\n') ②
{
if(c>='a' && c<='z' || c>='A' && c<='Z') ③
letters++; ④
els e if(c==' ') ⑤
space++; ⑥
else if(c>='0' && c<='9') ⑦
digit++; ⑧
else
other++; ⑨
} ⑩
printf("其中:字母数=%d,空格数=%d ,数字数=%d ,其它字符数=%d\n",letters,space,digit,other); ⑾
}。