测试人员在软件开发过程的任务-软件测试的目标定义为为只是发现错误原因
目录
1.为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全网?
(1)测试的工作量约占整个项目开发工作量的 40% 左右,几乎一半。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。软件测试代表了需求分析、设计、编码的最终复审。
(2)因为软件测试只能发现错误,不能保证没有错误。
2.软件测试的目的是什么?为什么把软件测试的目的定义为只是发现错误?
软件测试的目的有:
(1)软件测试是为了发现错误而执行程序的过程。
(2)一个好的测试用例能够发现至今尚未发现的错误。
(3)一个成功的测试是发现了至今尚未发现的错误。
软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。
3.软件测试应当遵循什么原则?为什么要遵循这些原则?
原则 1:测试显示缺陷的存在:缺陷是客观存在的,只是需要通过测试活动而发现,测试没有发现缺陷不意味着软件不存在缺陷。
原则 2:穷尽测试是不可能的:由于资源或技术的限制,穷尽测试是不可能的,因此需要设计有限的测试用例展开测试。
原则 3:测试应尽早介入:实践证明:越早发现的缺陷修复代价越低,而越晚发现的缺陷修复成本越高。
原则 4:缺陷的集群性(二八原则):经验表明:80%的缺陷分布于 20%的模块中,或者说,当前发现的缺陷只占总缺陷的 80%,另外还潜伏 20% 的缺陷。
原则 5:“杀虫剂”悖论:一方面测试人员反复使用相同的测试手段开展测试,将因测试人员的思维定式而难于发现缺陷;另一方面,测试用例应该随版本不同而刷新,以期发现更多的缺陷。
原则 6:测试活动依赖于测试内容:没有普遍适用的测试,测试活动的开展要和具体的测试内容相联系,即具体问题具体分析。
原则 7:没有失效不代表系统是可用的:“软件失效”一般是指功能不可用,而软件质量包含多个维度,如:可靠性、性能、易用性等。
原则 8:测试的标准是用户的需求:“需求”是软件开发的源头,同理,也是测试的依据。
原则 9:尽早定义产品的质量标准:只有定义了质量标准,才能在设计测试用例设计过程中定义预期输出。
原则 10:测试贯穿于整个生命周期:测试不仅是对最终软件进行动态测试,还需要对软件开发过程的交付件进行静态测试,如需求/设计文档 的评审,代码走读等。
原则 11:第三方或独立的测试团队:一方面由于人的自我保护意识本能,不可能依靠开发人员自己发现产品的缺陷,另一方面由于分工的原因,开发人员对自己开发的软件产品非常熟悉,存在思维定式或知识盲点,因此不能依靠开发人员发现缺陷,只有通过第三方独立的测试团队才能客观地发现缺陷。
软件测试原则非常重要,测试人员应该在测试原则指导下进行测试活动。软件测试的基本原则有助于测试人员进行高质量的测试,尽早尽可能多地发现缺陷。
4.软件测试的步骤是什么?这些测试与软件开发各阶段之间的关系是什么?
软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试:对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
集成测试:是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。
确认测试:主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
系统测试:是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。
5.单元测试和集成测试各自的主要目标是什么?它们之间有什么不同?相互有什么关系?
单元测试的主要目标是检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。
集成测试的主要目标是检查与设计相关的软件体系结构的有关问题。
单元测试、集成测试和确认测试之间的不同如下:
(1)测试内容不同:单元测试集中于单个模块的功能和结构检验,其测试内容主要包括模块接口、局部数据结构、重要的执行路径、错误处理和边界测试;集成测试集中于模块组合的功能和软件结构检验,其测试内容主要包括模块组装中可能出现的问题,即数据穿过接口可能丢失、一个模块可能破坏另一个模块的内容、子功能组装可能不等于主功能、全程数据结构问题、误差累积问题;
(2)测试的方法不同:单元测试总是使用白盒测试法,为被测模块设计驱动模块和桩模块;集成测试使用渐增式测试和非渐增式测试,渐增式测试又有分为自顶向下结合法和自底向上结合法。
(3)发现的错误不同:单元测试发现的错误主要是在编码阶段产生的错误,集成测试发现的错误主要是在设计阶段产生的错误。
(4)涉及的文档不同:单元测试涉及编码和详细设计文档,集成测试涉及详细设计文档和概要设计文档。
两者相互关系是:单元测试、集成测试是顺序实现的。首先单元测试对各个模块进行测试,然后集成测试以单元测试为基础,将所有已测模块按照设计要求组装成一个完整的系统,对模块组合的功能和软件结构检验进行测试。
6.什么是黑盒测试与白盒测试?它们适于哪些测试?
黑盒测试也称功能测试(或“数据驱动测试”)测试人员在软件开发过程的任务,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序(或用户)接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
白盒测试技术是一种常用的软件测试方法,不仅软件测试人员需要掌握,开发人员也需要在开发时用此方法测试自己开发的程序;白盒测试是一种从开发人员角度出发的测试,主要以程序的源代码为依据,对程序的内部逻辑结构进行测试,故又称“结构测试”或“逻辑驱动测试”;白盒测试的基本观点是:被测程序如同一个透明的白盒子,测试者可以访问源代码,分析源代码间的结构与逻辑测试人员在软件开发过程的任务,而不考虑它的功能;白盒测试依赖于程序细节的严密验证,检验程序中的每条通路是否都能按预定要求正确工作,要求对被测程序的结构特性做到一定程度的覆盖。
白盒测试通常分为静态和动态两种类型:
静态分析方法是指按一定步骤直接检查源代码的测试方法,包括代码检查法等方法。
动态测试方法是指按一定步骤生成测试用例并驱动被测程序运行来发现错误,包括逻辑覆盖法、独立路径测试法等方法。
白盒测试适应的测试有单元测试、逻辑覆盖(按逻辑覆盖程度不同,有语句覆盖、判断覆盖、条件覆盖、判断/ 条件覆盖、条件组合覆盖和路径覆盖。)、循环覆盖(限制循环次数,有单循环和嵌套循环)和基本路径测试。
黑盒测试适应的测试有:确认测试、等价类划分、边界值分析、错误推测和因果图。
7.测试计划应包括哪些方面的内容?
背景、项目简介、目的、测试范围、测试策略、人员分工、资源要求、进度计划、参考文档、常用术语、提交文档、风险分析。
8.软件测试阶段是如何划分的?
软件测试的阶段划分为:规格说明书审查;系统和程序设计审查;单元测试;集成测试;确认测试;系统测试;验收测试。
9.简述软件测试过程。
软件测试过程由五个阶段组成:
(1)测试计划和控制;
(2)测试分析和设计;
(3)测试实现和执行;
(4)评估出口准则和报告;
(5)测试结束活动。
软件测试过程按各测试阶段的先后顺序可分为单元测试、集成(组装)测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段。