2.6 什么项目适合做自动化测试

假如你已经决定要在项目中引入自动化测试,在正式开展之前需要分析清楚,你的项目、你的团队真的适合做自动化测试吗?虽然恰当引入自动化测试能给产品质量带来非常大的助力,但并不是所有类型的产品或团队都一定适合开展自动化测试。

对于公司项目而言,如果产品三天一小改、半月一大改,可能自动化测试脚本刚起步,产品就已经改动了。对于这类项目来说,引入自动化测试显然是不合适的。

既然并不是所有项目或者团队都一定适合做自动化测试,那么决定要不要做自动化测试的因素有哪些呢?其中时间是一个比重较大的因素。

假如一个项目从立项到结束只有一个月的时间,而这一个月的时间中相当长的时间都要用来看需求文档、改需求文档、编写测试用例等,真正留给测试的时间并不多。这个时候如果强行做自动化测试,可能用例设计还没有完成,项目就结束了。这种情况,手工测试绝对是第一选择。

但是,一旦项目稳定下来,就要考虑接入自动化测试。因为这个时候项目比较稳定,做自动化测试就可以参照手工用例去做了。除了时间,还需要考虑成本和效率。

2.6.1 什么样的项目或团队适合做自动化测试

自动化测试之所以能在很多大公司实施运作起来,根本在于项目的适宜性和有较高的投资回报率。

虽然行业中没有严格的标准,但在具体实施自动化测试之前,首先要做的是结合当前团队的现状和研发质量存在的痛点,对软件开发过程进行分析,观察其是否适合引入自动化测试,可以从以下几个方面进行权衡。

1.项目变动少

测试脚本的稳定性决定了自动化测试的维护成本。如果项目需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。

如果项目中的某些模块相对稳定,而某些模块需求变动性很大,我们便可对相对稳定的模块进行自动化测试,而变动较大的模块仍用手工测试。

2.项目周期足够长

自动化测试从需求范围的确定,到自动化测试框架的设计,以及测试脚本的编写与调试,均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,如果项目的周期比较短,没有足够的时间支持这样一个过程,那么自动化测试便是笑谈。

3.项目资源足够

当自动化要求越来越多的时候,自动化不是一个人完成的,需要一帮人长期维护才能更好地发挥自动化测试的价值。所以还需要考虑当前团队的人力、物力(基础设施)是否能足够支撑。

4.产品型项目

对于产品型的项目,每个项目只改进少量的功能,但每个项目必须反反复复测试那些没有改动过的功能,这部分测试完全可以让自动化测试来承担,同时可以把新加入功能的测试也慢慢地加入自动化测试中。

5.能够自动编译、自动发布的系统

要完全实现自动化测试,必须具有能够自动化编译、自动化发布系统进行测试的功能。当然不能达到这个要求也可以在手工干预的情况下进行自动化测试。

6.回归测试

当存在大量的回归用例需要验证,并且占用了大量的人力时间时,可以考虑将此部分回归测试转换成相应自动化测试。回归测试是自动化测试的强项,它能够很好地验证你是否引入了新的缺陷,老的缺陷是否修改过来了。

7.多次重复、机械性动作

将烦琐的任务转化为自动化测试。自动化测试最适用于多次重复、机械性动作,这样的测试对它来说从不会失败。

8.需要频繁运行测试

如果在一个项目中需要频繁地进行测试,测试周期按天算,就能最大限度地利用测试脚本。

2.6.2 不适合做自动化测试的项目有什么特点

前面提到不是所有项目都适合开展自动化测试,到底具备哪些特点的项目是不适合开展自动化测试的呢?虽然行业没有通用的判断标准,但可以从以下几个方面进行考虑。

1.定制型项目(一次性的)

为客户定制的项目,维护由客户方承担,甚至采用的开发语言、运行环境也是客户特别要求的,即公司在这方面的测试积累就少,这样的项目不适合做自动化测试。

2.项目周期很短的项目

项目周期很短,测试周期很短,就不值得花精力去投资自动化测试,好不容易建立起的测试脚本不能得到重复的利用是不现实的。

3.业务规则复杂的对象

业务规则复杂的对象,有很多逻辑关系、运算关系,很难测试。

4.美观、声音、易用性测试

涉及人的感官方面的:界面的美观、声音的体验、易用性的测试,也只有人能测试。

5.测试很少运行

测试很少运行,自动化测试就是一种浪费。自动化测试就是让它不厌其烦地、反反复复地运行才有效率。

6.软件不稳定

如果软件不稳定,则会由于这些不稳定因素导致自动化测试失败。只有软件达到相对稳定,没有界面性严重错误和中断错误,才能开始自动化测试。

7.涉及物理交互

自动化测试很难完成与物理设备的交互,比如刷卡的测试等。

知识补充

在自动化测试中最怕的是变化,因为变化的直接结果就是导致测试用例的运行失败,所以就需要对自动化脚本进行维护,如何控制失败、降低维护成本是自动化测试实施能否成功的关键因素。反过来讲,一份永远都运行成功的自动化测试用例也是没有价值的。