软件测试的定义:1983,IEEE提出的软件工程标准术语,使
用人工和自动手段来运行或测试某个系统的过程, 其目的在于
检验它是否满足规定的需求或是弄清预期结果与实际结果之间的
差别”。
软件测试的对象:程序、数据和文档。
补充:测试是为了发现错误而执行的一个程序或统过程.---- 《软件测试艺术》。
测试是以评价一个程序或系统属性为目标的一种活动是对软件质量的度量。---《软件测试完全指南》
为什么要做软件测试:
(1) 一个糟糕的测试程序可能导致任务的失败,
影响操作的性能和可靠性,导致维护阶段的成本提高;
(2 ) 一个好的测试程序是项目的主要成本;
(3)一个好的测试程序可以极大地帮助你定义需求和设计 ;
(4)一个好的测试可以迫使你在工作时必须面对和处理问题,使得修改缺陷成本降低;
(5) 一个好的测试不能弥补一个糟糕的软件项目,但是的确有助于发现许多问题
并且至少使得你尽早知道你处在问题当中。
测试的基本原则:(1)测试是上下文相关的;(2)穷尽测试不可能:(3)测试应尽早介入;(4)杀虫剂悖论;
(5)缺陷的群集性;(6)测试证明缺陷存在;(7)无错谬误。
软件测试模型:
v型:优点:既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是
为了使整个系统满足用户的需求。
局限性:把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,不能
体现“尽早地和不断地进行软件测试”的原则。
W模型:
优点:
1.如果测试文档能尽早提交,那么就有了更多的检查和检阅的时间,这些文档还可用于评估开发文档。
2.测试者可以在项目中尽可能早地面的规格说明书中的挑战。
3.测试还可以尽可能早地找出缺陷所在,从而帮助改进项目内部的质量。
局限性:无法支持迭代、自发性以及变更调整。
H模型:
优点:
1.软件测试不仅仅指测试的执行,还包括很多其他的活动;
2.软件测试是一个独立的过程,贯穿产品整个生命周期,与其他流程并发地进行;
3.软件测试要尽早准备,尽早执行;
4.软件测试是根据被测物的不同而分层次进行的;
5.不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的;
6.软件测试模型是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。
前置模型:
优点:
1.体现开发和测试相结合
2.对每一个交付内容进行测试
3.在设计阶段进行测试计划和测试设计
4.测试和开发结合在一起
5.让验收测试和技术测试保持相对独立
软件测试阶段:
单元测试:单元测试是针对软件基本组成单元(软件设计的最小单
位)来进行正确性检验的测试工作 对象是 :类和函数。
单元测试的目的是检测软件模块对《详细设计说明书》LLD的符合程度。
集成测试:是对单元之间及单元与第三方接口之间的测试,目的
是验证接口是否与设计相符,是否与需求相符。(即检测软
件模块对《概要设计说明书》的符合程度)。
集成策略:自底向上或自顶向下 渐增式。
系统测试:是将已经集成好的软件系统,作为整个基于计算机系
统的一个元素,与计算机硬件、外设、某些支持软件、数据和
人员等其他系统元素结合在一起,在实际运行(使用)环境下,
对计算机系统进行一系列的测试工作。
系统测试的目的在于通过与《需求规格说明书》作比较,发现
软件与系统需求定义不符合或与之矛盾的地方。
确认测试:又称有效性测试,它的任务是验证软件的有效性,即验证软件的功
能和性能及其它特性是否与用户的要求一致。若能达到这一要求,则表明开发的软件是合格的。
验收测试:
交付用户部署前,进行验收测试以用户为主,验收组:项目组成员、用户代表或者系统的其它利益
相关者。根据合同、《需求规格说明书》或《验收测试计划》对成品进行验收测试。
回归测试( Regression Testing ):软件在测试或其他活动中发现的缺陷经过
修改后进行的测试。目的是验证缺陷得到了正确的修复,同时对系统的变更没
有影响以前的功能。
回归测试可以发生在任何一个阶段,包括单元测试、集成测试和系统测试。
以下流程适合于单元测试、集成测试和系统测试:
1、在测试策略制定阶段,制定回归测试策略;
2、确定需要回归测试的版本;
3、回归测试版本发布,按照回归测试策略执行回归测试;
4、回归测试通过,关闭缺陷跟踪单(问题单);
5、回归测试不通过,缺陷跟踪单返回开发人员,开发人员重新修改问题,
再次提交测试人员回归测试。
回归测试策略(1):
完全重复测试:重新执行所有在前期测试阶段建立的测试用例,来确认问题修改
的正确性和修改的扩散局部影响性。
选择性重复测试:即有选择地重新执行部分在前期测试阶段建立的测试用例,来测
试被修改的程序。
回归测试策略(2):
选择性重复测试:
覆盖修改法,
即针对被修改的部分,选取或重新构造测试用例验证没有错误再次发生的用例选择方法。
周边影响法:
该方法不但要包含覆盖修改法确定的用例,还需要分析修改的扩散影响,对那些受到修
改间接影响的部分选择测试用例验证它没有受到不良影响。该方法比覆盖修改法更充分
一点。
指标达成方法:
这是一种类似于单元测试的方法,在重新执行测试前,先确定一个要达成的指标,如修
改部分代码100%的覆盖、与修改有关的接口60%的覆盖等,基于这种要求选择一个最小
的测试用例集合。