精选-《软件测试基础》期末试卷及参考答案.doc
1、判定覆盖设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支_至少被执行一次。2、黑盒测试的具体技术方法 _、 _、 _、_。等价类划分法,边界值分析法,决策表法,因果图法3、黑盒测试又称之为_测试。功能4、等价类划分有两种不同的情况:_和_。有效等价类,无效等价类5、根据覆盖目标的不同,逻辑覆盖又可分为:_,_,_,_,条件组合覆盖,判断/条件覆盖。语句覆盖,判定覆盖,条件覆盖,路径覆盖6、根据软件生命周期中的定义,可以把自动化测试工具划分3大类_,_和_。白盒测试工具、黑盒测试工具、测试管理工具7、软件测试是为发现程序中的_而执行程序的_。错误,过程8、测试用例是由_和预期的_两部分组成。测试输入数据 ,输出数据9、白盒测试又称为_,可以分为_和_两大类。结构测试,静态测试,动态测试10、软件是包括_的完整集合。程序,数据,相关文档11、边界值分析法属于_。黑盒测试12、单元测试是以_说明书为指导,测试源程序代码。详细设计13、集成测试以_说明书指导,测试软件结构。概要设计14、确认测试以_说明书为指导。需求分析15、软件开发的基本过程_,_,_,_,_,_。需求分析、概要设计、详细设计,编码,测试、维护16、代码复审属于_,不实际运行程序。静态测试17、集成测试把模块组成成系统的测试方式:_和_。一次性集成测试,增量式集成测试18、黑盒测试有两种基本方法,即:_和_。通过测试,失败测试二、选择题(每题3分,共10题,分数为30分)1. 下列哪一项不是白盒测试?(C)A.单元测试 B.集成测试 C.系统测试 D.回归测试2. 属于黑盒测试的方法?(C)A.基于基本路径 B.控制流 C.基于用户需求测试 D.逻辑覆盖3在Assert类中断言对象为NULL是_。(C)A.assertEquals B.assertTrue C.assertNull D.fail4_的目的是对最终软件系统进行全面的测试确保最终软件系统产品满足需求。(A)系统测试 集成测试单元测试 功能测试5在Assert类中断言两个对象相等是_。(A)A.assertEquals B.assertTrue C.assertSame D.fail6有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准_。(B)A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖7. 在Assert类中断言测试失败是_。(D)A.assertEquals B.assertTrue C.assertSame D.fail8.软件测试的目的是_。(C)表明软件的正确性 评价软件质量尽可能发现软件中的错误判定软件是否合格9.关于白盒测试与黑盒测试的最主要区别,正确的是_。(A)白盒测试侧重于程序结构,黑盒测试侧重于功能白盒测试可以使用测试工具,黑盒测试不能使用工具白盒测试需要程序参与,黑盒测试不需要黑盒测试比白盒测试应用更广泛10.软件测试类型按开发阶段划分_。(B)需要测试单元测试集成测试单元测试集成测试确认测试系统测试验收测试单元测试集成测试确认测试调试单元测试功能测试11.在Junit中,testXXX()方法就是一个测试用例,测试方法是_。(B) private void testXXX() public void testXXX() public float testXXX() public int testXXX() 12.在下面所列举中的逻辑测试覆盖中,测试覆盖最强的是_。(B)条件覆盖 条件组合覆盖语句覆盖 判定覆盖13.在下面所列举中的逻辑测试覆盖中,测试覆盖最弱的是_。(C)条件覆盖 条件组合覆盖语句覆盖 判定覆盖14.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?(B)A集成测试 B单元测试C目的测试 D确认测试15.增量式集成测试有3种方式:自顶向下增量测试方法, 和混合增量测试方式。(B)A自中向下增量测试方法 B自底向上增量测试方法C多次性测试 D维护16.Junit的TestCase类提供 和tearDown()方法,分别完成对测试环境的建立和拆除。(A)AsetUp()Bset() Csetap() DsetDown()17. _方法根据输出对输入的依赖关系设计测试用例。(C)路径测试 等价类 因果图 归纳测试18.Junit测试在单元测试阶段测试,主要用于_。(A) 白盒测试 灰盒测试 黑盒测试 确认测试19.不属于白盒测试的技术是_。(C)A路径覆盖 B判定覆盖 C边界值分析 D条件覆盖20.软件测试过程中的集成测试主要是为了发现_阶段的错误码。(B)A需求分析 B概要设计C编码 D维护21.增量式集成测试有3种方式: ,自底向上增量测试方法和混合增量测试方式。(A)A自顶向下增量测试方法 B一次性集成测试C多次性测试 D维护22.Junit适用于java开发人员在_阶段,进行单个方法实现功能或者类本身的测试,主要用于白盒测试。(C)集成测试 验收测试 单元测试 确认测试23.软件测试是按照特定的规程,_的过程。(A)发现软件错误 说明程序正确 证明程序没有错误 设计并运行测试用例24.一个成功的测试是_。(B)发现错误码 发现了至今尚未发现的错误 没有发现错误码 证明发现不了错误25.按照测试组织划分,软件测试可分为:开发方测试,第三方测试, _。(C)集成测试 确认测试 用户测试 灰盒测试26.下列模型哪个软件测试过程模型 _。(A)W模型 漠布模型L模 型 G模型27.Junit有两个包:_和Junit.extensions。(B)Junit.frametest Junit.framework Junit.amework Junit.assert28.单元测试一般以_为主。(A)白盒测试 黑盒测试 系统测试 分析测试29.编码阶段产生的错误由_检查出来的。(A)单元测试 集成测试 系统测试 有效性测试30.代码检查法有桌面检查法,走查和_。(B)静态测试 代码审查 动态测试 白盒测试三简答题(每题10分,共4题,分数为40分) 1.计算环路复杂度方法有哪三种?答:(1)V(G)=判定节点数+ 1 ; (2)V(G) = E-N+2 ; (3)V(G)=区域数+ 12.白盒测试有几种方法?答:白盒测试方法分为两大类:静态测试方法和动态测试方法。静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。3.什么是软件测试,软件测试分为哪几个阶段。答:软件测试是为了发现程序中的错误而执行程序的过程。软件测试一般分为单元测试、集成测试和系统测试。4.比较白盒测试和黑盒测试?答:使用白盒测试方法时,测试根据程序的内部逻辑和指定的覆盖标准;黑盒测试法是通过分析程序的接口功能设计测试用例的。5. 为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。int test(int A,int B) if(A>1) AND (B<10) then X=A-B; if(A=2) OR (B>20) then X=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); /语句块1 if ( (x=4)|(y>5) ) j=x*y+10; /语句块2 j=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 ;7某公司人事软件的工资计算模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣当月薪资的;过失,扣年终奖的2%.(2)非年薪制员工:严重过失,扣当月薪资的;过失,扣当月薪资的%.根据题目内容列出条件和结果,给出决策表。答:条件:年薪制:严重过失结果:e1:扣月4% e2: 扣月8%e3: 扣年2%1234条件:C1C211001010动作e1e2e38.看代码程序: void Sort ( int iRecordNum, int iType )1 2 int x=0;3 int y=0;4 while ( iRecordNum> 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 else12 x=y+20;13 14 要求(1)给以上代码画出控制流图(2)控制流图的环复杂度V(G),写出独立路径。(1) 控制流图:(2)V(G)= 4 路径1:414 路径2:46713 4 14 路径3:4691013414路径4:4691213414-1从供选择的答案中选出应填入下列( )中的字句。软件测试的目的是( A )。为了提高测试的效率,应该( B )。使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。与设计测试数据无关的文档是( D )。软件的集成测试工作最好由( E )承担,以提高集成测试的效果。供选择的答案:A. 评价软件的质量 发现软件的错误 找出软件中的所有错误 证明软件是正确的B. 随机地选取测试数据 取一切可能的输入数据作为测试数据 在完成编码以后制定软件的测试计划 选择发现错误的可能性大的数据作为测试数据C. 程序的内部逻辑 程序的复杂程度 使用说明书 程序的功能D. 该软件的设计人员 程序的复杂程度 源程序 项目开发计划E. 该软件的设计人员 该软件开发组的负责人 该软件的编程人员 不属于该软件开发组的软件设计人员2请从供选择的答案中选出应填入下列( )中的字句。程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。供选择的答案:A. 过程,子程序,分程序 顺序,条件,循环 递归,堆栈,队列 调用,返回,转移B. 不能嵌套使用 只能用来写简单的程序 已经用硬件实现 只有一个入口和一个出口C. 筛选法 递归法 归纳法 逐步求精法D. 证明程序中没有错误 发现程序中的错误 测量程序的动态特性 检查程序中的语法错误E. 找出错误所在并改正之 排除存在错误的可能性3从下列关于软件测试的叙述中,选出5条正确的叙述。(1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(2) 尽量用公共过程或子程序去代替重复的代码段。(3) 测试是为了验证该软件已正确地实现了用户的要求。(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。(7) 发现错误多的程序模块,残留在模块中的错误也多。(8) 黑盒测试方法中最有效的是因果图法。(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。(10) 程序效率的提高主要应通过选择高效的算法来实现。4从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。A对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。B已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。C在意识到被测试模块的内部结构或算法的情况下进行测试。D为了确认用户的需求,先做出系统的主要部分,提交给用户试用。E在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。供选择的答案:AE: 仿真器 代码审查 模拟器 桩 驱动器 域测试 黑盒测试 原型 白盒测试 退化测试三、判断题:共10小题,每小题1分,满分10分;请将答案以“”、“×”形式填入题后括号中。1. 好的测试员不懈追求完美。( F )2. 测试程序仅仅按预期方式运行就行了。( F )3. 不存在质量很高但可靠性很差的产品。( T )4. 在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。( T )5. 静态白盒测试可以找出遗漏之处和问题。( T )6. 测试错误提示信息不属于文档测试范围。( F )7. 单元测试能发现约80%的软件缺陷。( T )8. 代码评审是检查源代码是否达到模块设计的要求。( T )9. 自顶向下集成需要测试员编写驱动程序。( F )10. 总是首先设计黑盒测试用例。( T )一、 名词解释(5×315分)1验收测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动。2失败测试纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试。3驱动模块驱动模块就是用来代替主模块,用它来调用子模块4. 桩模块集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。5白盒测试也称为结构化测试、基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。 六综合题(1×2020分)输入条件有效等价类无效等价类开头字符由0x或0X开头(1)以字母开头 以非0数字开头(2)(3)数值字符数字或AF的字母 (4)AF以外的字母(5)数值字符个数1个(6)0个(7)数值-7f且7f (8)7f7f(9)(10)用例1:0x7F, 覆盖等价类(1)(4)(6)(8) 用例2:-0Xb, 覆盖等价类(1)(4)(6)(8) 用例3:0X0, 覆盖等价类(1)(4)(6)(8) 用例4:0x, 覆盖等价类(1)(7) 用例5:A7, 覆盖等价类(2) 用例6:-1A, 覆盖等价类(3) 用例7:0X8h, 覆盖等价类(1)(5) 用例8:0x80, 覆盖等价类(1)(4)(10) 用例9:-0XaB, 覆盖等价类(1)(4)(9)-综合题:1.如图显示某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的判定覆盖、条件覆盖和条件组合覆盖。(20分)(每空答案:覆盖种类需满足的条件测试数据期望结果 判定覆盖A>1, B=0A=2, B=0执行S1A>1, B¹0或A£1, B=0或A£1, B¹0A=2, B=1或A=1, B=0或A=1, B=1 执行S2 条件覆盖以下四种情况各出现一次 A>1B=0A=2,B=0执行S1A£1B¹0A=1,B=1执行S2 条件组合覆盖A>1, B=0A=2, B=0执行S1A>1, B¹0A=2, B=1执行S2A£1, B=0A=1, B=0执行S2A£1, B¹0A=1, B=1执行S22、有二元函数f(x,y),其中x1,21,y1,31;请写出该函数采用基本边界值分析法设计的测试用例。(10分)答: <1,15>, <2,15>, <20,15>, <21,15>, <10,15>, <10,1>, <10,2>, <10,30>, <10,31> 3设一个控制流图如下,请给出环形复杂度和基本测试路径。(20分)答案:(1) 根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。公式1:V(G)=11-9+2,其中10是控制流图G中边的数量,8是控制流图中节点的数目。公式2:V(G)=3+1,其中3是控制流图G中判断节点的数目。公式3:V(G)=4,其中4是控制流图G中区域的数目。因此,控制流图G的环形复杂度是4。(2) 根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径:路径1:5->22路径2:5->7, 8->11, 12->21->5->22路径3:5->7, 8->16->17->19->21->5->22路径4:5->7, 8->16->18->19->21->5->224、设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1999年1月2029年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。(20分) 1)划分等价类并编号,下表等价类划分的结果输入等价类有效等价类无效等价类日期的类型及长度6位数字字符有非数字字符少于6位数字字符多于6位数字字符年份范围在19992029之间小于1999大于2029月份范围在0112之间等于00大于12 2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为、,设计的测试用例如下:测试数据 期望结果 覆盖的有效等价类200211 输入有效 、为每一个无效等价类设计一个测试用例,设计结果如下:测试数据 期望结果 覆盖的无效等价类99June 无效 20036 无效 2001006 无效 199712 无效 203001 无效 200100 无效 200113 无效 四 简答题(30分)1.试描述软件测试的定义?(3分)答:利用手工或者自动化的方式,按照测试方案对系统执行测试用例的过程叫做软件测试。2.什么是软件缺陷?(4分)答:满足以下条件的问题都叫缺陷:软件未达到产品说明书中已标明的功能软件出现了产品说明书中指明不会出现的错误软件功能超出了产品说明书指明的范围软件未达到产品说明书虽未指出但应达到的目标软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为该软件使用效果不好。3.常见的黑盒测试用例的设计方法?并分别简单介绍一下各自的思想。(8分)答:等价类划分:等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。边界值分析:对输入输出的边界值进行测试的一种黑盒测试方法。决策表法:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具因果图分析法:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。4. 列举常见的系统测试方法。答出来5个即可。(5分) 答:恢复测试安全测试强度测试性能测试正确性测试可靠性测试兼容性测试Web测试 5.文档测试主要测试哪些内容?答出来5点即可(5分)答:(1)检查产品说明书属性(2)检查是否完整(3)检查是否准确(4)检查是否精确(5)检查是否一致(6)检查是否贴切(7)检查是否合理(8)检查代码无关(9)检查可测试性6. 单元测试主要测试那几方面的问题?(5分)答:模块接口、局部数据结构、边界条件、独立的路径和错误处理。五,设计题1.输入条件有效等价类无效等价类是否三角形的三条边A>0 (1)A0 (7)B>0 (2)B0 (8)C>0 (3)C0 (9)A+B>C (4)A+BC (10)A+C>B (5)A+CB (11)B+C>A (6)B+CA (12)是否等腰三角形A=B (13)AB AND AB AND BC (16)B=C (14)C=A (15)是否等边三角形A=B AND A=C AND B=C(17)AB (18)AB (19)AB (20)编号【A B C 】覆盖等价类输出1【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)一般三角形2【0、1、2】(7)、不能构成三角形3【1、0、2】(8)、4【1、2、0】(9)、5【1、2、3】(10)、6【1、3、2】(11)、7【3、1、2】(12)、8【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(13)等腰三角形9【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(14)10【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(15)11【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(16)非等腰三角形12【3、3、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(17)等边三角形13【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(18)非等边三角形14【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(19)15【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(20)2. 一、 单项选择题:共20小题,每小题2 分,满分40分。1软件测试的目的:( c ) A. 避免软件开发中出现的错误 B. 发现软件开发中出现的错误 C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性 D. 修改软件中出现的错误 2、软件测试是采用( a )执行软件的活动。A测试用例B输入数据C测试环境D输入条件3、导致软件缺陷的最大原因是:( a )A软件需求说明书B设计方案C编码D维护4、在下列描述中,关于一个软件缺陷状态完整变化的错误描述是( d )A、打开修复关闭B、打开关闭C、打开保留D、激活修复重新打开5、在下列描述中,关于测试与调试的说法错误的是( d )A、测试是显示错误的行为;而调试是推理的过程;B、测试显示开发人员的错误。调试是开发人员为自己辩护;C、测试能预期和可控。调试需要想象、经验和思考;D、测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试不可能进行。6、某次程序调试没有出现预计的结果,下列( b )不可能是导致出错的原因。 A变量没有初始化 B编写的语句书写格式不规范 C循环控制出错 D代码输入有误 7、软件缺陷修复的代价最高的阶段为( a )A、发布阶段 B、需求阶段C、设计阶段 D、编码阶段8、不属于逻辑覆盖方法的是( d )。A组合覆盖 B判定覆盖 C条件覆盖 D接口覆盖9、( d )是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。A、条件覆盖 B、组合覆盖C、判定覆盖 D、语句覆盖10、( a )是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。A、判定条件覆盖 B、组合覆盖C、判定覆盖 D、条件覆盖11软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?( b )A功能测试B单元测试C结构测试D验收测试12、单元测试的主要任务不包括( b )。A出错处理 B全局数据结构C独立路径 D模块接口13、如下图所示的N-S图,至少需要( b )个测试用例完成逻辑覆盖。A12 B48C27 D1814、单元测试中用来模拟实现被测模块需调用的其他功能模块的是( b )。A驱动模块 B桩模块C主控模块 D真实的被调用模块15、集成测试计划应该在( b )阶段末提交。A、需求分析 B、概要设计C、详细设计 D、单元测试完成16、下列关于程序效率的描述错误的是( c )。A提高程序的执行速度可以提高程序的效率B降低程序占用的存储空间可以提高程序的效率C源程序的效率与详细设计阶段确定的算法的效率无关D好的程序设计可以提高效率17、下列( b )是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构,且不包含复合条件。ADD-路径图 B 控制流图CMM-路径图 D 模块调用图18、自底向上增量式集成测试中,下面( c )描述是正确的。 A测试由桩模块控制 B最上面的模块最先测试C父单元用测试过的子单元测试 D包含树的深度优先或广度优先遍历过程19、测试后程序中残存的错误数目与该程序中已发现的错误数目成( d )。A未知 B反比C相等