软件测试学习笔记(1)——基础概念

软件测试学习笔记(1)——基础概念

参考各种测试书籍以及各种笔记

20180519添加牛客的专项测试题整理,此颜色为笔试题目


一.基本概念

1.1软件

 软件就是可以在计算机上运行的计算机程序,如操作系统Windows、办公软件Office、聊天QQ、手机游戏等。软件和我们的生活和工作之间的联系越来越密切。


1.2软件测试

1.2.1软件测试的定义

 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件品质,并对其是否能满足设计要求进行评估的过程。

 软件测试的现实定义是:软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。

1.2.2软件测试的目的

    软件测试的目的是发现软件中隐藏的错误

1.2.3软件测试的对象

   软件测试的对象包括  源程序(基本东西)、目标程序(最终结果)、数据及相关文档(保证正确)

1.3测试的方法

 软件测试一般分为白盒测试和黑盒测试。

 1.3.2 黑盒测试

黑盒测试,软件测试的主要方法之一,也可以称为功能测试数据驱动测试基于规格说明的测试。测试应用程序的功能,而不是其内部结构或运作。测试者不需具备应用程序的代码、内部结构和编程语言的专门知识。测试者只需知道什么是系统应该做的事,即当键入一个特定的输入,可得到一定的输出,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。测试用例是应用系统应该做的功能,照规范、规格或要求等设计。测试者选择有效输入和无效输入来验证是否正确的输出。此测试方法可适合大部分的软件测试,例如单元测试(unit testing)、集成测试(integration testing)以及系统测试(system testing)。


 1.3.2白盒测试

白盒测试(又称透明盒测试、结构测试等)是一个测试软件的方法,测试应用程序的内部结构或运作,而不是测试应用程序的功能(即黑盒测试)。在白箱测试时,以编程语言的角度来设计测试案例。测试者输入数据验证数据流在程序中的移动路径,并确定适当的输出,类似测试电路中的节点。

白箱测试可以应用于单元测试、集成测试和系统的软件测试流程,可测试在集成过程中每一单元之间的路径,或者主系统跟子系统中的测试。尽管这种测试的方法可以发现许多的错误或问题,它可能无法检测未使用部分的规范。

 

1.4测试的类型

1.4.1.功能测试  

按照测试软件的各个功能划分进行有条理的测试,在功能测试部分要保证测试项覆盖所有功能和各种功能条件组合。


1.4.2.系统测试  

对一个完整的软件以用户的角度来进行测试,系统测试和功能测试的区别是,系统测试利用的所有测试数据和测试的方法都要 模拟成和用户的实际使用环境完全一样,测试的软件也是经过系统集成以后的完整软件系统,而不是在功能测试阶段利用的每个功能模块单独编译后生成的可执行程序。

系统测试包括:功能测试,性能测试,可靠性测试,安全性测试


1.4.3.极限值测试       

对软件在各种特殊条件特殊环境下能否正常运行和软件的性能进行测试。

特殊条件一般指的是软件规定的最大值,最小值,以及在超过最大,小值条件下的测试。

特殊环境一般指的是软件运行的机器处于CPU高负荷,或是网络高负荷状态下的测试,根据软件的不同,特殊环境也有过不同。

 

1.4.4.性能测试  

性能测试是对软件性能的评价。简单的说,软件性能衡量的是软件具有的响应及时度能力。因此,性能测试是采用测试手段对软件的响应及时性进行评价的一种方式。根据软件的不同类型,性能测试的侧重点也不同。

 

1.4.5.压力测试

压力测试,确立系统稳定性的一种测试方法,在软件工程、金融风险管理等领域应用比较普遍。通常在系统正常运作范围之外进行,以考察其功能极限和隐患

 

压力测试与性能测试的区别

压力测试常常和性能测试相混淆。它们主要不同点是,压力测试要求进行超过规定性能指标的测试。例如一个网站设计容量是100个人同时点击,压力测试就要是采用120个同时点击的条件测试。

 

 

1.5测试的阶段


1.5.1.单元测试(各个模块的测试)

主白盒

单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位---模块。单元测试一般由开发人员完成。

 

1.5.2.集成测试(端口间的测试)

黑盒+白盒

集成测试又称组装测试,是将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其主要目的是检查软件单位之间的接口是否正确,集成测试的对象是已经经过单元测试的模块。

实践表明,有时模块虽然可以单独工作,但是并不能保证组装起来也可以同时工作。


①集成测试的方法有两种: 非增式测试和增式测试 ,而采用增式测试时又有两种选择: 自顶向下结合、自底向上结合。

