回归测试的目的是在程序有修改的情况下保证原有功能正常的一种测试策略和方法,因为这时的测试不需要进行全面测试,从头到尾测一遍,而是根据修改的情况进行有效测试。程序在发现严重软件缺陷要进行修改或版本升级要新增功能,这时需要对软件进行修改,修改后的程序要进行测试,要检验对软件所进行的修改是否正确,保证改动不会带来新的严重错误。这里所说的关于软件修改的正确性有两层含义:

  ● 所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等。

  ● 不影响软件原有功能的正确性。

  在软件生命周期中的任何一个阶段,只要软件发生了改变,可能给该软件带来新的问题。软件的改变可能是源于发现了缺陷并做了修改,也有可能是因为在集成或维护阶段加入了新的功能或增强原有的功能而引发。当软件中所含错误被发现时,如果错误跟踪与管理系统不够完善,可能会遗漏对这些错误的修改;而开发者对错误理解的不够透彻,也可能导致所做的修改只修正了错误的外在表现,而没有修复错误本身,从而造成修改失败;修改还有可能产生副作用从而导致软件未被修改的部分产生新的问题,使本来工作正常的功能产生错误;同样,在有新代码加入软件的时候,除了新加入的代码中有可能含有错误外,新代码还有可能对原有的代码带来影响。因此,每当软件发生变化时,必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例来测试新的或被修改了的功能。

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