快捷搜索:

软件回归测试及其实践

择要:本文描述了软件回归测试的观点和进行回归测试的基础步骤,先容了可用于回归测试的

测试用例库的掩护措施,给出了几种可以可包管回归测试效率和有效性的回归测试策略,总结

了回归测试时应该留意的一些实际问题。

关键词:回归测试;测试用例;基线测试用例库

Software Regression Testing and It’s Practice

Abstract:The article present the conception of regression testing and the step

of executing this testing. Introduce how to maintenance the test case library

which used in regression testing ,and provide the method of ensure regression

testing’s validity. Finally, it gives some problem must be careful in the period

of regression testing.

Keywords:regression testing;test case;baseline test case library

作者简介:李丹(1978-),女,江苏如东人,信息财产部电子第五钻研所助理工程师,从事

软件靠得住性钻研及测试事情。

一、 概述

在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。软

件的改变可能是源于发清楚明了差错并做了改动,也有可能是由于在集成或掩护阶段加入了新的模

块。当软件中所含差错被发明时,假如差错跟踪与治理系统不敷完善,就可能会漏掉对这些错

误的改动;而开拓者对差错理解的不敷透彻,也可能导致所做的改动只修正了差错的外在表

现,而没有修复差错本身,从而造成改动掉败;改动还有可能孕育发生副感化从而导致软件未被修

改的部分孕育发生新的问题,使原先事情正常的功能孕育发生差错。同样,在有新代码加入软件的时

候,除了新加入的代码中有可能含有差错外,新代码还有可能对原有的代码带来影响。是以,

每当软件发生变更时,我们就必须从新测试现有的功能,以便确定改动是否达到了预期的目

的,反省改动是否侵害了原有的正常功能。同时,还必要弥补新的测试用例来测试新的或被修

改了的功能。为了验证改动的精确性及其影响就必要进行回归测试。

回归测试在软件生命周期中扮演侧紧张的角色,因漠视回归测试而造成严重后果的例子不

计其数,导致阿里亚娜5型火箭发射掉败的软件缺陷便是因为复用的代码没有颠末充分的回归

测试造成的。

回归测试作为软件生命周期的一个组成部分,在全部软件测试历程中占领很大年夜的事情量比

重,软件开拓的各个阶段都邑进行多次回归测试。在渐进和快速迭带开拓中,新版本的继续发

布使回归测试进行的加倍频繁,而在极度编程措施中,更是要求天天都进行多少次回归测试。

是以,经由过程选择精确的回归测试策略来改进回归测试的效率和有效性是异常故意义的。

二、 回归测试策略

对付一个软件开拓项目来说,项目的测试组在实施测试的历程中会将所开拓的测试用例保

存到“测试用例库”中,并对其进行掩护和治理。当获得一个软件的基线版本时,用于基线版

本测试的所有测试用例就形成了基线测试用例库。在必要进行回归测试的时刻,就可以根据所

选择的回归测试策略,从基线测试用例库中提取相宜的测试用例组成回归测试包,经由过程运行回

归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可

能是测试用例的手工实现历程。

回归测试必要光阴、经费和人力来计划、实施和治理。为了在给定的预算和进度下,尽可

能有效率和有效力地进行回归测试,必要对测试用例库进行掩护并依据必然的策略选择响应的

回归测试包。

1、测试用例库的掩护

为了最大年夜限度地满意客户的必要和适应利用的要求,软件在其生命周期中会频繁地被改动

和赓续推出新的版本,改动后的或者新版本的软件会添加一些新的功能或者在软件功能上孕育发生

某些变更。跟着软件的改变,软件的功能和利用接口以及软件的实现发生了蜕变,测试用例库

中的一些测试用例可能会掉去针对性和有效性,而另一些测试用例可能会变得逾期,还有一些

测试用例将完全不能运行。为了包管测试用例库中测试用例的有效性,必须对测试用例库进行

掩护。同时,被改动的或新增加的软件功能,仅仅靠从新运行曩昔的测试用例并不够以揭示其

中的问题,有需要追加新的测试用例来测试这些新的功能或特性。是以,测试用例库的掩护工

作还应包括开拓新测试用例,这些新的测试用例用来测试软件的新特性或者覆盖现有测试用例

无法覆盖的软件功能或特性。

测试用例的掩护是一个不间断的历程,平日可以将软件开拓的基线作为基准,掩护的主要

内容包括下述几个方面。

(1)删除逾期的测试用例

由于需求的改变等缘故原由可能会使一个基线测试用例不再得当被测试系统,这些测试用例就

会逾期。例如,某个变量的边界发生了改变,原本针对界限值的测试就无法完成对新界限测

试。以是,在软件的每次改动后都应进行响应的逾期测试用例的删除。

(2)改进不受节制的测试用例

跟着软件项目的进展,测试用例库中的用例会赓续增添,此中会呈现一些对输入或运行状

态十分敏感的测试用例。这些测试不轻易重复且结果难以节制,会影响回归测试的效率,必要

进行改进,使其达到可重复和可节制的要求。

(3)删除冗余的测试用例

假如存在两个或者更多个测试用例针对一组相同的输入和输出进行测试,那么这些测试用

例是冗余的。冗余测试用例的存在低落了回归测试的效率。以是必要按期的收拾测试用例库,

并将冗余的用例删除掉落。

(4)增加新的测试用例

假如某个法度榜样段、构件或关键的接口在现有的测试中没有被测试,那么应该开拓新测试用

例从新对其进行测试。并将新开拓的测试用例合并到基线测试包中。

经由过程对测试用例库的掩护不仅改良了测试用例的可用性,而且也前进了测试库的可托性,

同时还可以将一个基线测试用例库的效率和效用维持在一个较高的级别上。

2、回归测试包的选择

在软件生命周期中,纵然一个获得优越掩护的测试用例库也可能变得相昔时夜,这使每次回

归测试都从新运行完备的测试包变得不切实际。一个完全的回归测试包括每个基线测试用例,

光阴和资源约束可能阻碍运行这样一个测试,无意偶尔测试组不得不选择一个缩减的回归测试包来

完成回归测试。

回归测试的代价在于它是一个能够检测到回归差错的受控实验。当测试组选择缩减的回归

测试时,有可能删除了将揭示回归差错的测试用例,打消了发明回归差错的时机。然而,假如

采纳了代码相依性阐发等安然的缩减技巧,就可以抉择哪些测试用例可以被删除而不会让回归

测试的意图遭到破坏。

选择回归测试策略应该兼顾效率和有效性两个方面。常用的选择回归测试的要领包括:

(1)再测试整个用例

选择基线测试用例库中的整个测试用例组成回归测试包,这是一种对照安然的措施,再测

试整个用例具有最低的漏掉回归差错的风险,但测试资源最高。整个再测试险些可以利用到任

何环境下,基础上不必要进行阐发和从新开拓,然则,跟着开拓事情的进展,测试用例赓续增

多,反回覆再起先所有的测试将带来很大年夜的事情量,每每越过了我们的预算和进度。

(2)基于风险选择测试

可以基于必然的风险标准来从基线测试用例库中选择回归测试包。首先运行最紧张的、关

键的和可疑的测试,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即

便可能测试到缺陷,这些缺陷的严重性也仅有三级或四级。一样平常而言,测试从主要特性到次要

特性。

(3)基于操作剖面选择测试

假如基线测试用例库的测试用例是基于软件操作剖面开拓的,测试用例的散播环境反应了

系统的实际应用环境。回归测试所应用的测试用例个数可以由测试预算确定,回归测试可以优

先选择那些针对最紧张或最频繁应用功能的测试用例,开释懈弛解最高档其余风险,有助于尽

早发明那些对靠得住性有最大年夜影响的故障。这种措施可以在一个给定的预算下最有效的前进系统

靠得住性,但实施起来有必然的难度。

(4)再测试改动的部分

当测试者对改动的局部化有足够的信心时,可以经由过程相依性阐发识别软件的改动环境并分

析改动的影响,将回归测试局限于被改变的模块和它的接口上。平日,一个回归差错必然涉及

一个新的、改动的或删除的代码段。在容许的前提下,回归测试尽可能覆盖受到影响的部

分。

再测试整个用例的策略是最安然的策略,但已经运行过许多次的回归测试不太可能揭示新

的差错,而且很多时刻,因为光阴、职员、设备和经费的缘故原由,不容许选择再测试整个用例的

回归测试策略,此时,可以选择适当的策略进行缩减的回归测试。

3、回归测试的基础历程

有了测试用例库的掩护措施和回归测试包的选择策略,回归测试可遵照下述基础历程进

行:

(1) 识别出软件中被改动的部分;

(2) 从原基线测试用例库T中,扫除所有不再适用的测试用例,确定那些对新的软件版本依然

有效的测试用例,其结果是建立一个新的基线测试用例库T0。

(3)依据必然的策略从T0中选择测试用例测试被改动的软件。

(4)假如需要,天生新的测试用例集T1,用于测试T0无法充分测试的软件部分。

(5)用T1履行改动后的软件。

第(2)和第(3)步测试验证改动是否破坏了现有的功能,第(4)和第(5)步测试验证 改动工

作本身。

三、回归测试实践

在实际事情中,回归测试必要反复进行,当测试者一次又一次地完成相同的测试时,这些

回归测试将变得异常令人厌烦,而在大年夜多半回归测试必要手工完成的时刻尤其如斯,是以,需

要经由过程自动测试来实现重复的和同等的回归测试。经由过程测试自动化可以前进回归测试效率。为

了支持多种回归测试策略,自动测试对象应该是通用的和机动的,以便满意达到不合回归测试

目标的要求。

在测试软件时,利用多种测试技巧是常见的。当测试一个改动了的软件时,测试者也可能

盼望采纳多于一种回归测试策略来增添对改动软件的信心。不合的测试者可能会依据自己的经

验和判断选择不合的回归测试技巧和策略。

回归测试并不削减对系统新功能和特性的测试需求,回归测试包应包括新功能和特性的测

试。假如回归测试包不能达到所需的覆盖要求,必须弥补新的测试用例使覆盖率达到规定的要

求。

回归测试是重复性较多的活动,轻易使测试者认为疲惫和厌倦,低落测试效率,在实际工

作中可以采纳一些策略减轻这些问题。例如,安排新的测试者完成手工回归测试,分配更有经

验的测试者开拓新的测试用例,编写和调试自动测试脚本,做一些探索性的或ad hoc测试。还

可以在不影响测试目标的环境下,鼓励测试者创造性地履行测试用例,变更的输入、按键和配

置能够有助于勉励测试者又能揭示新的差错。

在组织回归测试时必要留意两点,首先是各测试阶段发生的改动必然要在本测试阶段内完

成回归,以免将差错遗留到下一测试阶段。其次,回归测试时代应对该软件版本冻结,将回归

测试发明的问题集中改动,集中回归。

在实际事情中,可以将回归测试与兼容性测试结合起来进行。在新的设置设置设备摆设摆设前提下运行旧的

测试可以发明兼容性问题,而同时也可以揭示编码在回归方面的差错。

您可能还会对下面的文章感兴趣: