为什么你的自动化测试无法落地

  • 📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 最困难的时候,也就是我们离成功不远的时候!

目录

    • 自动化测试要解决什么问题?
    • 为什么自动化测试难以落地?
    • 自动化测试如何达到预期效果?
    • 最后

前段时间面试了某零售电商企业的测试经理岗位,面试官当时提了这样一个问题:我们这边测试团队开展自动化测试工作将近一年了,但目前还未看到明显的对测试过程或者质量的改善效果。如果是你,你会如何做?

自动化测试其实是一个老生常谈的话题了,业内各种自动化测试平台/框架,或者最佳实践已经足够多。按理来说大家照猫画虎摸着别人的路走应该都不至于难以落地,但现实是依然有很多团队面临难以落地或者说落地了没到达预期效果。

我想结合自己的落地实践经验,试着分析为什么难以落地拿不到好结果,并给出自己的一些思考和建议。

自动化测试要解决什么问题?

在传统的软件研发交付流程中,大致有五个阶段:需求-设计-编码-测试-发布。测试更多的只是这个流程中的一环,主要负责QC(质量检测),即分析需求,评估测试点,设计测试用例,执行case,发现并追踪BUG。

由于测试处在软件产品发布前的最后一环,且在前面几个阶段往往有各种原因(比如需求变更、临时需求)导致延期提测,真正用于测试活动执行的时间会被压缩。这就导致了一个问题:测试要用更少的时间为可能更多的工作量来兜底。线上正常发布没什么问题还好,如果出了问题大多第一时间找测试问责。

自动化测试,就是将手动执行的部分交给机器或者工具自动执行,通过一定的规则和判断逻辑自动出具结果,提高执行的过程效率,让测试人员单位时间内的执行效率可以有大幅提升。

随着软件工程和质量保障的相关理念不断发展,以及各种开源商用工具平台的出现,自动化测试从一开始的提高执行效率向着更多方向扩展,比如造测试数据、线上业务场景巡检,这些其实也对应着测试左移右移。

总结一下,自动化测试要解决的问题主要如下:

测试准备阶段:提高测试活动开展前准备工作的执行效率(造数据);
测试执行阶段:提高测试活动执行过程的效率(UI/API/UNIT自动化测试);
测试跟踪阶段:提高软件线上发布后的跟踪和信息反馈效率(线上主流程巡检);

但如果我们换个思维来看待自动化测试,我们会发现自动化测试最大的价值在于:缩短了各个阶段的信息反馈链路。即通过提高效率,可以更快的发现可能存在的风险,风险越早发现修复的成本越低,对质量的影响也越小。

为什么自动化测试难以落地?

自动化测试属于高度和业务场景绑定的技术项目,要落地就要解决以下问题:

  • 需求的稳定性:如果需求经常变更,那只会造成自动化测试的大量重复返工。
  • 环境的稳定性:测试用例的执行和结果验证需要一个稳定的环境,而目前很多中小型公司对测试环境的稳定性不那么重视,甚至是选择性忽略。
  • 人员的稳定性:自动化测试用例大多要结合具体的业务场景来设计,且相关的测试数据也需要考虑场景的复杂性,如果测试同学在不同的项目和需求间疲于奔命,那很难保证测试用例以及数据和被测场景的高度匹配。
  • 目标的稳定性:自动化测试属于技术实践,合理明确的目标和阶段里程碑就很重要。但很多测试同学在落地自动化测试时,根本没考虑清楚到底要怎么做,要解决什么问题,通过什么手段解决问题,只想着我要用某个高大上的框架或者工具,别人在做我也要做。
  • 系统的简洁性:这点可以理解为系统架构的设计是否清晰,调用关系明确,请求链路可观测。大部分自动化测试都是调用各种API或者元素执行case,如果系统架构设计混乱,不同服务和模块间的调用关系混乱,那么就需要花费大量的时间去梳理这些才能开展后续的工作。前期大量的时间精力投入会极大的影响后续工作的开展,因为这意味着成本的增加。

总的来说,自动化测试有很显著的对质量保障和提升效率的优点,但要实践落地依然要面临诸多挑战。而发现问题,用合理可行的方法解决问题,并考虑投入产出比,这些才是落地一个技术项目的根本要素。

自动化测试如何达到预期效果?

我们在做一件事之前,一般都会对其赋予目标,比如开展自动化测试是为了提供测试过程效率。所谓的预期结果,就是针对做这件事所设定的度量指标,比如自动化测试的预期结果是降低版本回归测试的耗时。有了指标就需要对其进行可量化的考核,才能保证结果是否符合预期,比如原来版本回归耗时2人/日,通过自动化测试希望达到0.5人/日。

