在1974 年美国就召开了第一届软件测试大会,首次将软件测试定义一门学科,也是软件质量中重要的一个分支学科。既然软件测试成为一个学科,那么在实际的测试过程中,其一定有一个流程来控制,随着测试的不断成熟,我们将软件测试分为单元测试、集成测试和系统测试三个阶段。
一、软件测试阶段划分
通常测试被分为三个阶段:单元测试、集成测试和系统测试,通常在系统测试之后我们就会将这个产品发布了,但一些情况下我们的测试还会划分出另外一个阶段,那就是验收测试,软件测试阶段划分如图1-2 所示。
图1-2 测试阶段划分
在开发完成编码后,首先应该对各单元模块进行单元测试,以确定各单元模块是没有问题的。单元模块测试完成后是集成测试,集成测试主要是验证各单元模块之间数据传递是否正确。集成测试完成后就是系统测试,系统测试其实就是集成测试的集成测试,即当我们不断地集成测试时,将系统所有功能都集成后就成了最后系统,此时测试就是系统测试。在系统测试完成后,一般产品就发布了,但如果是一些定制的产品或外包的产品,此时客户就一定会进行验收测试,验收测试从某
种程度说就是系统测试的延续,当然验收测试又分为正式验收测试和非正式验收测试两种,关于验收测试在第18 章中会进行详细的介绍。
单元测试、集成测试和系统测试的区别见表1-1。
表1-1 ST、IT、UT 的区别
二、回归测试
回归测试其实不是测试阶段,但在各个测试阶段中都会进行回归测试,回归测试贯穿整个测试过程,关于回归测试,我们需要掌握三个方面的内容:回归测试的过程、回归测试的策略、回归测试所处的阶段。
回归测试过程如图1-3 所示。
图1-3 回归测试过程
准备好测试条件时,在执行测试过程中,需要比较实际结果与预期结果是否一致,如果实际结果与预期结果一致,说明这个测试用例是正确的;但如果实际结果与预期结果不一致,则说明这个功能存在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 修改好。
本章主要介绍了“软件测试阶段的划分”大家觉得有用的话记得每天来这里和小编一起学习涨薪技能哦。想看更多学习资料或视频,识别下方二维码进软件测试群哦(笔芯)
附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。