我们为什么要做自动化测试?浅谈自动化优势&劣势

目前互联网测试江湖中,几乎所有团队、所有测试人员都在做自动化测试。从自动化测试方法论层面来说,之所以要实现自动化测试,大致有以下几方面的原因:

1、提升测试效率

2、提升测试覆盖度,包括深度和广度

3、提升测试发现问题后的解决效率

4、补充手动测试无法覆盖/不易覆盖的场景

以上是实现自动化测试一些方向性的指导原则,但要评价自动化测试实现的优劣,就需要拿具体的数据来说话了。

究竟自动化测试的效果如何呢?自动化测试有没真正发挥出来其作用,又如何来评价一个团队自动化测试工作做得好坏呢?下面就自己的一点经验,来说说自己对自动化测试优劣的一些体会,不足之处,欢迎大家交流指正。

我们为什么要做自动化测试?浅谈自动化优势&劣势
二、评价自动化测试优劣的常见指标

互联网公司中,由于绝大多数团队都在重点攻克自动化测试,因而每个团队都指定了相应的评价指标。虽然各个公司,各个团队对指标的侧重不同,但几乎都会关注如下指标。

1、自动化运行通过率/成功率

这里排除了代码bug导致的失败。为了避免自动化运行经常失败,大部分团队都会将自动化运行通过率作为一项重要指标,来评判不同模块/业务线自动化实现的好坏。还将这个指标设置一定的阈值,例如,经历过的有个团队要求自动化运行成功率要大于90%+,最好能 100%运行成功。

这个指标是几乎所有团队都会强调的一个指标了,因为自动化运行通过率/成功率是自动化发挥作用的前提条件。但看这个指标,其实也无法评估自动化实现效果,只能说明自动化运行的比较稳定。

2、自动化执行频率

这里的执行频率,排除业务测试,特指每天定时的自动执行。不同团队,根据实际情况不同,有不同的要求。例如,有的团队要求早晚至少各一次,有的团队则要求每天至少执行一次,但无论哪一种,几乎都会形成这样一种现象:各个团队为了让定时自动执行时都通过,每天都要花费一定时间来维护自动化代码。

这个指标其实也是一种评估自动化运行是否稳定的指标。执行的频率越高,加上执行的通过率/成功率越高,说明自动化运行的越稳定。

3、自动化case数量/覆盖场景数

这个指标不同业务线之间,其实没有太大的可比性。但同一个业务线上,还是可以作为参考指标的。自动化case多、覆盖的场景多,至少一定程度上说明了自动化的覆盖范围。这个指标可以一定程度上来评估自动化测试的广度、深度。

4、自动化发现bug比例

如果说自动化运行通过率/成功率、自动化执行频率、自动化case数量/覆盖场景数还是评价自动化优劣的过程指标,那么自动化发现bug比例就是最有力的结果性指标了。试想一种极端情况,如果一个自动化项目,跑了N久后,还没有发现过bug,那么这个自动化的价值是不是要打一个大大的问号呢?

自己经历的团队,以及曾经接触过的团队,其实对自动化发现bug比例的侧重反而不是那么高。

这个指标可以说是众多指标中,最能立竿见影的说明自动化实现效果的指标了。自动化发现bug的比例越高,说明自动化在实际的项目中发挥的作用越大。甚至可以用自动化发现bug率是100%,来作为自动化测试的终极目标。

我们为什么要做自动化测试?浅谈自动化优势&劣势
三、评价自动化测试优劣的隐性指标

关于评价自动化测试的优劣,除了上述常见指标外,还有一些不太容易拿数据说话的指标,这里叫做隐性指标。

隐性指标主要包括:自动化的维护成本、自动化的运行成本

1 、自动化的维护成本

针对同一个业务,不同的自动化测试实现方案,对应的维护成本可能天壤之别。诚然,自动化的维护成本,受业务成熟度、迭代速度、项目规范程度影响,但不妨考虑以下情况下,你的维护成本如何:

新增了一些逻辑(如,接口/服务/应用),对新增部分维护自动化,你需要多长时间;

删除了一些逻辑(如,接口/服务/应用),对删除部分维护自动化,你需要多长时间;

修改了一些逻辑(如,接口/服务/应用),对修改部分维护自动化,你需要多长时间;

在项目迭代速度加快时,并伴有增删改逻辑时,你的自动化脚本还能跟得上吗?其实,这是不少团队都会面临的严峻考验。 一个正处于快速发展的业务,每次业务测试、回归时,可能都会想放弃自动化测试,转而来手工执行测试。因为,自动化测试还要不断调试自动化代码,大概率来不及这次的测试,还不如直接手动测试的效率高。

2、自动化运行成本

这里的自动化运行成本是说,从想执行自动化到执行结束需要符合的人力&时间成本。一般的自动化运行过程大致如下:

1)创造一些自动化执行条件。比如,找运行数据,设置运行环境等等,这一步如果没有被自动化掉,需要花费人力&时间;

例如,实现的自动化只能"一条腿走路",即只实现了半自动化,并没有实现100%的自动化,运行前/中/后可能需要人为参与。

2)执行自动化。这里主要是自动化运行所需时间,时间越长,导致的等待时间越长。可能你会说,自动化执行的时候,你可以去干别的事情啊,没必要一直等待执行结束。但既然执行了自动化,肯定想像手工测试一样,"马上"看到执行结果,得到及时反馈,才能避免在不同工作间来回切换。

3)验证自动化结果。一般结果的验证都包含在上一个步骤里面了,但不排除有些验证仍然需要人工来check的情况。这种情况,其实也属于半自动化的一种实现形式。

4)自动化失败问题排查。各种各样的原因,都会导致自动化运行失败了,比如,数据问题、环境问题、自动化维护不及时、第三方问题等等。自动化失败后,能否比较清晰的给出失败原因,甚至能根据自动化失败结果,直接定位到失败原因,这些做到位了,会让你对自动化爱不释手。

我们为什么要做自动化测试?浅谈自动化优势&劣势
四、写在最后

由于业务或团队的各自特点,除了上述的常见指标、隐性指标外,可能还有其他的一些指标来评价自动化实现的优劣,也会对指标有不同程度的侧重。要想实现一套十分优雅的自动化方案,并不是一件容易的事情,需要考虑方方面面的因素,也可能被各种因素所干扰。但在实现和评价自动化的过程中,都应该"不忘初心,莫失初衷":自动化测试的ROI>手工测试的ROI。 如果经过了足够长时间的自动化测试实践,发现自动化测试的ROI<=手工测试的ROI, 那么,要么是当前阶段还不适合使用自动化测试,要么你就需要来重新审视目前的自动化实现方案了。

原文地址:https://www.cnblogs.com/icexu/p/13268000.html