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

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

640.jpg


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


思维导图如下:


640.jpg


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


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


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


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


要不要做自动化测试?


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


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


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


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


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


什么时候做自动化测试?


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


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


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


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


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


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


举个例子:


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


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

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


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


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


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


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


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

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

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


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


往期精彩内容推荐


漫谈测试覆盖率

测试需要做单元测试吗?

聊聊我对质量度量的看法

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

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

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

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

相关文章
|
10月前
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
反了!居然让我教她自动化测试!
反了!居然让我教她自动化测试!
|
11月前
|
数据可视化 IDE Java
PlanUML和Mermaid哪个好?
PlanUML和Mermaid哪个好?
1420 0
|
10月前
|
敏捷开发 Kubernetes 测试技术
阿里云云效产品使用问题之代码关联能关联自建的gitlab吗
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
11月前
|
存储 Java API
Android系统 文件访问权限笔记
Android系统 文件访问权限笔记
997 1
|
前端开发 项目管理 开发者
|
11月前
|
Linux 网络安全 开发工具
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透
214 0
自动化测试技术笔记(三):如何编写技术方案
首先这个要求我觉得挺正常,一方面评审可以查漏补缺完善细节,另一方面也可以考察具体的落地经验和能力。其次,我认为技术方案其实有个通用的模版,或者说抽象的经验参考,这也是本篇文章我想聊的话题。
|
测试技术 UED
自动化测试如何实施落地?
“自动化测试适用于重复度较高的工作,且不是一蹴而就即插即用就能解决问题的。需要相对稳定的业务需求迭代、比较成熟稳定的研发团队和一定的技术基础设施建设,以及较为规范的流程才能更好落地,达到提效的目的”。
自动化测试如何实施落地?
|
Cloud Native 前端开发 IDE
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
本文作者将给大家提供一些简单的容易实操的方法,能够让所有人都知道什么是效能的提升,如何提升个人的效能,如何提升团队的效能。
1782 24
「技术人生」第10篇:如何做研发效能提升(即指标体系建设过程回顾)
|
Linux 开发工具 数据安全/隐私保护
【内网穿透】Linux本地搭建GitLab服务器
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和文档管理, 其中group是群组, project是工程项目, 一个group可以管理多个project, 可以理解为一个群组中有多项软件开发任务, 而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。