软件测试考试复习资料题型一、名词解释(30分,10个小题)二、简答题(30分,6个小题)三、论述题(40分,2个小题)重点内容1.软件测试的概念软件测试被定义为:“使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
”2.软件测试目的软件测试的目的是为了保证软件产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。
测试可以达到很多目的,但最重要的是可以衡量正在开发的软件的质量。
3. 软件测试的原则(写4到5个即可)软件测试应力求遵循以下几条原则:(1)所有的测试都应追溯到用户需求(2)应尽早地和不断地进行软件测试。
(3)在有限的时间和资源下进行完全测试找出软件所有的错误和缺陷是不可能的,软件测试不能无限进行下去,应适时终止(4)测试只能证明软件存在错误而不能证明软件没有错误,测试无法显示潜在的错误和缺陷,继续进一步测试可能还会找到其他错误和缺陷。
(5)充分关注测试中的集群现象。
在测试的程序段中,若发现的错误数目多,则残存在其中的错误数目也比较多,因此应当花较多的时间和代价测试那些具有更多错误数目的程序模块。
(6)程序员应避免检查自己的程序。
考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作;另一方面,由于思维定势,自己难以发现自己的错误。
(7) 尽量避免测试的随意性。
软件测试是有组织、有计划、有步骤的活动,制订严格的测试计划,要严格按照测试计划进行,要避免测试的随意性。
并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
(8)设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
(9)对测试错误结果一定要有一个确认的过程,一般由A测试出来的错误,一定要有一个B 来确认,严重的错误可以召开评审会进行讨论和分析。
(10)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。
(11)妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。
(12)为了发现更多的错误让系统更完善,设计测试用例时不但要选择合理的输入数据作为测试用例,而且要选择不合理的输入数据作为测试用例,使得系统能应付各种情况。
(13)测试过程不但要求软件开发人员参与,而且一般要求有专门的测试人员进行测试,并且还要求用户参与,特别是验收测试阶段,用户是主要的参与者。
α测试:是指软件开发公司组织内部人员模拟各类用户行为对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。
β测试:是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。
然后软件开发公司再对β版本进行改错和完善。
4. 软件测试的基本步骤软件测试是一个极为复杂的过程。
一个规范化的软件测试过程通常包括以下基本的测试过程:⏹拟订软件测试计划⏹编制软件测试大纲⏹确定软件测试环境⏹设计和生成测试用例⏹实施测试⏹生成软件测试报告5. 软件测试与调试的区别简单地说测试是为了发现问题,调试是解决问题。
具体来看,有如下区别:(1).测试的目的是找出存在的错误,尽可能地发现软件中隐藏的bug;而调试的目的是定位错误,找到软件的bug的确切位置,找出错误的原因并修改程序以修正错误。
测试活动中发现的缺陷需要通过调试来进行定位,两者在目标、方法和思路上有所不同。
(2).调试是编码阶段和缺陷修复阶段的活动,测试活动则可以贯穿整个软件的生命周期。
(3).测试是从已知的条件开始,使用预先定义的过程和步骤,有预知的结果,软件测试能确切地知道软件要去往何方;调试从未知的条件开始,结束时间无法预计,不知道软件是否真正地被修复。
(4).测试过程可以事先设计,可以预先制订测试用例和过程,工作进度可以度量。
调试过程无法描述过程和持续时间。
(5).测试过程是可重复的,调试的过程是随机的、不可重复的。
(6).测试的对象可以是文档和代码,而调试的对象只能是代码。
(7).调试是随机性的,由程序员自己完成,为了程序可运行;测试是有目的性的,由测试人员(非设计人员)完成,为了程序可完成指定功能。
6. 黑盒测试的概念黑盒测试(Black-box Testing)又称为功能测试或数据驱动测试,是把测试对象看做一个黑盒子。
利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。
(1).等价类划分法等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
(2).边界值分析法(3).错误推测法(4).因果图方法(5)判定表驱动分析方法(6)正交实验设计方法(7)功能图分析方法和综合策略等。
8.黑盒测试的优缺点(1)黑盒测试的优点●对比较大的代码单元来说,黑盒测试比白盒测试效率要高。
●测试人员不需要了解实现的细节,包括特定的编程语言。
●测试人员和编码人员是彼此独立的;●从用户的视角进行测试,很容易被理解和接受。
●有助于暴露任何规格不一致或者有歧义的问题。
●测试用力可以在规格完成之后马上执行。
(2)黑盒测试的缺点●结果取决于测试用例的设计,测试用例的设计部分来源于经验。
●没有状态转换的概念,目前一些成功的例子还做不到针对被测试程序的状态转换。
●就没有状态概念的测试来说,寻找和确定造成程序停止的测试用例是很麻烦的事情,必须把周围可能的测试用例单独确认一遍。
而就有状态的测试来说,就更麻烦了,尤其不是一个单独的测试用例造成的问题。
●只有一小部分可能的输入被测试到,要测试每个可能的输入流几乎是不可能的。
●没有清晰的和简明的规格,测试用例是很难设计的。
●如果测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复。
●会有很多程序路径没有被测试到。
●不能直接针对特定程序段测试,该程序段可能隐藏更多错误。
9.白盒测试的概念白盒测试把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
11.白盒测试的优缺点(1). 优点●迫使测试人员去仔细思考软件的实现;●可以检测代码中的每条分支和路径;●揭示隐藏在代码中的错误;●对代码的测试比较彻底;●让软件最优化;●可构成测试数据使特定程序部分得到测试;●有一定的充分性度量手段;●可获得较多工具支持。
(2). 缺点●昂贵;●无法检测代码中遗漏的路径和数据敏感性错误;●不验证规格的正确性;●不易生成测试数据(通常) ;●无法对未实现规格说明的部分进行测试;●工作量大,通常只用于单元测试,有应用局限。
12.灰盒测试的概念灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,结合了白盒测试和黑盒测试的要素,它考虑了用户端、特定的系统知识和操作环境。
它在系统组件的协同性环境中评价应用软件的设计。
13. 什么是单元测试单元测试也称为模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件或者场景下某个特定函数的行为。
14. 什么时候进行单元测试单元测试越早越好。
XP开发理论讲究测试驱动开发(即TDD),先编写测试代码,再进行开发。
从经验来看,先编写产品函数的框架,然后编写测试函数,针对产品函数的功能编写测试用例,然后编写产品函数的代码,每写一个功能点都运行测试,随时补充测试用例。
15.单元测试的优点(1)它是一种验证行为。
程序中的每一项功能都是测试来验证它的正确性。
它为以后的开发提供支缓。
就算是开发后期,我们也可以轻松的增加功能或更改程序结构,而不用担心这个过程中会破坏重要的东西。
而且它为代码的重构提供了保障。
这样,我们就可以更自由地对程序进行改进。
(2)它是一种设计行为。
编写单元测试将使我们从调用者角度来观察、思考。
特别是先写测试,迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。
(3)它是一种编写文档的行为。
单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。
这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。
(4)它具有回归性。
自动化的单元测试避免了代码出现回归的可能,编写完成之后,可以随时随地快速运行测试。
16. 何为集成测试集成测试也叫组装测试、联合测试,是单元测试的逻辑扩展。
它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。
17. 集成测试常用方案选型集成测试的实施方案有很多种,如自底向上集成测试、自顶向下集成测试、核心集成测试、分层集成测试、基于使用的集成测试等(1)自底向上集成测试自底向上的集成(Bottom-Up Integration)方式是最常使用的方法自底向上集成测试的步骤大致如下:步骤一:按照概要设计规格说明,明确有哪些被测模块。
步骤二:在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题。
这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。
对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。
步骤三:将各软件模块集成为子系统(或分系统)。
检测各自子系统是否能正常工作。
同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。
步骤四:将各子系统集成为最终用户系统,测试各分系统能否在最终用户系统中正常工作。
(2)核心系统先行集成测试核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。
其步骤如下:步骤一:对核心系统中的每个模块进行单独地、充分地测试,必要时使用驱动模块和桩模块。
步骤二:对于核心系统中的所有模块一次性集合到被测系统中,解决集成中出现的各类问题。
在核心系统规模相对较大的情况下,也可以按照自底向上的步骤,集成核心系统的各组成模块。
步骤三:按照各外围软件部件的重要程度以及模块间的相互制约关系,拟定外围软件部件集成到核心系统中的顺序方案。
方案经评审以后,即可进行外围软件部件的集成。
步骤四:在外围软件部件添加到核心系统以前,外围软件部件应先完成内部的模块级集成测试。