软件测试三四章作业-冯时雨
- 格式:doc
- 大小:118.50 KB
- 文档页数:6
2005年●在系统转换的过程中,旧系统和新系统并行工作一段时间,再由新系统代替旧系统的策略称为___(20)____;在新系统全部正式运行前,一部分一部分地代替旧系统的策略称为_____(21)_____。
(20)A.直接转换B.位置转换C.分段转换D.并行转换(21)A.直接转换B.位置转换C.分段转换D.并行转换●采用瀑布模型进行系统开发的过程中,每个阶段都会产生不同的文档。
以下关于产生这些文档的描述中,正确的是_____(25)____。
(25)A.外部设计评审报告在概要设计阶段产生B.集成测评计划在程序设计阶段产生C.系统计划和需求说明在详细设计阶段产生D.在进行编码的同时,独立的设计单元测试计划●关于软件测试对软件质量的意义,有以下观点:①度量与评估软件的质量;②保证软件质量;③改进软件开发过程;④发现软件错误。
其中正确的是_____(41)____。
(41)A.①、②、③B.①、②、④C.①、③、④D.①、②、③、④●软件质量的定义是_____(42)____。
(42)A.软件的功能性、可靠性、易用性、效率、可维护性、可移植性B.满足规定用户需求的能力C.最大限度达到用户满意D.软件特性的总和,以及满足规定和潜在用户需求的能力●某软件公司在招聘软件评测师时,应聘者甲向公司做如下保证:①经过自己测试的软件今后不会再出现问题;②在工作中对所有程序员一视同仁,不会因为在某个程序员编写的程序中发现的问题多,就重点审查该程序,以免不利于团结;③承诺不需要其他人员,自己就可以独立进行测试工作;④发扬咬定青山不放松的精神,不把所有问题都找出来,决不罢休;你认为应聘者甲的保证___(43)___。
(43)A.①、④是正确的B.②是正确的C.都是正确的D.都不正确●软件测试的对象包括_____(44)____。
(44)A.目标程序和相关文档B.源程序、目标程序、数据及相关文档C.目标程序、操作系统和平台软件D.源程序和目标程序●软件测试类型按开发阶段划分是_____(45)____。
ZWQ_ISTQBFL模拟题_2015_NO.1ISTQB FL初级认证模拟题(2013版V1.5)作者:郑⽂强个⼈声明1.本模拟题完全依据ISTQB初级认证⼤纲学习⽬标⽽编写,感谢ISTQB组织及作者提供的ISTQB知识体系;2.本模拟题只代表作者本⼈对ISTQB的理解,作者不对使⽤该模拟题⽽造成的任何后果负责;3.本模拟题只供软件测试爱好者个⼈学习使⽤,不能⽤于任何商业⽤途;ISTQB FL初级认证考题分布章节 K1 K2 K3 K4 Total1. 软件测试基础 4 3 0 0 72. 软件⽣命周期中的测试 4 2 0 0 63. 静态技术 210 0 34. 测试设计技术 4251125. 测试管理 3320 86. 软件测试⼯具 310 0 4Total 20 12 7 1 40ISTQB FL初级认证考题总共40道,每道题⽬的分值是1分,满分40分。
考试通过的要求是26及以上,即65%及以上的通过率。
作者简介:郑⽂强ISTQB认证讲师,CSTQB资深专家,⾸批ISTQB⾼级证书获得者, ISO 29119镜像⼯作组专家。
超过14年的软件测试、测试管理和测试能⼒改进实践经验。
先后在中兴通讯、阿尔卡特、朗讯科技等⼤型通讯/软件企业从事软件测试、测试管理、质量管理以及测试能⼒改进等⼯作。
擅长测试⽤例设计、测试过程监控和管理、探索性测试、基于风险的测试、测试过程分析和改进、根本原因分析RCA和缺陷预防等。
联系⽅式:1.测试QQ群:217 032 0222.个⼈⽹站:/doc/6bc52db3be23482fb5da4c02.html /主要课程:1.问题驱动的软件测试设计/⾼效测试:测试设计与执⾏的敏捷化2.全⽅位的软件测试管理/软件测试知识体系实战3.ISTQB认证考试培训(ISTQB认证讲师)主要作品:1.《软件测试管理》,郑⽂强、马均飞,电⼦⼯业出版社(2010年)2.《软件测试设计》,马均飞、郑⽂强,电⼦⼯业出版社(2011年)3.《软件测试基础教程》(第2版),郑⽂强等译,⼈民邮电出版社(2009年)4.《⾼级软件测试 - 卷1:⾼级软件测试分析员》,郑⽂强等译,清华⼤学出版社(2011年)5.《⾼级软件测试 - 卷2:⾼级软件测试经理》,郑⽂强等译,清华⼤学出版社(2012年)6.《软件测试基础教程》,郑⽂强等编著,清华⼤学出版社(2015年)第⼀章软件测试基础1. (K1) 下列关于错误、缺陷和失效的观点正确的是:A) ⼈都会犯错误,因此由⼈设计的程序也会引⼊缺陷;B) 只要软件中存在缺陷,那么就会产⽣失效;C) 失效主要是由⼈的错误造成的,和环境条件没有关系;D) 当存在缺陷的代码被执⾏时,才可能引发软件错误;2.(K1) 以下不属于软件测试的作⽤的是:A) 可以减少软件系统在运⾏环境中的风险;B) 可以提⾼软件系统的质量;C) 可能是为了满⾜合同或法律法规的要求;D) 可以⽤于评价开发团队的能⼒;3.(K1) 在判断测试是否⾜够时,下列哪些⽅⾯是不需要考虑的?A) 风险;B) 项⽬在时间上的限制;C) 项⽬在预算上的限制;D) 投⼊测试⼈员的数量;4. (K1) 以下哪个不是软件测试的⽬标?A) 发现缺陷;B) 增加对质量的信⼼;C) 为决策提供信息;D) 改进测试流程;5. (K2) 下列关于不同的测试阶段的描述错误的是:A) 维护测试通常是为了验证缺陷是否被正确修复;B) 组件测试的主要⽬标是尽可能的发现失效,从⽽识别和修正尽可能多的缺陷;C) 验收测试的主要⽬标是确认系统是否按照预期⼯作,从⽽增加信⼼;D) 不同测试阶段,其测试⽬标是不同的;6. (K2) 软件测试基本过程有哪些主要阶段组成?(1) 计划和控制(2) 分析和设计(3) 实施和执⾏(4) 评估出⼝准则和报告(5) 测试结束活动A) 1,3,5B) 1,2,3C) 2,3,4,5D) 1,2,3,4,57. (K2) “规划测试环境的搭建和确定测试需要的基础设施和⼯具”,属于下⾯的哪个阶段?(A) 计划和控制(B) 分析和设计(C) 实施和执⾏(D) 评估出⼝准则和报告第⼆章软件⽣命周期中的测试8. (K1) 典型V模型的测试级别分别是什么?(1) 组件测试(2) 集成测试(3) 系统测试(4) 系统集成测试(5) 验收测试(A) 1,2,3(B) 2,3,4,5(C) 1,2,3,5(D) 1,2,3,4,59. (K1) 下列关于迭代-增量开发模型描述错误的是?(A) 在每次迭代过程中,对迭代产⽣的系统可能需要在不同的测试级别上进⾏测试;(B) 迭代-增量开发模型由于发布周期更短,所以要优于V模型;(C) 在完成第⼀次迭代后,对所有迭代进⾏回归测试会变得越来越重要;(D) 验证和确认可以在每个增量模块中进⾏;10. (K1) 以下哪个不属于良好的测试应该具有的特点?(A) 每个开发活动都有相对应的测试活动;(B) 每个测试级别都有其特有的测试⽬标;(C) 对于每个测试级别,需要在相应的开发活动过程中进⾏相应的测试分析和设计;(D) 在开发⽣命周期中,测试员应该在⽂档正式发布后马上参与⽂档的评审;11. (K1) 对于每个测试级别,都需要明确哪些内容?(1) 测试的总体⽬标(2) 测试⽤例设计需要参考的⼯作产品(即测试的依据)(3) 测试的对象(即测试什么)(4) 发现的典型缺陷和失效(5) 对测试⽤具的需求(6) 测试⼯具的⽀持(7)专门的⽅法和职责(A) 1,2,3,4(B) 1,3,5,6,7(C) 2,3,4,5,6(D) 1,2,3,4,5,6,712. (K2) 下⾯哪个通常不作为组件/单元测试的测试依据?(A) 组件需求说明(B) 详细设计⽂档(C) 代码(D) 软件和系统设计⽂档13. (K2) 下⾯关于验收测试的观点错误的是?(A) 系统操作验收测试由系统管理员来进⾏(B) 验收测试主要应⽤于系统测试级别(C) Alpha 测试通常在开发组织现场进⾏,但测试并⾮由开发团队执⾏。
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15. 一、判断分析题软件测试的目的是尽可能多的找出软件的缺陷。
软件测试的目的是证明软件没有错误。
( N)测试组负责软件质量。
(N )程序的效率与程序的复杂性相关。
(N )Y)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
测试程序仅仅按预期方式运行就行了。
(N )好的测试员不懈追求完美。
( Y)不存在质量很高但可靠性很差的产品。
(N )测试是为了验证该软件已正确地实现了用户的要求。
发现错误多的程序模块,残留在模块中的错误也多。
程序效率的提高主要应通过选择高效的算法来实现。
测试人员要坚持原则,缺陷未修复完坚决不予通过。
项目立项前测试人员不需要提交任何工件。
缺陷跟踪系统只针对对测试人员来使用。
从用户软件开发者的角度出发,以考虑是否可接受该产品。
(N )16. 软件项目在进入需求分析阶段,17. 测试是提高产品质量根本手段。
18.代码评审员一般由测试员担任。
19.20.21.22.23.24.25.26.27.28.29.30.31.Y)(N )( N)(Y)( Y)N)(Y )普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,测试人员应该开始介入其中。
( Y)N)代码评审是检查源代码是否达到模块设计的要求。
软件测试员可以对产品说明书进行白盒测试。
静态白盒测试可以找出遗漏之处的问题。
总是首先设计白盒测试用例。
(N)N)(N ) (Y )用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
黑盒测试方法中最有效的是因果图法。
(Y )软件测试按照测试过程分类为黑盒、白盒测试。
(N) 白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。
白盒测试时一般由开发人员兼任测试人员的角色。
黑盒测试是从用户观点出发的测试。
( Y)白盒测试是从用户观点出发的测试。
( N) (N)Y)白盒测试根据程序外部特征进行测试,黑盒测试根据程序内部逻辑结构进行测试。
初中生软件测试题及答案1. 软件测试的目的是什么?A. 修复软件中的所有错误B. 证明软件不存在任何错误C. 验证软件是否满足需求规格说明D. 确保软件在所有情况下都能正常运行答案:C2. 黑盒测试和白盒测试的主要区别是什么?A. 黑盒测试关注软件的内部结构,白盒测试关注软件的功能B. 黑盒测试关注软件的功能,白盒测试关注软件的内部结构C. 黑盒测试和白盒测试都是关注软件的内部结构D. 黑盒测试和白盒测试都是关注软件的功能答案:B3. 以下哪个是软件测试的类型?A. 单元测试B. 集成测试C. 系统测试D. 所有选项答案:D4. 什么是回归测试?A. 测试软件的新功能B. 测试软件的旧功能C. 在软件修改后重新测试以确保修改没有引入新的错误D. 测试软件的安全性答案:C5. 软件测试的基本原则包括哪些?A. 测试显示存在缺陷B. 穷尽测试是不可能的C. 早期测试D. 所有选项答案:D6. 什么是性能测试?A. 测试软件是否符合用户界面的要求B. 测试软件在不同硬件和软件配置下的行为C. 测试软件在正常和峰值负载下的行为D. 测试软件的安全性答案:C7. 软件测试过程中,哪个阶段通常涉及用户参与?A. 单元测试B. 集成测试C. 系统测试D. 验收测试答案:D8. 什么是兼容性测试?A. 测试软件在不同操作系统下的行为B. 测试软件在不同硬件配置下的行为C. 测试软件与其他软件的交互D. 所有选项答案:D9. 什么是压力测试?A. 测试软件在正常工作条件下的行为B. 测试软件在极端工作条件下的行为C. 测试软件在用户界面方面的表现D. 测试软件的安全性答案:B10. 什么是冒烟测试?A. 测试软件的所有功能B. 测试软件的基本功能以确保主要功能正常工作C. 测试软件的安全性D. 测试软件的性能答案:B。
—、基本概念软件测试的基本任务动态测试与静态测试驱动模块与桩模块程序的三种基本控制结构程序效率软件软件工程软件生存周期非入侵式工具与入侵式工具二、判断题( )1.语句构造的原则是简单直接,不能因为追求效率而使代码复杂化( )2.文档是软件产品的一部分,没有文档的软件就不称其为软件。
( )3.好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。
( )4.边界值分析方法是取输入/输出等价类的边界值作为测试用例。
( )5.在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。
( )6.好的测试用例应能证明软件是正确的。
( )7.白盒测试仅与程序的内部结构有关,可以不考虑程序的功能要求。
( )&当软件开发项目的进度有可能拖延时,增加开发人员并不能加快进度。
( )9.不完善的系统定义往往是导致软件项目失败的主要原因。
( )10. 一个成功的项目唯一提交的就是运行程序。
( )11. 一个好的测试用例在于能发现至今未发现的错误。
( )12.软件工程的考虑范围主要是程序设计和实现。
( )13.等价类划分方法将所有可能的输入数据划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。
( )14.在结构化程序设计中,应尽量采用复合的条件测试,以避免嵌套的分支结构( )15. GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
( )16.发现错误多的程序模块,残留在模块中的错误也多。
( )17.程序效率的提高主要应通过选择高效的算法来实现。
( )1&模块化程序设计中,在主存储器能够容纳得下的前提下,应使模块尽可能大,以便减少模块的个数。
( )19.作为一个好的程序,不仅处理速度要快,而且易读易修改等等也都是重要的条件。
( )20.为了快速完成集成测试,采用一次性集成方式是适宜的。
( )21.自底向上集成需要测试员编写驱动程序。
计算机四级《软件测试工程师》模拟试题三答案及解析2015计算机四级《软件测试工程师》模拟试题(三)答案及解析一、选择题1.分析:缺陷处于激活状态,即是问题还没有解决,测试人员新报告的缺陷,或验证后缺陷仍然存在。
2.分析:白盒测试是对程序的逻辑结构进行的测试,而黑盒测试将程序视为一个黑盒子,仅仅是测试人员提供数人数据,观察输出数据,并不了解程序是如何运行的。
结构测试属于白盒测试,关注的是如何选择合适的程序或子程序路径来执行有效的检查。
功能测试则属于黑盒测试,对功能的测试通常通过提供输入数据,检查实际输出的结果,很少考虑程序的内部结构。
静态测试是不必执行程序,仅是收集有关程序代码的结构信息。
3.分析:在极限测试中,软件测试通常要在编程之前先设计测试用例。
需求规格说明、概要设计规格说明、详细设计规格说明、源程序这些都是属于软件测试的对象。
错误改正代价与发现的时间是呈现指数增长的趋势。
而选项B说法是完全正确的。
4.分析:在题目所述逻辑覆盖中,路径覆盖是最强的覆盖准则。
5.分析:因果图方法是根据输入和输出之间的因果关系设计测试用例的。
6.分析:考察软件测试的目的。
7.分析:仅根据规格说明书描述的程序功能来设计测试用例的方法称为黑盒测试法。
8.分析:黑盒测试主要用于测试软件的外部功能。
9.分析:软件开发需求分析对应的是测试阶段的确认测试,软件设计对应的是集成测试,编码阶段对应的是单元测试。
10.分析:考察白盒测试中逻辑覆盖的关系。
11.分析:由于自顶向下测试的特点可知,该集成测试方法是能够较早发现高层模块接口错误的。
12.分析:考察软件测试的信息流输入,软件配置、测试配置和测试工具都属于测试流的输入信息。
13.分析:A选项B和选项D颠倒,而确认测试与编码是没有关系的,故选项C也不正确,只有A说法是正确的。
14.分析:在软件质量特性中,可复用的软件部件所占的比例一般不会作为系统测试的重点。
15.分析:通常来说,软件缺陷大多数是来自软件开发项目的需求和设计阶段的。
西北师范大学软件测试课后作业作者:刘恩学号:201371020117班级:13届软件一班软件测试课程作业姓名:刘恩学号:201371020117习题一1.选择题(1)C 下列关于导致软件质量缺陷的原因描述中不正确的是(程序员编码水平低下是导致软件缺陷的最主要原因)。
(2)D 缺陷产生的原因是(交流不充分及沟通不畅、软件需求的变更、软件开发工具的缺陷;软件的复杂性、软件项目的时间压力;程序开发人员的错误、软件项目文档的缺乏)。
2.判断题(1)缺乏有力的方法学指导和有效的开发工具的支持,往往是产生软件危机的原因之一。
(√)(2)目前的绝大多数软件都不适合于快速原型技术。
(×)(3)在程序运行之前没办法评估其质量。
(×)(4)下列哪些活动是项目?探索火星生命迹象。
(√)向部门经理进行月工作汇报。
(×)开发新版本的操作系统。
(√)每天的卫生保洁。
(×)组织超级女声决赛。
(√)一次集体婚礼。
(√)3.简答题(1)软件:程序+数据+文档软件经历的发展阶段:第一阶段程序设计阶段 20世纪50年代初期至60年代中期;第二阶段程序系统阶段 20世纪60年代中期至70年代末期;第三阶段软件工程阶段 20世纪70年代中期至80年代中期;第四阶段 C/S体系结构,即客户端/服务器体系结构 80年代中期至今。
(2)软件质量与软件测试的关系:软件测试是以评价一个程序或者关系属性为目标的任何一种活动,是对软件质量的度量。
测试是手段,质量是目的。
(3)软件质量框架定义及内容:1>前提:说明了软件框架的适用范围以及适合的环境。
2>价值观:说明了软件质量框架中强调的价值。
3>结构:定义了软件质量框架的组成部分以及软件质量框架和开发过程之间的关系。
4>优秀实践:通过具体、实际的分析、举例,深入阐述了软件质量框架的价值观和结构。
(4)CMM定义:软件能力成熟度模型,用来定义和评价软件公司开发过程的成熟度,为提高软件质量提供指导。
1.什么是软件测试?软件测试的目的和作用是什么?答:软件测试是在受控制的条件下对系统或应用程序进行操作并评价操作的结果。
软件测试的目的是以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。
测试是为了证明程序有错,而不是证明程序无错。
一个成功的测试是发现了至今未发现的错误的测试。
软件测试的原则包括:所有的测试都应追溯到用户的需求;尽早地和不断地进行软件测试;不可能完全的测试,因为输入量太大,执行路径太多;注意测试中的群集现象;避免测试自己的程序;设计周密的测试用例。
2.软件缺陷产生的原因?答: A.软件需求说明书编写的不全面,不完整,不准确,而且经常更改 B.软件设计说明书 C.软件操作人员的水平 D.开发人员不能很好的理解需求明书和沟通不足3.软件测试的意义?意义:1.对产品质量完成全面的评估,为软件产品发布(如验收测试)、软件系统部署(如性能规划测试)、软件产品鉴定(第三方独立测试)委托方和被委托方纠纷仲裁(第三方独立测试)和其它决策提供信息;2.通过持续的测试(包括需求评审、设计评审、代码评审等)可以对产品质量提供持续的、快速的反馈,从而在整个开发过程中不断地、及时地改进产品的质量,并减少各种返工,降低软件开发的成本;3.通过测试发现所要交付产品的缺陷,特别是尽可能地发现各种严重的缺陷,降低或消除产品质量风险,提高客户的满意度,扩大市场份额,提高客户的忠诚度。
4.通过对缺陷进行分析,找出缺陷发生的根本原因(软件过程中的问题,包括错误的行为方式)或总结出软件产品的缺陷模式,避免将来犯同样的错误或产生类似的产品问题,达到缺陷预防的目的4.软件测试与软件开发的关系?答:软件开发是一个系统的工程。
包括需求分析,设计,编码,测试,维护等等几个环节。
测试是整个软件开发流程中的一个环节。
5.简述软件测试过程v模型和w模型的主要区别:V模型是软件开发完了之后才开始测试活动。
而W模型则是软件测试活动伴随着软件开发活动。
第四章习题一、选择题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. 从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句.<1> 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查.<2> 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降.因此,对变更的软件进行测试是必要的.<3> 在意识到被测试模块的内部结构或算法的情况下进行测试.<4> 为了确认用户的需求,先做出系统的主要部分,提交给用户试用.<5> 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试.此时,有必要用一些模块替代尚未测试过的下层模块.供选择的答案:A ~ E:①仿真器②代码审查③模拟器④桩模块⑤驱动器⑥域测试⑦黑盒测试⑧原型⑨白盒测试⑩退化测试5. 从供选择的答案中选出应填入下面有关软件测试的叙述的〔〕内的正确答案.软件测试方法可分为黑盒测试法和白盒测试法两种.黑盒测试法是通过分析程序的〔 A 〕来设计测试用例的方法.除了测试程序外,它还适用于对〔 B 〕阶段的软件文档进行测试.白盒测试法是根据程序的〔 C 〕来设计测试用例的方法.除了测试程序外,它也适用于对〔 D 〕阶段的软件文档进行测试.白盒法测试程序时常按照给定的覆盖条件选取测试用例.〔 E 〕覆盖比〔 F 〕覆盖严格,它使得每一个判定的每一条分支至少经历一次.〔 G 〕覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值.〔 H 〕覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径.单元测试一般以〔 I 〕为主,测试的依据是〔 J 〕.供选择的答案:A, C:①应用X围②内部逻辑③功能④输入数据B, D:①编码②软件详细设计③软件总体设计④需求分析E, F, G, H:①语句②判定③条件④判定/条件⑤多重条件⑥路径I:①白盒法②黑盒法J:①模块功能规格说明②系统模块结构图③系统需求规格说明6. 从供选择的答案中选出应该填入下列关于软件测试的叙述的< >内的正确答案.软件测试中常用的静态分析方法是〔 A 〕和〔 B 〕.〔 B 〕用于检查模块或子程序间的调用是否正确.分析方法〔白盒方法〕中常用的方法是〔 C 〕方法.非分析方法〔黑盒方法〕中常用的方法是〔 D 〕方法和〔 E 〕方法.〔 E 〕方法根据输出对输入的依赖关系设计测试用例.供选择的答案:A ~ B:①引用分析②算法分析③可靠性分析④效率分析⑤接口分析⑥操作分析C ~ E:①路径测试②等价类③因果图④归纳测试⑤综合测试⑥追踪⑦深度优先⑧调试⑨相对图二、简答题1.编程时使用的程序设计语言,对软件的开发与维护有何影响?2.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微妙可进行一次测试,那么对所有可能的输入进行测试需要多长时间?3.假设有一个由5000行FORTRAN语句构成的程序〔经编译后大约有25000条机器指令〕,你估计在对它进行测试期间将发现多少个错误?为什么?4.设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT<A,B,C>IF A>5THEN X=10ELSE X=1END IFIF B>10THEN Y=20ELSE Y=2END IFIF C>15THEN Z=30ELSE Z=3END IFPRINT<A,B,C>STOP5.设计下列伪码程序的分支覆盖和条件组合覆盖测试用例:STARTINPUT<A,B,C,D>IF <A>0> AND <B>0>THEN X=A+BELSE X=A-BENDIF <C>A> OR <DTHEN Y=C-DELSE Y=C+DENDPRINT<X,Y>STOP6.使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例:1:STARTINPUT<A,B,C,D>2:IF <A>0>3: AND <B>0>4:THEN X=A+B5:ELSE X=A-B6:END7:IF <C>A>8: OR <D9:THEN Y=C-D10:ELSE Y=C+D11:END12:PRINT<X,Y>STOP7.设计测试下列函数的测试方案:、函数SEARCH〔somearray,size,value〕的功能是,在一组整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1.数组的长度由参数size指定.假定数组第一个元素的下标为1.8.一个折半查找程序可搜索按字母顺序排列的名字列表,如果查找的名字在列表中则返回真,否则返回假.为了对它进行功能测试,应该使用哪些测试用例?9.某图书馆有一个使用CRT终端的信息检索系统,该系统有下列四个基本检索命令,如表4.1所示.表4.1 检索命令要求:〔1〕设计测试数据以全面测试系统的正常操作;〔2〕设计测试数据以测试系统的非正常操作.10.航空公司A向软件公司B订购了一个规划飞行路线的程序.假设你是软件公司C的软件工程师.A公司已雇用你所在的公司对上述程序进行验收测试.你的任务是,根据下述事实设计验收测试的输入数据.领航员向程序输入出发地点和目的地,以与根据天气和飞行型号而初步确定的飞行高度.程序读入途中的风向风力等数据,并且制定出三套飞行计划〔高度,速度,方向与途中的五个位置校核点〕.所制定的飞行计划应该做到燃料消耗和飞行时间都最少.11.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误〔第二个月改正了10个错误〕,MTTF=15h.要求:<1>根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间t的关系曲线.在画这条曲线时你做了什么假设?<2>为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?12.在测试一个长度为48000条指令的程序时,第一个月由甲、乙两名测试员各种独立测试这个程序.经一个月测试后,甲发现并改正了20个错误,使MTTF达到8h.与此同时,乙发现24个错误,其中的6个甲也发现了.以后由甲一个人继续测试这个程序.问:<1>刚开始测试时程序中总共有多少潜藏的错误?<2>为使MTTF达到240h,必须再改正多少个错误?第四章习题解答一、选择题1. A. ② B. ④ C. ① D. ④ E. ④软件测试的目的是软件中的错误.因为不可能把所有可能的输入数据都拿来测试〔时间花费不起〕,为了提高测试的效率,应该选择发现错误的可能性大的数据作为测试数据.使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准,可以不考虑程序的功能.与设计测试数据无关的文档是项目开发计划.软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果.2. A. ② B. ④ C. ④ D. ② E. ①1966年,Bohm与Jacopini提出任何单入口单出口的没有"死循环〞的程序都能由三种最基本的控制结构构造出来.这三种基本控制结构就是"顺序结构〞、"选择IF-THEN-ELSE 结构〞、"重复DO-WHILE或DO-UNTIL结构〞. 它们的共同点是只有一个入口和一个出口.E.W.Dijkstra提出了程序要实现结构化的主X,并将这一类程序设计称为结构化程序设计.这种方法的一个重要原则就是采用自顶向下、逐步求精的方法编写程序.N.Wirth曾做过如下说明:"我们对付一个复杂问题的最重要的方法就是抽象. 因此,对于一个复杂的问题,不要急于马上用计算机指令、数字和逻辑符号来表示它,而应当先用较自然的抽象的语句来表示,从而得到抽象的程序.抽象程序对抽象的数据类型进行某些特定的运算,并用一些合适的记号〔可以是自然语言〕来表示.下一步对抽象程序再做分解,进入下一个抽象的层次.这样的细化过程一直进行下去,直到程序能被计算机接受为止.此时的程序已经是用某种高级语言或机器指令书写的了.〞软件调试则是在进行了成功的测试之后才开始的工作.它与软件测试不同,软件测试的目的是尽可能多地发现软件中的错误,但进一步诊断和改正程序中潜在的错误,则是调试的任务.调试活动由两部分组成:①确定程序中可疑错误的确切性质和位置.②对程序〔设计,编码〕进行修改,排除这个错误.3. 正确的叙述有<4>、<5>、<6>、<7>、〔10〕.黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例,进行测试的,不是根据程序的内部逻辑来设计测试用例,这是白盒测试做的事情.在所有黑盒测试方法中,最有效的不是因果图法,而是边界值分析方法.测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件已正确地实现了用户的要求.测试的一条重要原则是:发现错误多的程序模块,残留在模块中的错误也多.软件可靠性模型〔Shooman〕就是依据这个原则建立它的公式的.对于连锁型分支结构,若有n个判定语句,则有2n条路径.因此,随着n的增大,路径数增长非常快.单元测试时,因为桩模块要模拟子模块的功能,这不是一件容易的事情,而驱动模块只是控制被测模块的执行,所以桩模块的编写比驱动模块的编写要难得多.在程序设计风格方面,如果重复的代码段没有明显的功能,不可以抽取出来形成独立的公共过程或子程序,只有在这些代码段表现出独立的功能时,才可把它们抽取出来形成独立的公共过程或子程序.另外,程序效率的提高主要应通过选择高效的算法或使用高效的语言编译器来实现.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁,这句话是正确的.4. <1> ② <2> ⑩ <3> ⑨ <4> ⑧ <5> ④<1> 对可靠性要求很高的软件,由第三者对源代码进行逐行检查,这是代码审查.<2> 软件变更时可能发生退化现象:原来正常的功能可能发生异常,性能也可能下降.因此,对变更的软件要进行退化测试.<3> 基于被测试模块的内部结构或算法设计测试用例进行测试,这是白盒测试.<4> 为了确认用户的需求,先做出系统的原型,提交给用户试用.<5> 自顶向下对具有层次结构的大型软件进行集成测试时,需要设计一些虚拟模块来替代尚未测试过的下层模块,这些模块叫做桩模块.5. A. ③ B. ④ C. ② D. ② E. ② F. ① G. ④ H. ⑤I.① J. ①软件测试方法可分为黑盒测试法和白盒测试法两种.黑盒测试法是基于程序的功能来设计测试用例的方法.除了测试程序外,它还适用于对需求分析阶段的软件文档进行测试.白盒测试法是根据程序的内部逻辑来设计测试用例的方法.除了测试程序外,它也适用于对软件详细设计阶段的软件文档进行测试.白盒法测试程序时常按照给定的覆盖条件选取测试用例.判定覆盖比语句覆盖严格,它使得每一个判定的每一条分支至少经历一次.判定/条件覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值.多重条件覆盖,也叫组合条件覆盖,比其他条件都要严格,但它不能保证覆盖程序中的每一条路径.单元测试一般以白盒法为主,测试的依据是系统的模块功能规格说明.6. A. ① B. ⑤ C. ① D. ② E. ③软件测试中常用的静态分析方法是引用分析和接口分析.接口分析用于检查模块或子程序间的调用是否正确.分析方法〔白盒方法〕中常用的方法是路径测试方法.非分析方法〔黑盒方法〕中常用的方法是等价类〔划分〕方法和因果图方法.因果图方法根据输出对输入的依赖关系设计测试用例.二、简答题1.答:程序设计语言是人用计算机解决问题的基本工具,因此,它将影响软件开发人员的思维方式和解题方式.程序设计语言是表达具体的解题方法的工具,它的语法是否清晰易懂,阅读程序时是否容易产生二义性,都对程序的可读性和可理解性有较大影响.程序设计语言所提供的模块化机制是否完善,编译程序差错能力的强弱等,对程序的可靠性有明显影响.程序设计语言实现设计结果的难易程度,是否提供了良好的独立编译机制,可利用的软件开发工具是否丰富而且有效,都对软件的开发效率有影响.编译程序优化能力的强弱,程序设计语言直接操纵硬件设施的能力等,将明显地影响程序的运行效率.程序设计语言的标准化程度,所提供的模块封装机制,源程序的可读性和可理解性等,将影响软件的可维护性.2.答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入.每微妙可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为60*60*24*106=8.64*1010这等于每年大约可进行3.139*1013个测试.因为210=1024≈103 ,所以264=〔210 〕6.4≈1019.2.1019.2/〔3.139*1013〕>105,所以做完全部测试将至少需要105年〔即10万年〕.3.答:经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数.美国的一些统计数字告诉我们,通常0.5*10-2≤ET/IT≤2*10-2也就是说,在测试之前每1000条指令中大约有5~20个错误.假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为25000*〔10/1000〕=2504.答:<1>语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次.下面是实现语句覆盖的典型测试用例:1〕使3个判定表达式之值全为假输入:A=1, B=1, C=1预期的输出:X=1, Y=2,Z=32〕使3个判定表达式之值全为真输入:A=20, B=40, C=60预期的输出:X=10, Y=20,Z=30<2>路径覆盖的测试用例本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据.下面是实现路径覆盖的典型测试用例:1〕3个判定表达式之值全为假输入:A=1, B=1, C=1预期的输出:X=1, Y=2, Z=32〕3个判定表达式依此为假、假、真输入:A=1, B=1, C=60预期的输出:X=1, Y=2, Z=303〕3个判定表达式依此为假、真、假输入:A=1, B=40, C=1预期的输出:X=1, Y=20, Z=34〕3个判定表达式依此为假、真、真输入:A=1, B=40, C=60预期的输出:X=1, Y=20, Z=305〕3个判定表达式依此为真、假、假输入:A=20, B=1, C=1预期的输出:X=10, Y=2, Z=36〕3个判定表达式依此为真、假、真输入:A=20, B=1, C=60预期的输出:X=10, Y=2, Z=307〕3个判定表达式依此为真、真、假输入:A=20, B=40, C=1预期的输出:X=10, Y=20, Z=38〕3个判定表达式全为真输入:A=20, B=40, C=60预期的输出:X=10, Y=20, Z=305.答:<1>分支覆盖〔即判定覆盖〕标准为,不仅使每个语句至少执行一次,而且使每个判定表达式的每个分支都至少一次.为做到分支覆盖,至少需要两组测试数据,以使每个判定表达式之值为真或为假各一次.下面是典型的测试用例:1〕使两个判定表达式之值全为假输入:A=-1, B=-2, C=-3,D=1预期的输出:X=1, Y=-22〕使两个判定表达式之值全为真输入:A=1, B=2, C=3,D=1预期的输出:X=3, Y=2<2>条件组合覆盖标准为,使得每个判定表达式中条件的各种可能组合都至少出现一次.本题程序中共有两个判定表达式,每个判定表达式中有两个简单条件,因此,总共有8种可能的条件组合,它们是:1〕A>0,B>02〕A>0,B≤03〕A≤0,B>04〕A≤0,B≤05〕C>A,D6〕C>A,D≥B7〕C≤A,D8〕C≤A,D≥B下面的4个测试用例,可以使上面列出的8种条件组合每种至少出现一次:1〕实现1,5两种条件组合输入:A=1, B=1, C=2,D=0预期的输出:X=2, Y=22〕实现2,6两种条件组合输入:A=1, B=0, C=2,D=1预期的输出:X=1, Y=13〕实现3,7两种条件组合输入:A=0, B=1, C=-1,D=0预期的输出:X=-1, Y=-14〕实现4,8两种条件组合输入:A=0, B=0, C=-1,D=1预期的输出:X=0, Y=06.答:用基本路径测试方法设计测试用例的过程,有下述4个步骤:<1>根据过程设计的结果画出流图与本题给出的伪码程序相对应的流图如图4.1所示.<2>计算流图的环形复杂度使用下述3种方法中的任一种都可以算出图4.1所示流图的复杂度为5. 1〕该流图共有15条边,12个结点,所以环形复杂度为15-12+2=52〕该流图共有5个区域,因此环形复杂度为5.3〕该流图中共有4个判定结点,因此环形复杂度为4+1=5〔3〕确定线性独立路径的基本集合所谓线性独立路径是指至少引入程序的一个新语句集合或一个新条件的路径,用流图术语来描述,独立路径至少包含一条在定义该路径之前不曾用过的边.使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数量,而且这个数值是确保程序中所以语句至少被执行一次所需的测试数量的上界.对于图4.1所示流图来说,由于它的环形复杂度为5,因此共有5条独立路径.下面列出了5条独立路径:路径1:1-2-3-4-6-7-9-11-12路径2:1-2-5-6-7-9-11-12路径3:1-2-3-5-6-7-9-11-12路径4:1-2-3-4-6-7-8-9-11-12路径5:1-2-3-4-6-7-8-10-11-12图4.1 与第6题伪码程序对应的流图<4>设计可强制执行基本路径集合中每条路径的测试用例1〕执行路径1〔两个判定表达式全为真〕输入:A=1, B=1, C=2,D=2〔任意〕预期的输出:X=2, Y=02〕执行路径2〔第一个判定表达式为假,第二个判定表达式为真〕输入:A=0, B=1〔任意〕, C=2,D=0〔任意〕预期的输出:X=-1, Y=23〕执行路径3〔第一个判定表达式为假,第二个判定表达式为真〕输入:A=1, B=0, C=2,D=0〔任意〕预期的输出:X=1, Y=24〕执行路径4〔两个判定表达式全为真〕输入:A=1, B=1, C=0,D=-1预期的输出:X=2, Y=15〕执行路径5〔第一个判定表达式为真,第二个判定表达式为假〕输入:A=1, B=1, C=0,D=2预期的输出:X=2, Y=27.答:题中并没有给出实现函数SEARCH的算法,仅仅描述了它的功能,因此,只能用黑盒测试技术设计测试它的测试方案.为了用等价划分法设计测试用例,首先需要划分输入数据的等价类.根据该函数的功能,可以把它的输入数据划分成以下等价类:〔1〕有效输入的等价类●数组有偶数个元素,第1个元素是所要找的数.●数组有偶数个元素,最后一个元素是所要找的数.●数组有偶数个元素,数组中没有所要找的数.●数组有奇数个元素,第1个元素是所要找的数.●数组有奇数个元素,最后一个元素是所要找的数.●数组有奇数个元素,数组中没有所要找的数.●数组有多个元素,其中一个正整数是所要找的数.●数组有多个元素,其中一个负整数是所要找的数.●数组有多个元素,其中一个0是所要找的数.〔2〕无效输入的等价类数组实际长度不等于变元size的值.为了使用边界值分析法设计测试方案,应该再考虑下述几种边界情况:●数组长度为1,其元素是所要找的数.●数组长度为1,其元素不是所要找的数.●数组为空〔长度为0〕.根据上面划分出的等价类与边界情况,可以设计出下述测试方案:1〕数组长度为1,其正整数元素是所要找的数输入:somearray={6},size=1,value=6预期的输出:12〕数组长度为1,其负整数元素是所要找的数输入:somearray={-20},size=1,value=-20预期的输出:13〕数组长度为1,其元素0是所要找的数输入:somearray={0,size=1,value=0预期的输出:14〕数组长度为1,其元素不是所要找的数输入:somearray={6},size=1,value=8预期的输出:-15〕数组为空输入:somearray={ },size=0,value=6预期的输出:-16〕数组有偶数个元素,第1个元素是正整数且是所要找的数输入:somearray={1,2,3,4},size=4,value=1预期的输出:17〕数组有偶数个元素,最后一个元素是负整数且是所要找的数输入:somearray={1,2,3,-4},size=4,value=-4预期的输出:48〕数组有偶数个元素,其中一个元素0是所要找的数输入:somearray={1,2,0,3},size=4,value=0预期的输出:39〕数组有偶数个元素,元素中没有所要找的数输入:somearray={1,2,3,4},size=4,value=5预期的输出:-110〕数组有奇数个元素,第1个元素是0且是要找的数输入:somearray={0,1,2},size=3,value=0预期的输出:111〕数组有奇数个元素,最后一个元素是负整数且是所要找的数输入:somearray={1,2,-3},size=3,value=-3预期的输出:312〕数组有奇数个元素,没有要找的数输入:somearray={1,2,3},size=3,value=-3预期的输出:-113〕数组实际长度不等于size输入:somearray={1,2,3},size=3,value=1预期的输出:"无效的size值〞8.答:为了对这个折半查找程序进行功能测试,应该使用下述测试用例:1〕查找列表中第一个名字预期的输出:TRUE2〕查找列表中最后一个名字预期的输出:TRUE3〕查找第一个名字后的名字预期的输出:TRUE4〕查找最后一个名字前的名字预期的输出:TRUE5〕查找位于列表中间的一个名字预期的输出:TRUE6〕查找不在列表中但按字母顺序恰好在第一个名字后的名字预期的输出:FALSE7〕查找不在列表中但按字母顺序恰好在最后一个名字前的名字预期的输出:FALSE9.答:<1>测试系统正常操作的测试数据1〕顺序执行下列3个命令:b〔KEYWORD〕s <L>d <N>其中,KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个〔至少应该使L分别为第一个、最后一个和中央一个行号〕;N是执行命令s后列出的索引号中的一个〔至少应该使N分别为第一个、最后一个和中央一个索引号〕.针对若干个不同的KEYWORD重复执行上述命令序列.2〕顺序执行下列2个命令:f <NAME>d <N>其中,NAME是已知的作者##;N是执行命令f后列出的索引号中的一个〔至少应该使N 分别为第一个、最后一个和中央一个索引号〕.针对若干个不同的NAME重复执行上述命令序列.<2>测试系统非正常操作的测试数据1〕用过长的关键字作为命令b的参数,例如,b〔reliability software and hardware combined〕预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能被截短为reliability software2〕用不正确的关键字作为命令b的参数,例如,b〔AARDVARK〕预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示1. AARON,JULES<book>3〕用比执行命令b后列出的最大行号大1的数作为命令s的参数预期的输出:"命令s的参数不在行号列表中〞4〕用数字和标点符号作为命令b和命令f的参数预期的输出:"参数类型错〞5〕用字母符号作为命令s和命令d的参数预期的输出:"参数数值错〞6〕用0和负数作为命令s和命令d的参数预期的输出:"参数数值错〞7〕命令顺序错,例如,没执行命令b就执行命令s,或没执行命令s就执行命令d。