自动化测试要落地达到预期效果,在我看来主要有这几点需要考量:

  • 明确的目标:落地自动化测试的目的是什么,是为了提高效率还是单纯的想学习一个新工具/框架。
  • 合理的评估指标:评估指标的制定要和目标有直接关联,而不是照抄大厂,大厂的指标也许更好但不一定最合适。
  • 多维度的度量数值:度量指标要从多个维度制定,而不是单一维度;度量指标依然是一个辅助决策工具,而不是决定性的给出结论;
  • 合理可执行的过程方式:要达到好的目标,最关键的还是回到执行过程中。执行过程建议先划分为不同阶段,每个阶段制定合理的小目标和明确的时间节点,然后根据具体的执行情况及时调整。

比较合理的执行过程可以参考下列内容:

将大目标拆成比较小的几个目标,以自动化测试来说:刚开始只覆盖核心业务场景的P0场景,先拿到好的结果,然后再扩大覆盖范围,细化case的粒度,直至最终目标。则是小步快跑,做出MVP结果(最小可行性方案),用好的结果说服团队和上级,扩大覆盖范围,不断改进和优化自动化测试的提效效果。制定自动化测试的落地里程碑,以及预期的交付时间和交付效果。比如第一周demo跑通,第一个月覆盖主流程P0场景,第二个月覆盖P0+P1场景,提升回归测试效率30%。

从我的经验来说,成功的技术项目要落地达到预期效果,要具备这些特质:可落地可执行,有明确的落地时间+执行方式+预期结果。

最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/211613.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android]使用Git将项目提交到GitHub

如果你的Mac还没有安装Git,你可以通过Homebrew来安装它: brew install git 方式一:终端管理 1.创建本地Git仓库 在项目的根目录下,打开终端(Terminal)并执行以下命令来初始化一个新的Git仓库&#xff1…

Centos7安装Cesi(Supervisor集中管理工具)

Background CeSi 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI,该工具是用 Python 编写,基于 Flask Web 框架 。Superviosr 自带的 Web UI 不支持跨机器管理Supervisor 进程,功能比较简单,通过 CeSi 可以集中管理…

Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!

Django Rest Framework(DRF)是构建强大且灵活的Web API的优秀工具。它基于Django,提供了一套用于构建Web API的组件和工具,简化了API开发过程,同时保留了Django的优雅和强大。 一、Web应用模式 在开发Web应用时&…

Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来 )

Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来,layer.load延迟)jax重新获取数据刷新页面功能,因为ajax属于耗时操作,想在获取数据且加载页面时显示加载遮罩层,结果发现了ajax的好多坑。…

使用Wireshark提取流量中图片方法

0.前言 记得一次CTF当中有一题是给了一个pcapng格式的流量包,flag好像在某个响应中的图片里。比较简单,后来也遇到过类似的情况,所以总结和记录一下使用Wireshark提取图片的方法。 提取的前提是HTTP协议,至于HTTPS的协议需要导入服…

随笔记录-springmvc_ResourceHandlerRegistry+ResourceHttpRequestHandler

环境:springboot-2.7.5 配置文件配置静态资源映射 springboot配置静态资源映射方式是通过 WebMvcAutoConfiguration 实现的 spring: # resources: # # 自springboot 2.5.5之后,该属性已经被废弃,使用spring.web.resources.static-locat…

Android设计模式--适配器模式

至诚之道,可以前知 一,定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 适配器模式在我们的开发中使用率极高,ListView,GridView&am…

redis运维(十八)pipeline

一 pipeline 流水线 说明: 这里讲解的不是jenkins的pipeline流水线这里pipeline: 管道 redis为什么要提供pipeline功能 事务和pipeline ① pipeline的理念 强调:单纯的pipeline跟事务没有关系redis-cli --pipe --> 使用了pipeline机制说明&a…

PPP/INS紧组合算法

前言:在学习紧组合之前学会GNSS/INS松组合是很有必要的,i2NAV团队开源的KF_GINS项目可以作为GNSS/INS松组合学习模板,本文章主要对武汉大学i2NAV发布的PPP/INS紧组合学习资源进行算法层面的总结,链接: 武汉大学多源智…

鸿蒙(HarmonyOS)应用开发——ArkTs学习准备

介绍 前面我们已经介绍了,如何安装HarmonyOS的IDE ,那么现在我们来介绍一下。HarmonyOS 开发的语言——ArkTs. ArkTS 是HarmonyOS的开发语言,他是typescript 的扩展,而typesrcipt是javascript的超集,如果你不太熟悉typescript语法…

Switch的使用及其注意事项

注意第五点要看清,case执行完后匹配没有成功,如过有Default,将会执行Default,如果有case在Default之后,而且Default没有break语句,那么将会继续执行case的语句,此时case中的常量表达式只起语句标…