深入了解自动化:哪些项目适合自动化测试

2020-11-24 10:00:00
木头人
转贴:
知乎
4476
摘要:自动化测试的好处显而易见,它能够帮助测试人员从重复、枯燥的手工测试中解放出来,增加测试的广度和深度,从而提高测试的质量;缩短回归测试时间,提高测试效率,从而缩短项目的交付周期。


软件测试工程师接触到的自动化测试可分功能、接口、性能。


功能基于UI,接口基于API,性能大多数情况也基于API。

自动化测试的好处显而易见,它能够帮助测试人员从重复、枯燥的手工测试中解放出来,增加测试的广度和深度,从而提高测试的质量;缩短回归测试时间,提高测试效率,从而缩短项目的交付周期。

理想与现实的永远有很大的差距,主要体现在以下几方面:
  • 自动化测试并不能取代手工测试,它只能对针对执行频率高、机械化的重复步骤;
  • 自动化测试远没有手工测试可靠,它的用例很脆弱,维护成本很高;
  • 自动化测试用例开发工作远远高于手工测试,短期内难产生效益,产出的价值往往在于长期的回归测试。
  • 自动化测试它不能发现很多新bug,它发现的缺陷远远比手工测试少;
  • 动化对测试脚本开发对测试人员要求比较高,测试脚本执行的效率很大的程度上依赖于脚本的质量,而不稳定的自动化测试脚本还不如没有自动化。

一、哪些项目适合自动化测试

1. 需求变动不频繁

测试脚本的可靠性决定自动化测试脚本的维护成本。如果需求过于频繁变动,测试人员需要时刻更新变更需求相关的测试脚本。脚本的维护也是一个开发过程,需要调试、修改,有可能还要修改自动化测试框架,如果投入产出比太低,那么自动化测试也失去了其价值和意义。

折中的做法,项目模块相对稳定可以先实现的自动化测试,而模块相对变动性很大的仍然用手工测试。

2. 项目周期需要足够长

自动化测试框架的设计,脚本的编写和调试均需要相对长的时间来完成,这个过程本身是一个软件开发的过程,需要较长时间完成。如果项目周期短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。如,某小型项目,总共周期也就3个月,产品交付给用户后,后期维护和更新非常少,这个项目就不必采用自动化测试。

3. 自动化测试脚本可重复使用

自动化测试脚本必须可重复使用,如果费尽心思开发了近乎完美的测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的累赘,纯粹是练手之作,而并非是真正有效的测试手段。

4. 系统可测性强,被测软件的开发较为规范

可测性强主要出于这几点考虑:被测试系统的架构差异、测试技术和工具的适应性、测试人员的能力能否设计开发出适应差异的自动化测试框架。如地图导航,视频播放,这个软件的可测性,与系统使用的架构有关,是否实现自动化,要看测试人员的能力能否开发出适用与此类系统的框架。

被测软件的开发必须规范,是指前端的UI元素是否容易定位,接口的设计是否符合规划,并且有相应的接口文档。

5. 手工测试无法完成的测试

接口测试、性能测试、配置测试、大量数据输入测试,这些就是需要投入大量时间与人力也可以引入自动化测试。

6. 敏捷开发,频繁的版本迭代

敏捷开发,增量式开发,持续集成项目由于这种开发模式是频繁的发布新版本,需要频繁的回归测试,自动化能把能从回归测试中解脱出来测试新的功能。

自动化测试之所以能在很多大公司实施起来,因为大公司搭建自动化测试框架后,能使用在多个项目中,有较高的投资回报率。

二、哪些项目不适合自动化测试

不适合做自动化测试的项目的特点:
  • 被测系统或需求不稳定,你永远会奔波在自动化测试用例的更新、维护、调试和测试报告的分析中,得不偿失。
  • 项目时间非常紧张。建自动化测试框架,开发测试脚本非常需要时间,对时间比较紧张的项目可以先不考虑自动化。
  • 定制型项目或一次型项目,为客户定制的产品,维护期由客户方自行承担的,甚至采用的开发语言、运行环境都是客户特别要求的,这样的项目不适合作自动化测试。
  • 项目周期很短,不值得花精力去进行自动化测试,好不容易编写好的测试脚本,不能得到重复的利用是一种资源的乱费。
  • 业务规则非常复杂的项目。业务规则很复杂,有很多的逻辑关系、运算关系,工具就很难判断得到的结果是异常还是正常。
  • 易用性测试,美观,声音等人的感观方面测试。
  • 测试很少运行,可能一年难有两个版本,自动化测试成效不高,自动化测试就是让它不厌其烦的、反反复复的运行才有效率。
  • 涉及物理交互,如打印,需要刷卡等。工具很难完成与物理设备的交互。

三、总结

说了这么多,提现要注意的是:不要被上面的条条框框所限制,有些项目不适合自动化,但它不是不能使用自动测试的手段解决一些问题。比如:简单的环境冒烟测试;频繁的造上游测试数据等。这些都可以用测试脚本实现,而且这些脚本不一定需要搭建个测试框架,建套持续集成环境,写个简单可靠性高点的线性脚本,就能节约很多时间。

我们应该有这样的观念: 自动化测试不是万能的,但它能帮助测试人员解决很多简单的重复工作。自动化测试只是测试人员工具箱里的一件工具,它无法取代测试工程师的地位。不管项目适不适合自动化测试,只要用对地方,就能使我们获益匪浅。
发表评论
评论通过审核后显示。
联系我们
  • 联系人:阿道
  • 联系方式: 17762006160
  • 地址:青岛市黄岛区长江西路118号青铁广场18楼