你真的需要自动化测试吗?

简介: 其实自动化这个概念很早前就有了,最初主要应用于工业生产领域,指通过指令或软件控制机械工具完成一些重复度较高的工作。后来随着计算机技术的发展和互联网行业的蓬勃趋势,开始应用于软件开发和测试领域。

640.jpg


前几天在技术交流群,有同学抛了一个关于自动化测试的思维导图,问大家有什么好的建议。


思维导图如下:


640.jpg


看完之后我问了几点问题:


  • 团队目前的痛点是什么;
  • 有哪些可能的解决方案;
  • 自动化是不是最好的方案;
  • 实施自动化,团队内部是否做过调研评估;


很多同学做自动化测试时,常见的问题是我要怎么做,用什么框架,脚本和数据分离,陷入熟悉依赖路径,但缺乏思考。


这篇文章,我想谈谈在自动化测试落地之前,关于是否需要做自动化以及什么时候做自动化的一些思考和个人看法。


要不要做自动化测试?


其实自动化这个概念很早前就有了,最初主要应用于工业生产领域,指通过指令或软件控制机械工具完成一些重复度较高的工作。后来随着计算机技术的发展和互联网行业的蓬勃趋势,开始应用于软件开发和测试领域。


无论是我们比较熟悉的各种自动化测试如UI自动化、接口自动化甚至单元自动化测试或者是CICD,其本质都是通过借助工具帮我们完成日常工作中重复度较高,手动又比较费时的工作。


自动化测试的优势在于将重复度较高又比较费时的工作交给软件工具,解放人力资源去做其他更有创造性的工作,提升投入和产出的比率,用更少的成本投入创造更大的价值。


那么工作中要不要做自动化测试呢?答案是肯定的。


但是新的问题来了,自动化测试=适用于任何阶段任何团队的吗?并不一定。


什么时候做自动化测试?


我们都知道,软件测试(质量保障)其实追求的是2个目标:质量和效率。


本质来说,自动化测试是一种辅助的提效手段,而不是解决问题的目的,且并不是唯一的提效手段。


工作中什么时候开展自动化测试,如何开展,做什么类型的自动化测试,是否有足够的资源投入,都是需要经过慎密的调研评估,而非为了自动化而自动化,这样无异于舍本逐末。


我们日常的测试工作都是在软件工程的方法论指导下,遵循一定的流程规范来开展的。软件工程的方法论,其实本质来说就是三个词:成本+收益+风险。即尽可能用较低的成本投入获得更高的收益,且承担的风险可控


三者不可兼得,需要做一定的平衡和牺牲,以达到最终的质量和效率目的。


因此在评估是否要开展自动化测试之前,需要尽可能基于上述几点因素来考虑。


举个例子:


某创业型公司,当前处于产品初创和快速迭代期,追求的是快速推出MVP产品推向市场,业务不稳定,人力资源紧张,技术基础设施很差,那这个时候是不适合做开展自动化测试的。


前面提到了, 自动化测试适用于重复度较高的工作,且不是一蹴而就即插即用就能解决问题的。需要相对稳定的业务需求迭代、比较成熟稳定的研发团队和一定的技术基础设施建设,以及较为规范的流程才能更好的落地,达到提效的目的

那么如果要落地自动化测试并达到提效的目的,需要考虑哪些因素呢?


落地自动化测试前要思考的


以我个人的实践经验来讲,落地自动化测试之前,需要思考下面一些因素:


  • 当前面临的痛点是什么?
  • 痛点背后的原因有哪些?
  • 有什么可以解决问题的方案?
  • 自动化是不是最好的解决方案?
  • 当前的情况是否适合开展自动化测试?
  • 开展自动化测试前要调研评估哪些因素?
  • 选定试点范围;
  • 自动化工具调研;
  • 团队成员技术栈匹配度;
  • 要投入多少人力时间资源;
  • 预期的投入产出比是多少;


就像群里一位同学说的一段话:“我昨天和业务部门开会,有部门领导提出来说全链路压测平台和商用的差距还很大,需要好好建设。我说,你们都基本没有全链路压测需求,我投入大量精力去做,但没人用啊”。


企业的本质是追求更大化的价值,其实并不关心用什么技术手段。自动化是一种辅助提效手段之一,并不是做事的目的。

不要为了自动化而自动化,看到钉子就想找锤子砸下去,相比于做什么,更需要考虑的是做这件事的原因和带来的价值。

这篇文章,我阐述的是一种思考问题的方式,而非具体的实践路径。


下篇文章,我会聊聊自动化测试在具体的工作中如何落地,敬请期待。


往期精彩内容推荐


漫谈测试覆盖率

测试需要做单元测试吗?

聊聊我对质量度量的看法

测试的核心竞争力是什么?

如何建立高效的质量保障机制

复盘归因,提高交付质量的秘诀

如何通过质量内建提升交付能力?

相关文章
|
9月前
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
Selenium 大家应该都很熟悉了吧,简单说它就是个基于浏览器的 Web 自动化测试工具,基本上是自动化测试人员首选工具。因为相比其他工具,它有很多的优势: 支持多种语言,比如 Python、Java、C或C#、ruby 等都支持; 支持多种浏览器, 比如 IE、FireFox、Safari、Opera、Chrome 这些主流浏览器基本都支持; 支持多种操作系统,比如 Windows、Mac、Linux 这个款主流操作系统。 其实单就上面这些优势就足以证明它的强大了,再加上它还支持分布式部署自动化测试程序,在多台不同的机器上同时执行。
45 0
|
9月前
|
运维 Cloud Native Devops
云原生 DevOps 自动化运维 概述
【1月更文挑战第7天】云原生 DevOps 自动化运维 概述
|
8月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用问题之代码关联能关联自建的gitlab吗
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
测试技术 API 数据库
了解1688API接口测试 | 1688 API接口测试指南
在当今电子商务快速发展的时代,1688作为中国最大的B2B电子商务平台之一,为商家提供了丰富的商品资源和交易平台。为了方便商家进行商品管理和交易操作,1688提供了一系列的API接口,通过这些接口,商家可以方便地获取商品信息、发布商品、管理订单等。然而,在使用这些API接口之前,我们需要进行接口测试,以确保接口的正常运行和数据的准确性。本文将详细介绍1688API接口测试的重要性和方法,并提供相关的代码示例。
|
测试技术 UED
自动化测试如何实施落地?
“自动化测试适用于重复度较高的工作,且不是一蹴而就即插即用就能解决问题的。需要相对稳定的业务需求迭代、比较成熟稳定的研发团队和一定的技术基础设施建设,以及较为规范的流程才能更好落地,达到提效的目的”。
自动化测试如何实施落地?
|
Java
Java最难的语法<泛型>
Java最难的语法<泛型>
54 0
|
安全 测试技术 项目管理
CMMI-风险管理(RSKM)
CMMI-风险管理(RSKM)
250 0
|
监控 druid Java
java数据库连接池有哪些
java数据库连接池有哪些
451 0
自动化测试技术笔记(三):如何编写技术方案
首先这个要求我觉得挺正常,一方面评审可以查漏补缺完善细节,另一方面也可以考察具体的落地经验和能力。其次,我认为技术方案其实有个通用的模版,或者说抽象的经验参考,这也是本篇文章我想聊的话题。
|
监控 搜索推荐
解决问题的最佳实践路径
借助搜索引擎看是否有类似问题和解决方案,分析可行性并尝试(试错),搞不定再求助更专业的人;
解决问题的最佳实践路径