测试|软件测试基础知识整理(适用于面试)

1.软件测试的原则
一:测试标准建立在用户需求之上
二:当质量和时间冲突时,质量放在首位
三:需求分析阶段就应该定义好产品的质量
四:测试用例不是写出来的,是设计出来的
五:测试计划是测试工作的前提
六:对出现错误较多的程序段应该进行深入测试
七:从软件开发开始,测试工作就开始了
八:第三方测试更有客观,更有效
九:穷举测试是不可能的
十:不可将测试用例置之度外,排除随意性

2.软件测试的目的
软件测试的目的是为了检验它是否满足规定的需求,或弄清预期结果与实际结果之间的差别

3.问:试述软件的概念和特点?软件复用的含义?构件包括哪些?
软件是计算机系统中与硬件相互依存的一部分,它是包括程序、文档的完整集合。
软件复用(Software Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
可以被复用的软件成分一般称作可复用构件

4.问:软件生存周期及其模型是什么?
软件生存周期是软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布、维护的过程。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。

5.软件配置管理的作用
软件配置管理作为关键开发过程中的必要环节以及软件开发管理的基础,贯穿整个软件开发的周期。同时对软件宏观管理即项目管理也有着重要的支持作用,一个软件开发组织如果可以有效的执行软件配置管理,将会是软件开发过程有更好的可预测性,使系统具有更高的可重复性,提高软件开发组织的竞争力

6.软件配置管理包括哪些内容
1.配置项识别 2.工作空间管理 3.版本控制 4.变更控制 5.状态报告 6.配置审计

7.软件质量
软件产品的特性可以满足用户的功能和性能需求的能力

8.目前主要的测试用例设计方法是什么
黑盒测试:1.边界值分析法2.等价类法3.因果图法 4.状态图法 5.错误猜测法 6.测试大纲法 7.随机测试法
白盒测试法覆盖标准:1.逻辑覆盖 2.循环覆盖 3.基本路径覆盖

9.什么是测试用例?什么是测试脚本?关系是什么
测试用例:为了实施测试而向系统提供的输入数据、操作、环境设置以及期望结果的一个特定的集合
测试脚本:为了进行自动化测试而编写的脚本
关系:测试脚本的编写必须对应相应的用例

10.简述什么是静态测试什么是动态测试
静态测试:不运行程序本身而去寻找程序可能出现的错误或评估程序代码的过程
动态测试:实际运行程序,输入测试用例,检查输出结果与预期结果的差异,判定执行结果是否符合要求,从而检验系统的正确性,可靠性以及有效性。最终分析系统的健壮性等性能

11.简述什么是黑盒测试什么是白盒测试
黑盒测试:测试系统的功能的正确性和可操作性,他把软件执行过程看做是一个黑盒,不考虑其内部构造,在知道输入输出以及软件功能的前提下,依据软件规格说明书去设计测试用例和检验输出结果的正确性
白盒测试:白盒测试是依据软件的内部逻辑分析进行的测试,是基于代码层面的,测试人员通过阅读代码或者开发工具进行单步调试

12.简述什么是α测试什么是β测试
α测试:是由一个用户在开发环境下的测试,模拟实际操作环境的测试,开发和测试不在现场
β测试:是由一个用户或多个用户在实际应用环境下的测试,开发和测试不在现场

13.软件产品质量特性是什么? ?
功能性:适应性、准确性、互操作性、依从性、安全性。
可靠性:成熟性、容错性、以恢复性。
可使用性:易理解性、易学习性、易操作性。
效率:时间特性、资源特性。
可维护性:易分析性、易变更性、稳定性、易测试性。
可移植性: 适应性、易安装性、遵循性、易替换性。

14.软件测试的策略
在软件测试的标准,测试规范的指导下,依据测试项目的特定环境的约束,而规定的软件测试的原则、方式、方法的集合

15.软件测试分为几个阶段,各个阶段的测试策略是什么
分为单元测试,集成测试,系统测试,验收测试
单元测试:

  1. 自顶向下的单元测试策略:比孤立单元测试策略代价高,不是好选择
  2. 自底向上的单元测试策略:较为合理的测试策略,但是测试周期较长
  3. 孤立单元测试策略:最好的单元测试策略
集成测试:
  1. 自顶向下的策略:顶层接口变化小,需要尽早看到系统功能,对于未开 发的模块开发桩模块
  2. 自底向上的策略:底层接口稳定,底层组件较早开发完成,对于未开发 的模块开发驱动模块
  3. 大爆炸策略:适用于维护型项目或者被测试系统较小
系统测试:
数据和数据库完整性测试;功能测试;用户界面测试;性能评测;负载测试;强度测试;容量测试;安全性和访问控制测试;故障转移和恢复测试;配置测试;安装测试;加密测试;可用性测试;版本验证测试;文档测试

16.软件测试各个阶段完成什么内容,结果文件是什么,包括什么内容?
单元测试:单独的单元模块在与系统的其他模块相隔离的情况下进行测试,对每一个程序模块进行正确性校验,检查各个程序模块是否正确的实现了规定的功能,生成单元测试报告,提交缺陷报告
集成测试:在单元测试的基础之上,根据概要设计规格说明将单元模块进行组装,检查在此过程中是否达到或实现相应的技术指标,生成集成测试报告,提交缺陷报告
系统测试:将系统的软件、硬件、外设、数据和人员等等元素结合在一起,在实际运行的情况下,对计算机系统功能进行全面的覆盖,生成系统测试总结,提交缺陷报告

17.测试人员在软件开发过程中的任务是什么?
【测试|软件测试基础知识整理(适用于面试)】1.寻找Bug 2.避免软件开发过程中的缺陷 3.衡量软件品质 4.关注用户需求
总结来说就是:确保软件质量

18.集成测试通常都有那些策略?
1、大爆炸集成
2、自顶向下集成
3、自底向上集成
4、三明治集成(适应于大部分软件开发项目)
5、基干集成
6、分层集成
7、基于功能的集成
8、基于消息的集成
9、基于风险的集成
10、基于进度的集成

19.说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试
1、自顶向下集成
优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。
缺点:桩的开发量大;底层验证被推迟;底层组件测试不充分。
适应于:产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产品控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。
2、自底向上集成
优点:对底层组件行为较早验证;工作最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。
缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。
适应于:底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。

20.软件验收测试包括正式验收测试、alpha 测试、beta 测试三种测试。

21.设计系统测试计划需要参考的项目文档有软件测试计划、软件需求件、和迭代计划。

22.通过画因果图来写测试用例的步骤为 ___ 、 ___ 、 ___ 、 ___ 及把因果图转换为状态图共五个步骤。 利用因果图生成测试用例的基本步骤是:
§ 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
§ 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。
§ 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
§ 把因果图转换成判定表。
§ 把判定表的每一列拿出来作为依据,设计测试用例。


23.测试的种类很多,比如:代码、函数级测试;模块、组件级测试;系统测试
请说出这些测试最好由那些人员完成,测试的是什么?
代码、函数级测试一般由白盒测试人员完成,他们针对每段代码或函数进行正确性检验,检查其是否正确的实现了规定的功能。
模块、组件级测试主要依据是程序结构设计测试模块间的集成和调用关系,一般由测试人员完成。
系统测试在于模块测试与单元测试的基础上进行测试。了解系统功能与性能,根据测试用例进行全面的测试。

24.什么是白盒测试?什么是黑盒测试? ? 什么是回归测试? ?
答:白盒测试是测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作.它主要的针对被测程序的源代码,测试着可以完全不考虑程序的功能.
白盒测试流程:详细设计-->源程序-->分析程序内部逻辑结构-->流程图-->制定测试用例-->被测程序-->执行路径-->覆盖情况分析 .
黑盒测试:(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。
回归测试: (regression testing): 回归测试有两类:用例回归和错误回归;用例回归是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法。

25.你所了解的的软件测试类型都有哪些,简单介绍一下。
按测试策略分类:1、静态与动态测试 2、黑盒与白盒测试 3、手工和自动测试 4、冒烟测试 5、回归测试;
按测试阶段分类:单元测试、集成测试、系统测试;
其他常见测试方法:1、功能测试 2、性能测试 3、压力测试 4、负载测试 5、易用性测试 6、安装测试 7、界面测试 8、配置测试 9、文档测试 10、兼容性测试 11、安全性测试 12、恢复测试

26.一套完整的测试应该由哪些阶段组成?
可行性分析、需求分析、概要设计、详细设计、编码、单元测试、集成测试、系统测试、验收测试

27.测试用例通常包括那些内容?
不同结构的用例包括的不一样。(版本、编号、项目、设计人员、设计日期、输入、预期输出??)
软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果

28.您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试??)
测试类型有:功能测试,性能测试,界面测试。
功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试

29.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收 测试的区别与联系。
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。

单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。
系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)
系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

30.一份测试计划应该包括哪些内容?
背景、项目简介、目的、测试范围、测试策略、人员分工、资源要求、进度计划、参考文档、常用术语、提交文档、风险分析。

31.什么是兼容性测试?请举例说明如何利用兼容性测试列表进行测试。
主要验证软件产品在不同版本之间的兼容性。包括向下兼容和交错兼容,向下兼容是测试软件新版本保留它早期版本功能的情况,交错兼容是验证共同存在的两个相关但不相同的产品之间的兼容性。

32测试报告应包含什么?
1.测试目的 2.系统简介 3.测试环境,方法,工具 4.测试执行结果、记录 5.缺陷汇总 6. 遗留缺陷跟踪 7.总结,建议



    推荐阅读