回归测试其实不是测试阶段,但在各个测试阶段中都会进行回归测试,回归测试贯穿整个测试过程,关于回归测试,我们需要掌握三个方面的内容:回归测试的过程、回归测试的策略、回归测试所处的阶段。如下图
回归测试过程
准备好测试条件时,在执行测试过程中,需要比较实际结果与预期结果是否一致,如果实际结果与预期结果一致,说明这个测试用例是正确的;但如果实际结果与预期结果不一致,则说明这个功能存在BUG,如果测试过程中存在BUG,那么下次再发测试版本的时候,就必须验证这个BUG是否被解决,我们把这样的一个过程叫做回归测试。
那么当发现BUG,在下一版本回归测试时,应该如何回归测试呢?是将所有的功能都验证还是只验证出现BUG 的功能呢?这就是回归测试需要讨论的第二个问题——回归测试策略。
回归测试策略通常有四种:全面回归测试、选择性回归测试、指标法回归测试和自动化工具回归测试。
(1)全面回归测试
全面回归测试是指不管发现多少个问题,也不管哪些功能有问题,哪些功能没有问题,都进行测试。全面回归测试的优点是对所有功能进行验证,尽最大可能保证系统没有问题,但是这样同样带来一个很重要的问题,就是如果进行全面回归测试,那么测试的成本就会大大提高,并且从测试心理学角度来说,测试工程师是不可能全面回归测试的,即使给你足够的测试时间,也不可能全面回归。前面我们谈到测试心理学,关于测试心态的两种情况,在我们回归测试时,随着测试的不断迭代,我们测试的心理会发生变化,后面测试时我们更多的是这种心态:“测试是为了证明系统不存在问题。”这就决定着我们不可能对所有测试用例进行验证,很可能是只挑选了一部分用例进行验证测试。
(2)选择性回归测试
选择性回归测试是指,在回归测试时我们只对出现问题的这些功能进行验证,没有出现问题的功能就不进行测试。例如,一个系统一共有20 个功能点,第一轮测试时,发现10 个BUG,这10个BUG 是测试其中8 个功能点发现的,那么选择性回归测试就只对这8 个功能进行回归测试。但这样存在一个问题,在修改某个BUG 时,如果修改了A 函数,而这个A 函数又被其他的功能所调用(假设是F1 功能,这个F1 功能在上一轮测试中是正确的),这个时候就不能仅仅验证存在问题的8 个功能,还应该验证F1 功能是否正确,即除了验证这些BUG 外,还要关注那些可能影响到的模块。但是这里又存在一个问题,测试工程师如何知道哪些功能可能会受到影响呢?所以这就需要开发工程师在修复BUG 时写清楚,当前这个BUG 是由什么原因引起的,这个问题是如何修改的以及可能产生的影响,所以选择性回归测试除了需要验证当前的问题外,还要验证修改的这些问题可能对其他功能带来的影响。
(3)指标法回归测试
指标法回归测试是指每次回归测试一定比例的测试用例,例如用例库一共是500 条用例,每次回归测试时只回归验证其中60%的用例,这个方法是不可取的,因为没有规定回归哪60%的用例,这样可能出现测试工程师故意回归一些不相关的测试用例,因此质量无法保证。
(4)自动化工具回归测试
自动化工具回归测试是指使用自动化测试工具进行回归测试,前面我们介绍过从理论的角度来说,其实不管修改了哪些功能,都应该对所有的功能进行回归测试。但是当我们进行全面回归测试时,由于时间成本和测试心态变化的因素,其实我们是无法保证有能力全面回归测试的,这个时候就可以使用自动化测试工具来代替我们手工回归测试,这样既可以解决测试成本的问题,又可以解决测试过程中测试工程师的心态问题。目前,在国内自动化测试还是处于起步阶段,但未来自动化测试一定会成为一个发展趋势。
回归测试在整个测试过程中都存在,而不只是存在于某个阶段,因为不管是单元测试、集成测试还是系统测试,只要在测试过程中发现系统存在BUG,就需要对BUG 进行修改,而修改完成后就需要进行回归测试来验证是否将该BUG 修改好。