软件质量保证与测试复习总汇试题总结.docx
《软件质量保证与测试复习总汇试题总结.docx》由会员分享,可在线阅读,更多相关《软件质量保证与测试复习总汇试题总结.docx(26页珍藏版)》请在冰豆网上搜索。
软件质量保证与测试复习总汇试题总结
选择题
1.软件测试的目的是(B)。
A)试验性运行软件B)发现软件错误
C)证明软件正确D)找出软件中全部错误
2.软件测试中白盒法是通过分析程序的(B)来设计测试用例的。
A)应用范围B)内部逻辑
C)功能D)输入数据
3.黑盒法是根据程序的(C)来设计测试用例的。
A)应用范围B)内部逻辑
C)功能D)输入数据
4.为了提高软件测试的效率,应该(D)。
A)随机地选取测试数据
B)取一切可能的输入数据作为测试数据
C)在完成编码以后制定软件的测试计划
D)选择发现错误可能性最大的数据作为测试用例
5.与设计测试用例无关的文档是(A)。
A)项目开发计划B)需求规格说明书
C)设计说明书D)源程序
6.测试的关键问题是(B)。
A)如何组织软件评审
B)如何选择测试用例
C)如何验证程序的正确性
D)如何采用综合策略
7.软件测试用例主要由输入数据和(C)两部分组成。
A)测试计划B)测试规则
C)预期输出结果D)以往测试记录分析
8.成功的测试是指运行测试用例后(B)。
A)未发现程序错误
B)发现了程序错误
C)证明程序正确性
D)改正了程序错误
9.下列几种逻辑覆盖标准中,查错能力最强的是(D)。
A)语句覆盖B)判定覆盖
C)条件覆盖D)条件组合覆盖
10.在黑盒测试中,着重检查输入条件组合的方法是(D)。
A)等价类划分法B)边界值分析法
C)错误推测法D)因果图法
11.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(A)。
A)系统功能B)局部数据结构
C)重要的执行路径D)错误处理
12.软件测试过程中的集成测试主要是为了发现(B)阶段的错误。
A)需求分析B)概要设计
C)详细设计D)编码
13.不属于白盒测试的技术是(D)。
A)路径覆盖B)判定覆盖
C)循环覆盖D)边界值分析
14.集成测试时,能较早发现高层模块接口错误的测试方法为(A)。
A)自顶向下渐增式测试B)自底向上渐增式测试C)非渐增式测试D)系统测试
15.使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准。
A)程序内部逻辑B)程序的复杂度
C)使用说明书D)程序的功能
16.程序的三种基本结构是(B)。
A)过程子、程序、分程序B)顺序、选择、循环
C)递归、堆栈、队列D)调用、返回、转移
17.软件调试的目的是(A)
A)找出错误所在并改正之B)排除存在错误的可能性
C)对错误性质进行分类D)统计出错的次数
18.下面说法正确的是(C)。
A)经过测试没有发现错误说明程序正确
B)测试的目标是为了证明程序没有错误
C)成功的测试是发现了迄今尚未发现的错误的测试
D)成功的测试是没有发现错误的测试
20.发现错误能力最弱的是(A)。
A)语句覆盖B)判定覆盖
C)条件覆盖D)路径覆盖
22.下面(D)方法能够有效地检测输入条件的各种组合可能引起的错误。
A)等价类划分B)边界值分析
C)错误推测D)因果图
23.与确认测试阶段有关的文档是(A)。
A)需求规格说明书B)概要设计说明书
C)详细设计说明书D)源程序
25.(B)方法需要考察模块间的接口和各模块之间的联系。
A)单元测试B)集成测试
C)确认测试D)系统测试
26.调试应该由(B)完成。
A)与源程序无关的程序员
B)编制该源程序的程序员
C)不了解软件设计的机构
D)设计该软件的机构
27.在设计人机界面时,应主要考虑的因素有(D)。
系统响应时间 B)错误处理 C)用户求助机制
D)以上都是
28、用黑盒技术设计测试用例的方法之一为(A)
A)因果图B)逻辑覆盖
C)循环覆盖D)基本路径测试
29、软件测试的目的是(B)
A)避免软件开发中出现的错误
B)发现软件开发中出现的错误
C)尽可能发现并排除软件中潜藏的错误,提高软件的可靠性
D)修改软件中出现的错误
30、下列软件属性中,软件产品首要满足的应该是(A)
A)功能需求B)性能需求
C)可扩展性和灵活性D)容错纠错能力
5、以程序的内部结构为基础的测试用例技术属于(D)。
A)灰盒测试B)数据测试C)黑盒测试D)白盒测试
6、为了提高测试的效率,正确的做法是(A)。
A)选择发现错误可能性大的数据作为测试用例
B)在完成程序的编码之后再制定软件的测试计划
C)随机选取测试用例
D)使用测试用例测试是为了检查程序是否做了应该做的事
7、对程序的测试最好由()来做,对程序的调试最好由谁来做(B)。
A)程序员第三方测试机构
B)第三方测试机构程序员
C)程序开发组程序员
D)程序开发组程序开发组
8、在进行单元测试时,常用的方法是(A)
A)采用白盒测试,辅之以黑盒测试
B)采用黑盒测试,辅之以白盒测试
C)只使用白盒测试
D)只使用黑盒测试
9、以下那一种选项不属于软件缺陷(D)。
A)软件没有实现产品规格说明所要求的功能
B)软件中出现了产品规格说明不应该出现的功能
C)软件实现了产品规格没有提到的功能
D)软件实现了产品规格说明所要求的功能但因受性能限制而未考虑可移植性问题
10、软件生存周期过程中,修改错误代价最大的阶段是(D)。
A)需求阶段B)设计阶段
C)编程阶段D)发布运行阶段
11、在边界值分析中,下列数据通常不用来做数据测试的是(B)。
A)正好等于边界的值B)等价类中的等价值
C)刚刚大于边界的值D)刚刚小于边界的值
12、单元测试中设计测试用例的依据是(D)。
A)概要设计规格说明书
B)用户需求规格说明书
C)项目计划说明书
D)详细设计规格说明书
13、通常可分为白盒测试和黑盒测试。
白盒测试是根据程序的(C)来设计测试用例,
黑盒测试是根据软件的规格说明来设计测试用例。
A)功能B)性能
C)内部逻辑D)内部数据
14、如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例(B)。
A)1B)2C)3D)4
15、经验表明,在程序测试中,某模块与其他模块相比,若该模块已发现并改正的错误较多,则该模块中残存的错误数目与其他模块相比,通常应该(B)。
A)较少B)较多
C)相似D)不确定
17、在某大学学籍管理信息系统中,假设学生年龄的输入范围为16—40,则根据黑盒测试中的等价类划分技术,下面划分正确的是(B)。
A)可划分为2个有效等价类,2个无效等价类
B)可划分为1个有效等价类,2个无效等价类
C)可划分为2个有效等价类,1个无效等价类
D)可划分为1个有效等价类,1个无效等价类
18、根据软件需求规格说明书,在开发环境下对已经集成的软件系统进行的测试是(A)。
A)系统测试B)单元测试C)集成测试D)验收测试
19、下面有关测试原则的说法正确的是(A)。
A)测试用例应由测试的输入数据和预期的输出结果组成
B)测试用例只需选取合理的输入数据
C)程序最好由编写该程序的程序员自己来测试
D)使用测试用例进行测试是为了检查程序是否做了它该做的事
21、软件设计阶段的测试主要采取的方式是(A)。
A)评审B)白盒测试C)黑盒测试D)动态测试
22、下列关于测试方法的叙述中不正确的是(C)
A)从某种角度上讲,白盒测试与黑盒测试都属于动态测试
B)功能测试属于黑盒测试
C)对功能的测试通常是要考虑程序的内部结构
D)结构测试属于白盒测试
23、在覆盖准则中,最常用的是(D)
A)语句覆盖B)条件覆盖C)分支覆盖D)以上全部
24、大多数实际情况下,性能测试的方法是(A)。
A)黑盒测试B白盒测试
C)静态分析D可靠性测试
25、下列方法中,不属于黑盒测试的是(A)。
A)基本路径测试法B)等价类测试法
C)边界值分析法D)基于场景的测试方法
26、测试程序时,不可能遍历所有可能的输入数据,而只能是选择一个子集进行测试,那么最好的选择方法是(B)。
A)随机选择B)划分等价类
C)根据接口进行选择D)根据数据大小进行选择
27、下列可以作为软件测试对象的是(D)。
A)需求规格说明书B)软件设计规格说明
C)源程序D)以上全部
二、判断正误题
1.测试是调试的一个部分(N)
2.软件测试的目的是尽可能多的找出软件的缺陷。
(Y)
3.程序中隐藏错误的概率与其已发现的错误数成正比(Y)
4.单元测试能发现约80%的软件缺陷。
(Y)
5.测试的目的是发现软件中的错误。
( Y )
6.代码评审是检查源代码是否达到模块设计的要求。
( N )
7.自底向上集成需要测试员编写驱动程序。
( Y)
8测试是证明软件正确的方法。
( N )
9.测试中应该对有效和无效、期望和不期望的输入都要测试。
( Y)
10.黑盒测试也称为结构测试。
( N )
11.集成测试计划在需求分析阶段末提交。
(N)
12.测试是为了验证软件已正确地实现了用户的要求。
(N)
13、黑盒测试的测试用例是根据程序内部逻辑设计的。
(N)
14、黑盒测试的测试用例是根据应用程序的功能需求设计的。
(Y)
15、为了快速完成集成测试,采用一次性集成方式是适宜的。
(N)
16、在软件开发过程中,若能推迟暴露其中的错误,则为修复和改进错误所花费的代价就会降低。
(X)
17、在软件开发过程中,若能尽早暴露其中的错误,则为修复和改进错误所花费的代价就会降低。
(Y)
18、单元测试通常由开发人员进行。
(Y)
19、压力测试通常需要辅助工具的支持。
(Y)
20、测试人员说:
“没有可运行的程序,我无法进行测试工作”。
(N)
21、软件测试员可以对产品说明书进行白盒测试。
(N)
22、在设计测试用例时,应包括合理的输入条件和不合理的输入条件。
(Y)
23、要充分注意软件测试中的群集现象。
(Y)
24、软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。
(N)
25、发现错误多的模块,残留在模块中的错误也多。
(Y)
26、测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。
(N)
三、填空题
1.动态测试通过运行程序发现错误。
根据测试用例的设计方法不同,动态测试又分为黑盒测试、白盒测试两类。
2.白盒测试是结构测试,被测对象是源程序,以程序的内部逻辑为基础设计测试用例。
3.逻辑覆盖是对程序内部有判定存在的逻辑结构设计测试用例,根据程序内部的逻辑覆盖程度又可分为语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖6种覆盖技术。
4.循环覆盖是对程序内部有循环存在的逻辑结构设计测试用例,它通过限制循环次数来测试。
5.基本路径测试是在程序控制流程图基础上,通过分析控制构造的环路复杂性,导出基本路径集合,从而设计测试用例。
6.黑盒测试是功能测试,常用黑盒技术设计测试用例有:
等价类划分、边界值分析、因果图。
7.边界值分析是将测试边界情况作为重点目标,选取正好等于、刚刚大于或刚刚小于边界值的测试数据。
如果输入或输出域是一个有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
8.因果图的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表每一列设计一个测试用例。
9.测试的综合策略是在测试中,联合使用各种测试方法。
通常先用黑盒法设计基本的测试用例,再用白盒法补充一些必要的测试用例。
10.单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误,它涉及编码和详细设计的文档。
11.单元测试主要测试模块的5个基本特征:
模块接口、局部数据结构、重要的执行路径、错误处理、边界条件。
12.在单元测试中,需要为被测模块设计驱动模块和桩模块。
驱动模块用来模拟被测模块的上级调用模块,桩模块用来代替被测模块所调用的模块。
13.集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
也称组装测试或联合测试。
14.集成测试的方法有两种:
非渐增式测试和渐增式测试。
16.自顶向下渐增式测试不需要编写驱动模块,只需要编写桩模块,其步骤是从顶层模块开始,沿着被测程序的软件结构图的控制路径逐步向下测试,它有两种组合策略:
深度优先策略和宽度优先策略。
17.自底向上渐增式测试不需要编写桩模块,只需要编写驱动模块。
18.被测试程序不在机器上运行,而是采用人工检测和计算机辅助分析检测的手段称为静态测试。
19.用等价类划分法设计一个测试用例时,使其覆盖尽可能多的尚未被覆盖的合理等价类。
用等价类划分法设计一个测试用例时,使其覆盖一个不合理等价类。
21.软件测试是为了发现错误而执行程序的过程。
22.运行被测程序的方法称为动态测试。
23.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为判定覆盖。
24.要覆盖含循环结构的所有路径是不可能的,一般通过限制循环次数来测试。
25、软件测试的模型分为:
:
V模型、W模型、X模型、H模型、测试驱动模型。
26、一个文本框要求输入6位数字密码,且对每个帐户每次只允许出现三次输入错误,对此文本框进行测试设计的等价区间有:
密码位数:
6位和非6位的;密码内容:
数字的和非数字的;输入次数:
三次以内和超过三次。
27、软件的六大质量特性包括:
(功能性、可靠性、可用性、效率、稳定性、可移植性)
28、软件测试按照不同的划分方法,有不同的分类:
(1)按照软件测试用例的设计方法而论,软件测试可以分为(白盒测试法)和黑盒测试法
(2)从是否执行程序的角度,软件测试可以分为静态测试和动态测试
(3)按照软件测试的策略和过程来分类,软件测试可分为(单元测试、验证测试、确认测试)、集成测试、系统测试。
四、名词解释
1.软件测试:
软件测试指为了发现软件中的错误而执行软件的过程。
它的目标是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。
2.静态测试:
指被测试的程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。
3.动态测试:
指通过运行程序发现错误
4.黑盒测试:
指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
5.白盒测试:
把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
6.语句覆盖:
设计足够的测试用例,使被测程序中每个语句至少执行一次
7.判定覆盖:
指设计足够的测试用例,使被测程序中每个判定表达式至少获得一次“真”值或“假”值,从而使程序的每个分支至少都通过一次,因此判定覆盖又称分支覆盖
8.条件覆盖:
指设计足够测试用例,使判定表达式中每个条件的各种可能的值至少出现一次。
9.判定/条件覆盖:
设计足够的测试用例,使得判定表达式中每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。
10.条件组合覆盖:
指设计足够的测试用例,使得每个判定表达式中条件的各种可能的值的组合都至少出现一次。
11.路径覆盖:
设计足够的测试用例,覆盖被测程序中所有可能的路径
12.测试用例:
指为寻找程序中的错误而精心设计的一组测试数据
13.驱动模块:
指用来模拟被测模块的上级调用模块,其功能比真正的上级模块简单得多,它只完成接受测试数据,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结果并输出。
14.桩模块:
桩模块指用来代替被测试模块所调用的模块,其作用是返回被测试模块所需的信息。
15.单元测试:
单元测试指对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
16.集成测试:
集成测试指在单元测试基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试。
也称组装测试或联合测试。
五、简答题
1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?
①软件测试是软件开发中不可缺少的重要一环,原因是:
· 测试的工作量约占整个项目开发工作量的40%左右,几乎一半。
如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。
· 软件测试代表了需求分析、设计、编码的最终复审。
②软件测试不是软件质量保证的安全网,因为软件测试只能发现错误,不能保证没有错误。
3.软件测试应当遵循什么原则?
为什么要遵循这些原则?
软件测试应当遵循原则如下:
①用例由输入数据和预期的输出数据两部分组成,因为这样便于对照检查,做到有的放矢。
②用例不仅选用合理的输入数据,还要选择不合理的输入数据。
因为当以特殊方式使用程序时,会突然发现程序中有许多错误,故使用预期的不合理的输入数据进行程序测试,比用合理的输入数据收获要大,从而能更多地发现错误,提高程序可靠性。
③除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事,因为如果程序做了它不应该做的事,即使程序能做它应该做的事,程序也是错误的。
④应制定测试计划并严格执行,因为这样可以排除随意性。
⑤长期保留测试用例,因为测试用例的设计耗费很大的工作量,而修改后的程序可能有新的错误,需要进行回归测试,故必须将测试用例作为文档保存,使测试具有可重复性,同时测试用例是将来系统维护测试与确认的依据,保存测试用例也为以后的维护提供方便。
⑥对发现错误较多的程序段,应进行更深入的测试,因为发现错误较多的程序段,其质量较差,同时在修改错误过程中又容易引入新的错误。
⑦程序员避免测试自己设计的程序,因为测试目的是找错。
从心理学角度讲,程序员大多对自己的程序存有偏见,总认为没有错误或错误不大,另外程序员对需求规格说明的理解而引入的错误则更难发现,应该由别人或另外的机构来测试会更客观、更有效。
5.软件测试的过程是什么?
软件测试是一个规则的过程,包括测试设计、测试执行以及测试结果比较等。
①测试设计:
根据软件开发各阶段的文档资料和程序的内部结构,利用各种设计测试用例技术精心设计测试用例。
②测试执行:
利用这些测试用例执行程序,得到测试结果。
③测试结果比较:
将预期的结果与实际测试结果进行比较,如果二者不符合,对于出现的错误进行纠错,并修改相应文档。
修改后的程序还要进行再次测试,直到满意为止。
如果测试发现不了错误,可能由于测试配置考虑不周到,应考虑重新制定测试方案,设计测试用例。
6.单元测试、集成测试和系统测试各自主要目标是什么?
它们之间有什么不同?
相互有什么关系?
①单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
②集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。
③确认测试的主要目标是检查已实现的软件是否满足需求规格说明书中确定的各种需求。
单元测试、集成测试和确认测试之间的不同如下:
①测试内容不同:
单元测试集中于单个模块的功能和结构检验,其测试内容主要包括模块接口、局部数据结构、重要的执行路径、错误处理和边界测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;确认测试集中于论证软件需求的可追溯性,主要包括测试软件功能和性能是否与软件需求一致、测试软件配置的所有程序与文档是否正确完整而且一致。
②测试的方法不同:
单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法;确认测试总是使用黑盒测试法。
③发现的错误不同:
单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误,确认测试发现的错误主要是在需求分析阶段产生的错误。
④涉及的文档不同:
单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档,确认测试涉及软件需求规格说明书和用户手册。
三者相互关系是:
单元测试、集成测试和确认测试是顺序实现的。
首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试,最后确认测试是以集成测试为基础,测试集成的软件是否满足需求规格说明书中确定的各种需求。
7.什么是黑盒测试与白盒测试?
它们都适应哪些测试?
①黑盒测试指把测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求,又称为功能测试或数据驱动测试。
②白盒测试指把测试对象看成一个打开的盒子,测试人员需了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
③白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。
④黑盒测试适应的测试有:
确认测试、等价类划分、边界值分析、错误推测和因果图。
8.软件测试与软件调试在目的、技术和方法等方面存在很大的区别,主要表现在:
①测试从一个侧面证明程序员的失败,而调试是为了证明程序员的正确。
②测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的只是程序是否通过测试。
调试一般以不可知的内部条件开始,除统计性调试外,结果是不可预见的。
③测试是有计划的,并要进行测试设计,而调试是不受时