自顶向下结合的步骤-》stub 函数

⑴ 主控模块作为测试驱动器;

⑵ 根据集成的方式(深度或广度),下层的桩模块一个一个地被替换为真正的模块;

⑶ 在每个模块被集成时,都必须进行单元测试。

重复第二步,直到整个系统结构被集成完成。


②     自底向上结合

自底向上增式测试表示逐步集成和逐步测试的工作是按结构图自下而上进行的, 由于是从最底层开始集成,因此不需要使用桩模块来辅助测试 

自顶向下测试的优点在于它可以自然地做到逐步求精,一开始就可以让测试者看到系统的框架;缺点是需要提供桩模块,并且在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定的困难。

自底向上测试的优点在于,由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也没有困难;缺点在于直到最后一个模块被加进去之后才能看到整个程序的框架。

 桩函数,也叫stub函数,存根函数。用一个桩函数替换一些接口函数,用于测试当前函数的特性。 

 

1.5.3.系统测试

测试成员是公司,加入环境

系统测试主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。

 功能测试主要针对包括功能可用性、功能实现程度(功能流程&业务流程、数据处理&业务数据处理)方面测试。

 

1.5.4.回归测试

回归测试是为了检测代码修改而引入的错误所进行的测试活动。回归测试是软件测试阶段的重要工作,有研究表明,回归测试带来的耗费占软件生命周期的1/3总费用以上。

与普通的测试不同,在回归测试过程开始的时候,测试者有一个完整的测试用例集可供使用,因此,如何根据代码的修改情况对已有测试用例集进行有效的复用是回归测试研究的重要方向,此外,回归测试的研究方向还涉及自动化工具,面向对象回归测试,测试用例优先级,回归测试用例补充生成等。

 

1.5.5.验证测试/验收测试

测试人员是用户

①非正式验收测试——Alpha测试(用户,测试人员,开发)=》内测

α测试通常是阶段性的开发完成后所开始进行,一直持续到进入Beta测试阶段前的阶段。α测试是一种验证测试,在模拟的环境中以模拟的数据来运行。

在这个阶段中,通常是在开发单位由开发人员与测试的测试人员,以模拟或实际操作性的方式进行验证测试。

α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成。α测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。

目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。 

②非正式验收测试——Beta测试(完全交给最终用户测试。)=》公测

β测试就是在软件公司外部展开的测试,可以由非专业的测试人员执行的测试 

在系统测试中通常先进行α测试以验证信息系统符合用户以及设计需求所期望的功能。当α阶段完成后,开发过程进入到β阶段;由公众参与的测试的阶段。β测试可称为确认测试,在一个真实的环境中以实际的数据来运行测试,以确认性能、系统运行有效率,系统撤消与备份作业正常,通过测试让信息系统日后可以

Beta测试和黑盒测试的区别

对Alpha和Beta测试常见的一个认识误区是“Beta测试=黑盒测试”。实际上,Alpha和Beta测试对应在软件产品发布之前的Alpha和Beta阶段,而白盒、黑盒和灰盒测试技术是从技术和方法层面对测试的描述,不应该将这两部分概念混淆。

③正式验收测试——完全交给用户,公测

验收测试是系统部署到用户环境后,用户运行系统,考察系统是否满足用户需求的过程。验收测试是用户主导的,用户可能聘请专家帮助验收测试。


1.5.6. 测试粒度 

根据测试阶段,测试分为单元测试,集成测试,系统测试,和验收测试

测试阶段越后,测试粒度越大


1.6软件测试的作用

 1.对产品质量完成全面的评估,为软件产品发布(如验收测试)、软件系统部署(如性能规划测试)、软件产品鉴定(第三方独立测试)委托方和被委托方纠纷仲裁(第三方独立测试)和其它决策提供信息;

2.通过持续的测试(包括需求评审、设计评审、代码评审等)可以对产品质量提供持续的、快速的反馈,从而在整个开发过程中不断地、及时地改进产品的质量,并减少各种返工,降低软件开发的成本;

3.通过测试发现所要交付产品的缺陷,特别是尽可能地发现各种严重的缺陷,降低或消除产品质量风险,提高客户的满意度,扩大市场份额,提高客户的忠诚度 

4.通过对缺陷进行分析,找出缺陷发生的根本原因(软件过程中的问题,包括错误的行为方式)或总结出软件产品的缺陷模式,避免将来犯同样的错误或产生类似的产品问题,达到缺陷预防的目的

 


猜你喜欢

转载自blog.csdn.net/acycy/article/details/80371945