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

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

前段时间面试了某零售电商企业的测试经理岗位,面试官当时提了这样一个问题:我们这边测试团队开展自动化测试工作将近一年了,但目前还未看到明显的对测试过程或者质量的改善效果。如果是你,你会如何做自动化测试其实是一个老生常谈的话题了,业内各种自动化测试平台/框架,或者最佳实践已经足够多。按理来说大家照猫画虎摸着别人的路走应该都不至于难以落地,但现实是依然有很多团队面临难以落地或者说落地了没到达预期效果。我想结合自己的落地实践经验,试着分析为什么难以落地拿不到好结果,并给出自己的一些思考和建议。


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

在传统的软件研发交付流程中,大致有五个阶段:需求-设计-编码-测试-发布。测试更多的只是这个流程中的一环,主要负责QC(质量检测),即分析需求,评估测试点,设计测试用例,执行case,发现并追踪BUG。由于测试处在软件产品发布前的最后一环,且在前面几个阶段往往有各种原因(比如需求变更、临时需求)导致延期提测,真正用于测试活动执行的时间会被压缩。这就导致了一个问题:测试要用更少的时间为可能更多的工作量来兜底。线上正常发布没什么问题还好,如果出了问题大多第一时间找测试问责。自动化测试,就是将手动执行的部分交给机器或者工具自动执行,通过一定的规则和判断逻辑自动出具结果,提高执行的过程效率,让测试人员单位时间内的执行效率可以有大幅提升。随着软件工程和质量保障的相关理念不断发展,以及各种开源商用工具平台的出现,自动化测试从一开始的提高执行效率向着更多方向扩展,比如造测试数据、线上业务场景巡检,这些其实也对应着测试左移右移。总结一下,自动化测试要解决的问题主要如下:

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

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


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

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

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

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


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

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

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

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

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

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

相关文章
|
6月前
|
监控 测试技术 持续交付
自动化测试与持续集成/持续交付:加速软件开发的利器
在软件开发过程中,自动化测试与持续集成/持续交付(CI/CD)已经成为不可或缺的工具。本文将介绍自动化测试和CI/CD的概念及其在软件开发中的重要性,探讨其如何加速软件开发过程,提高质量和效率。
|
17天前
|
敏捷开发 测试技术 持续交付
探索自动化测试在敏捷开发中的应用与挑战
本文深入探讨了自动化测试在现代软件开发流程,特别是敏捷开发环境中的重要作用和面临的挑战。通过分析自动化测试的基本原理、实施策略以及在实际项目中的应用案例,揭示了其在提高软件质量和加速产品交付方面的巨大潜力。同时,文章也指出了自动化测试实施过程中可能遇到的技术难题、成本考量及团队协作问题,并提出了相应的解决策略,为软件开发团队提供了有价值的参考和指导。
|
1月前
|
敏捷开发 jenkins Devops
探索软件测试的新篇章:自动化与持续集成的融合之道
【9月更文挑战第31天】 在软件开发的海洋中,测试是确保航船稳健前行的灯塔。本文将引领读者驶入软件测试的新纪元,探索自动化测试和持续集成如何携手共创高效、可靠的开发流程。我们将从基础概念出发,逐步深入到实际操作层面,揭示这一现代软件开发模式的核心价值和实现路径。你将看到,通过代码示例和实践案例,如何将理论转化为提升软件质量的具体行动。
|
21天前
|
监控 jenkins 测试技术
探索软件测试的新篇章:自动化与持续集成
【10月更文挑战第25天】在数字化时代的浪潮中,软件已成为驱动世界的核心力量。然而,随着软件复杂性的增加,传统的测试方法已无法满足快速迭代和高质量交付的需求。本文将探讨如何通过自动化测试和持续集成(CI)来提升软件开发的效率和质量,同时确保产品的稳定性和可靠性。我们将从自动化测试的基础出发,逐步深入到持续集成的实践,并展示如何通过实际案例实现这一转变。
|
21天前
|
jenkins 测试技术 持续交付
探索软件测试的新篇章:自动化与持续集成的融合
【10月更文挑战第25天】在软件开发的世界里,质量是王道。本文将带你领略如何通过自动化测试和持续集成(CI)的结合,提升软件交付的速度与质量,确保每一次代码提交都是一次胜利的宣言。
|
2月前
|
Devops jenkins 测试技术
DevOps实践:持续集成与自动化测试的融合之道
【9月更文挑战第29天】在软件开发的快节奏竞赛中,DevOps如同一位智慧的舵手,引领着船只驶向效率与质量的彼岸。本文将揭开DevOps的神秘面纱,探索其核心理念如何通过持续集成(CI)和自动化测试的实践,实现软件开发流程的优化与加速。我们将一同见证代码从构思到部署的旅程,以及这一过程中的关键技术和工具如何协同工作,确保软件质量和交付速度的双重提升。
|
2月前
|
敏捷开发 jenkins Devops
软件测试的新篇章:自动化与持续集成的融合
【9月更文挑战第15天】在软件开发领域,质量保障始终是核心议题。随着敏捷开发的普及和DevOps文化的兴起,自动化测试和持续集成(CI)已成为现代软件工程不可或缺的组成部分。本文将深入探讨自动化测试的重要性、实施策略以及如何将其无缝集成到CI流程中,以实现更高效、更稳定的软件开发周期。通过具体案例分析,我们将揭示自动化测试和CI如何相互促进,提升软件交付的速度和质量。
|
3月前
|
jenkins 测试技术 持续交付
探索软件测试的新天地:自动化与持续集成的融合
【8月更文挑战第6天】在这篇文章中,我们深入探讨了软件测试领域内两大趋势——自动化测试和持续集成——如何相互融合,共同推动软件开发过程的效率和质量。文章将通过实际案例分析,展示这一融合对现代软件开发实践的影响,并讨论其对测试人员角色的深远意义。
55 9
|
3月前
|
人工智能 测试技术 持续交付
探索自动化测试框架的演进与实践
【8月更文挑战第6天】 随着软件行业的快速发展,自动化测试已经成为保障软件质量的关键手段。本文将深入分析自动化测试框架的发展脉络,从早期的线性脚本到现代的模块化、数据驱动和关键字驱动的框架,再到最新的基于AI的智能测试工具。文章还将探讨如何在实际工作中有效实施这些框架,以及在面对新技术时如何保持测试策略的灵活性和前瞻性。
44 2
|
4月前
|
敏捷开发 监控 测试技术
自动化测试框架的演进与实践
【7月更文挑战第19天】随着软件开发行业的飞速发展,自动化测试已成为确保软件质量的重要手段。本文将探讨自动化测试框架的发展历程,从早期的线性脚本到现代的模块化框架,以及它们如何适应敏捷开发和持续集成的需求。同时,我们还将深入分析几种流行的自动化测试工具,并讨论如何在实际项目中有效实施自动化测试策略。