软件测试技术习题汇总.docx
《软件测试技术习题汇总.docx》由会员分享,可在线阅读,更多相关《软件测试技术习题汇总.docx(15页珍藏版)》请在冰豆网上搜索。
软件测试技术习题汇总
软件测试习题汇总
第2章软件测试基础
●失效是缺陷在执行测试软件时的外部反映,当缺陷被执行时产生软件失效。
●从根本上讲,判断软件现象是否是缺陷的依据是是否满足用户需求。
●软件测试的目的是使用户完成预定的任务,并满足用户的需求。
●测试只能表明软件存在缺陷,不能说明软件不存在缺陷。
●软件测试不能穷尽测试,因此,经过测试的软件仍然含有未知的缺陷。
●在软件或系统开发生命周期中,测试活动应该尽可能早的介入,并且应该将关注点放在已经定义的测试目标,早期发现和修改缺陷成本最小。
测试的总体目标是什么?
1)发现缺陷。
2)获取对产品质量的信心。
3)提供用于决策的信息。
4)预防缺陷。
不同测试阶段的测试目的是什么?
1)软件需求阶段对文档的静态测试是为了预防缺陷。
2)在开发阶段执行的测试(组件测试、集成测试和系统测试),测试的主要目的可能是尽可能的使软件失效,从而发现和修改尽可能多缺陷。
3)在验收测试中,主要目的可能是用来确认系统是否按照预期工作的,从而在系统是否满足系统需求方面得到信心。
4)在有的情况,测试的主要目的可能是对软件的质量进行评估(不是为了修改缺陷),从而为利益相关人提供这样的信息:
在给定时间内发布系统版本是否存在风险?
5)在运行测试阶段,测试的主要目标可能是为了评估系统的特征,比如可靠性或可用性等。
6)维护测试通常是为了验证在变更开发过程中是否有新的错误引入。
什么是测试?
什么是调试?
二者的关系是什么?
测试:
可以发现由于软件缺陷引起的失效。
由测试员执行测试。
调试:
调试是一种开发活动,用来识别引起缺陷的原因,修改代码以及验证是否正确的修改了软件的缺陷。
由开发人员执行调试。
测试和调试的关系:
1)开发人员调试后的软件需要测试员进行确认测试,确认修改的代码已经解决了失效问题。
2)开发人员除了调试,也执行某些类型的测试。
软件测试的基本原则是什么?
1)所有的软件测试都应追溯到用户需求。
2)应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。
3)完全测试是不可能的,测试需要适可而止。
4)测试只能证明软件存在错误而不能证明软件没有错误。
5)充分注意测试中的缺陷群集现象。
6)程序员应避免检查自己的程序(测试独立性)。
7)避免软件测试的“杀虫剂”效应。
缺陷的群集现象指的是什么?
版本发布前进行的测试所发现的大部分缺陷和软件运行失效是由于少数软件模块引起的。
为什么测试要独立出来?
1)人为心理因素,人们认为揭露自己程序中的问题总不是一件愉快的事,不愿否认自己的工作;
2)由于思维定势,人们难于发现自己的错误。
软件测试独立的方式有哪些?
1)测试的设计由开发人员自己完成;
2)测试由开发队伍的其他开发人员完成;
3)测试独立于本项目的开发队伍;
4)测试独立于本开发企业,来自于独立的第三方测试机构。
软件测试的基本过程是什么?
1)制定软件测试计划与测试控制。
2)进行软件测试的分析和设计。
3)测试的实施和执行。
4)测试出口准则的评估。
5)书写测试的报告。
测试的不同阶段,其分析和设计依据各是什么?
在组件(单元)测试阶段分析的依据是详细设计规约。
在集成测试阶段分析的依据是概要设计规约。
在系统测试阶段分析的依据是需求分析规约。
为了进行软件测试,应该进行哪些准备?
1)测试环境的准备(软件、硬件、网络);
2)测试对象是否按照规定构建并准备完毕,测试程序、测试脚本是否准备完毕;
3)缺陷管理系统和测试文档是否准备完毕;
4)测试辅助件的准备:
测试驱动器和测试桩、测试模拟器及测试工具等。
测试退出的标准是什么?
1)计划中的测试用例是否执行完毕。
2)是否达到功能、语句等计划的覆盖指标。
3)继续测试发现缺陷的数量减少低于度量标准等。
4)满足测试计划中的测试退出标准。
第3章软件测试与软件生命周期
●从事软件测试也要熟悉开发模型。
●组件测试的目的是检查代码是否符合设计和规范。
●集成测试是对组件之间的接口进行测试,以及测试一个系统内不同部分的相互作用。
●系统测试的目的是充分运行系统,验证系统各部件是否能正常工作,符合软件需求规格说明。
●验收测试通常是由使用系统的用户或客户来进行,同时系统的其他利益相关者也可能参与其中。
●验证系统是否达到了用户需求规格说明书(可能包括项目或产品验收准则)中的要求,保证系统或软件产品最终被用户接受。
●功能性测试是基于软件产品功能和特征,以及专门的系统之间的交互进行的测试。
其不考虑程序的具体执行路径,仅关注功能是否实现。
●覆盖(coverage)是指通过测试套件检验的结构程度,以覆盖项(item)的百分比来表示。
●静态测试和动态测试的区别:
是否执行被测试软件。
什么是软件生命周期?
软件需求、分析、设计、实现、测试、部署、维护和退出的过程,称为“软件生命周期”。
画出软件开发V模型图。
画出软件开发的W模型图。
组件测试、集成测试、系统测试、验收测试分别是什么含义?
1)组件测试(单元测试):
在软件编码结束后,对编写的每一个程序模块进行测试。
2)集成测试(组装测试,联合测试):
在模块集成后,对集成在一起的模块组件,有时也可称为“部件”进行测试。
3)系统测试:
将整个程序模块集成为软件系统安装在运行环境下,对于硬件、网络、操作系统及支撑平台构成的整体系统进行测试。
4)验收测试(交付测试,确认测试):
在上述测试后,需要检测与证实软件是否满足软件需求说明书中规定的要求。
良好的测试所具有的特征是什么?
1)每个开发活动都有相对应的测试活动。
2)每个测试级别都有其特有的测试目标。
3)对于每个测试级别,需要在相应的开发活动过程中进行相应的测试分析和设计。
4)在开发生命周期中,测试员在文档初稿阶段就应该参与文档的评审。
组件测试的测试内容是什么?
1)模块接口测试。
2)检查局部数据结构能否保持完整性。
3)模块边界条件测试。
4)模块执行路径测试。
5)检查模块内部错误处理是否有效。
驱动模块(driver):
对底层或子层模块进行测试所编写的调用这些模块的程序。
桩模块(stub):
对顶层或上层模块进行测试时所编写的替代下层模块的程序。
集成测试方式分为几种?
各是什么?
1)非渐增式测试模式:
先分别测试每个模块,再把所有模块按设计要求一次全部组装起来所要的系统,然后进行整体测试。
2)渐增式测试模式:
把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个模块结合进行测试。
分为自顶向下集成和自底向上继承。
系统测试的测试方法有哪些?
1)基于需求的测试
2)基于业务流程的测试
3)基于用例(UseCases)的测试
4)基于风险评估的测试
什么是Alpha测试?
什么是Beta测试?
1)Alpha测试:
用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
2)Beta测试:
软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
软件测试的类型有哪些?
1)功能性测试。
2)软件产品特性测试(非功能性测试)。
3)软件结构性测试。
4)变更相关的测试。
黑盒测试通常可以发现的错误类型有哪些?
1)功能错误或遗漏;
2)界面错误;
3)数据结构或外部数据库访问错误;
4)性能错误;
5)初始化和终止错误。
白盒测试的主要方法有哪些?
1)逻辑覆盖:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
2)基本路径测试。
什么是回归测试?
对已被测过的程序实体在修改缺陷后进行的重复测试,以此来检验在这些变更后是否有新的缺陷引入系统。
什么是维护性测试?
什么是可维护性测试?
1)维护性测试,由于维护开发,例如修改、拓展、移植及部分软件的退役等都只是基于原系统的改动,并未从根本上改变系统。
2)可维护性测试是仅针对系统是否易于维护而开展的测试。
第4章软件静态测试技术
●静态测试分为评审和静态分析两种形式。
静态测试技术通过手工检查(评审)或自动化分析(静态分析)的方式对代码或者其他的项目文档进行检查而不需要执行代码。
●评审的目的在于发现工作产品的缺陷和需要改进之处。
评审发现的典型缺陷有哪些?
1)与标准之间的偏差;
2)需求内的错误;
3)设计错误;
4)可维护性不足;
5)错误的接口规格说明等等。
评审技术如何进行分类?
1)非正式评审:
对正在进行中的工作产品进行评审,不需要遵循明确定义的过程,评审者可能没有书面指导性资料可参考
2)正式评审:
对开发人员已经确认完成的工作产品,遵循明确定义的过程进行评审,参与人员有明确的职责与检查表,具有明确定义的进入和完成评审的准则(结构化和规范化),正式评审分为:
走查、技术评审、正规检视/审查。
评审的作用是什么?
1)在每个项目中都是简便而有效的质量保证手段。
2)在软件开发周期的早期阶段就可以进行的检查活动,并且能够尽早的发现和修改缺陷。
3)能发现在动态测试过程发现不了或很难发现的缺陷(例如,需求规格说明书内遗漏和错误的内容)。
3)能改进设计和开发能力。
4)能缩短开发周期,减少后续测试的费用和时间,降低整个生命周期的费用。
5)促进了团队内知识的传播和共享以及交流的机会。
技术评审小组由哪些人组成?
每种人的职责是什么?
1)经理:
决定是否需要进行评审,在项目计划中分派时间,判断是否已达到评审的目标。
2)主持人:
主持文档或文档集的评审活动,包括策划评审、召开会议和会议后的跟踪。
3)作者:
待评审文档的作者或主要责任人。
4)评审员:
具有专门技术或业务背景的人员(也称为检查员(checker)或审查员(inspector)),他们在必要的准备后,标识和描述被评审产品存在的问题(如缺陷)。
5)记录员:
记录所有的事件、问题,以及在会议过程中识别的未解决的问题。
静态分析可以发现哪些缺陷类型?
1)引用一个没有定义值的变量。
2)模块和组件之间接口不一致。
3)从未使用的变量。
4)不可达代码(unreachablecode)或死代码(deadcode)。
5)逻辑上的遗漏与错误(例如:
潜在的无限循环)。
6)过于复杂的结构。
7)违背编程规则。
8)安全漏洞。
9)代码和软件模型的语法错误。
第5章软件测试设计技术
●等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
测试某等价类的代表值就等于对这一类其他值的测试。
等价类分为有效等价类和无效等价类两种。
●在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
●在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。
●应用边界值方法时,如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
●应用边界值方法时,如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
●决策表有四个部分:
粗竖线的左侧是桩部分;右侧是条目部分。
横粗线的上面是条件部分,下面是行动部分。
测试技术可分为几类?
1)黑盒测试技术(基于规格说明的测试技术)
2)白盒测试技术(基于结构的测试技术)
3)基于经验的测试技术
功能性测试用例的优点是什么?
缺点是什么?
优点:
1)功能性测试与软件如何实现无关,所以如果程序的具体实现发生变化,测试用例仍然有用;
2)测试用例开发可以与实现并行进行,因此可压缩总的项目开发时间。
缺点:
1)测试用例之间可能存在严重的冗余;
2)可能会存在未测试的软件漏洞;
3)由于功能性方法基于已描述行为,因此很难保证这些方法能够设计出没有被描述的行为所对应的测试用例。
什么是测试设计规格说明/测试规约?
根据测试需求编写的指导测试设计的文档,包括测试设计策略、设计方法、设计范围的文档。
什么是测试用例?
详细描述如何实现测试需求。
其由一组输入值、执行的前提条件、预期结果和执行的后置条件等元素组成,覆盖一定范围的测试条件。
什么是测试套件?
为某一特定测试类型设计的一组测试用例的集合。
什么是测试库?
包括一个或多个测试项目的测试套件的集合。
测试用例有哪些元素组成?
1)测试标识;
2)测试前提条件/设置;
3)输入和事件;
4)运行测试用例的过程或步骤;
5)预期的输出(结果);
6)测试的后置条件。
黑盒测试中确定测试数据的方法主要有哪些?
1)等价类
2)边界值
3)因果图与判定表(决策表)
4)用例UseCase场景
5)状态转换法
因果图与决策表法设计测试用例的步骤是什么?
1)分析软件规格说明文档描述的哪些是原因(输入条件),哪些是结果(输出条件),给每个原因和结果赋予一个标示符。
2)找出原因与结果,原因与原因之间的对应关系,划出因果图。
3)在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件。
4)根据因果图,创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来。
5)把判定表的每一列作为依据设计测试用例。
语句覆盖就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。
判定覆盖就是设计若干个测试用例,运行所测试程序,使得程序中每个判定的取真分支和取假分支至少经历一次。
条件覆盖就是设计若干个测试用例,运行所测试程序,使得程序中每个判定的每个条件的可能取值至少执行一次。
判定-条件覆盖就是设计足够的测试用例,运行所测试程序,使得程序中每个判定每个条件的可能取值至少执行一次,同时每个判定本身的所有可能判定结果至少执行一次。
条件组合覆盖就是设计足够的测试用例,运行所测试程序,使得程序中每个判定的所有可能的条件取值组合至少执行一次。
即要求各个判定的所有可能的条件取值组合至少执行一次。
路径覆盖就是设计足够的测试用例,运行所测试程序,覆盖程序中所有可能的路径。
第6章软件测试管理
●测试策略通常是描述如何测试软件的总体方法和目标。
●软件项目风险是指在软件开发过程中可能会发生的质量、成本和进度等方面的问题以及这些问题对软件项目的影响。
●软件风险分为项目风险和产品风险。
测试文档的主要包括哪些?
1)测试计划文档
2)测试方案文档
3)测试用例文档
4)测试报告文档
软件测试配置管理的目的是什么?
1)标识出所有测试件,版本控制,跟踪相互之间有关联以及和开发项(测试对象)之间有关联的变更,从而在测试过程中可以维持可追溯性。
2)在测试文档中,所有被标识的文档和软件项能被清晰明确的引用。
3)帮助测试员唯一地标识测试项、测试文档、测试用例和测试用具。
软件缺陷的严重性分为什么级别?
1)严重缺陷(Critical)
2)较大缺陷(Major)
3)较小缺陷(Minor)
4)轻微缺陷(Cosmetic)
5)其他缺陷(Other)
软件缺陷的优先级分为什么级别?
1)立即解决(ResolveImmediately)
2)正常排队(NormalQueue)
3)不紧急(NotUrgent)
第7章软件测试工具
●自动化测试并不能完全代替手工测试。
●不要期望有了自动化测试就能提高测试的质量。
●自动化测试只能发现15%左右的缺陷,85%的缺陷需要手工测试发现
使用测试工具的好处是什么?
1)减少重复性的工作;
2)更好的一致性和可重复性;
3)客观的评估;
4)容易得到测试和测试的相关信息。
测试工具的类型有哪些?
1)功能测试工具(白盒测试工具/黑盒测试工具);
2)性能测试工具;
3)测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具。
自动化测试的优点是什么?
1)执行一些手工测试不可能或很难完成的测试;
2)使用得当时,可以提高测试的效率;
3)提高测试准确度;
4)提高一致性和可重复性,有利于执行回归测试;
5)缩短测试的时间。
哪些情形不适合自动化测试?
1)客户定制的一次性项目;
2)测试周期短的项目;
3)自动测试技术难以实现的验证;
4)验证本地化后软件的界面语言是否翻译,并翻译正确,俗称语言相关测试;
5)验证本地化后软件的界面布局是否对齐、美观;
6)发布前夕的验收测试;
7)易用性测试。
手工测试与自动化测试的过程各是什么?
1)手工测试过程:
2)自动化测试过程: