background image

软件回归测试及其实践

    【摘 要】本文描述了软件回归测试的概念和进行回归测试的基本步骤,介绍了可用于回归
测试的测试用例库的维护方法,给出了几种可以可保证回归测试效率和有效性的回归测试
策略,总结了回归测试时应该注意的一些实际问题。

 

  【关键词】回归测试

 测试用例 基线测试用例库 

  一、概述

 

  在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。
软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了
新的模块。当软件发生变化时,我们就必须重新测试现有的功能,以便确定修改是否达到了
预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试
新的或被修改了的功能。为了验证修改的正确性及其影响就需要进行回归测试。回归测试在
软件生命周期中扮演着重要的角色,因忽视回归测试而造成严重后果的例子不计其数,导
致阿里亚娜

5 型火箭发射失败的软件缺陷就是由于复用的代码没有经过充分的回归测试造

成的。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作
量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的
连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次
回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意
义的。

 

  二、回归测试策略

 

  对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发的测试用
例保存到

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

线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以
根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,
通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试
脚本,也有可能是测试用例的手工实现过程。回归测试需要时间、经费和人力来计划、实施和
管理。为了在给定的预算和进度下,尽可能有效率和有效力地进行回归测试,需要对测试用
例库进行维护并依据一定的策略选择相应的回归测试包。

 

  (一)测试用例库的维护。为了最大限度地满足客户的需要和适应应用的要求,软件在
其生命周期中会频繁地被修改和不断推出新的版本,修改后的或者新版本的软件会添加一
些新的功能或者在软件功能上产生某些变化。为了保证测试用例库中测试用例的有效性,必
须对测试用例库进行维护。同时,被修改的或新增添的软件功能,仅仅靠重新运行以前的测
试用例并不足以揭示其中的问题,有必要追加新的测试用例来测试这些新的功能或特征。因
此,测试用例库的维护工作还应包括开发新测试用例,这些新的测试用例用来测试软件的
新特征或者覆盖现有测试用例无法覆盖的软件功能或特征。测试用例的维护是一个不间断的
过程,通常可以将软件开发的基线作为基准,维护的主要内容包括这几个方面:删除过时
的测试用例、改进不受控制的测试用例、删除冗余的测试用例

 、增添新的测试用例。 

  (二)回归测试包的选择。在软件生命周期中,即使一个得到良好维护的测试用例库也
可能变得相当大,这使每次回归测试都重新运行完整的测试包变得不切实际。一个完全的回
归测试包括每个基线测试用例,时间和成本约束可能阻碍运行这样一个测试,有时测试组
不得不选择一个缩减的回归测试包来完成回归测试。回归测试的价值在于它是一个能够检测
到回归错误的受控实验。当测试组选择缩减的回归测试时,有可能删除了将揭示回归错误的
测试用例,消除了发现回归错误的机会。然而,如果采用了代码相依性分析等安全的缩减技
术,就可以决定哪些测试用例可以被删除而不会让回归测试的意图遭到破坏。