如何应对UI测试自动化的不稳定循环!

以下为作者观点:

当我加入UI自动化团队时,我很高兴能为新功能的自动化测试用例开发做出贡献。然而,我很快意识到团队花费了大量时间来修复之前迭代中不稳定的测试。这种情况让我感到困惑,因为当自动化测试脚本已知不稳定时,将其推送到 main branch 似乎是违反直觉的。

与团队讨论后,我了解到,紧迫的时间压力常常导致合并不完整或不稳定的测试脚本。此外,还缺乏健全的流程来识别和处理不稳定的测试,以免它们进入 main branch。结果就是 "不可靠的测试越来越多,削弱了我们对自动化套件的信心",并拖慢了我们的开发进程。

为了应对这一挑战,我着手简化我们的测试流程并防止不稳定的测试污染我们的主要测试套件。以下是一些思考过程:

了解UI自动化生命周期

为了了解不稳定测试问题的根本原因,我必须了解并领悟团队内部所遵循的 UI 自动化生命周期的各个阶段。以下是该过程的细分:

图片

图1

  • 评估新的UI功能:团队彻底审查并了解每个新功能的功能、设计和用户交互。这涉及分析该功能如何与现有应用程序集成及其对用户体验的影响。

  • 确定可测试场景:确定新 UI 功能需要测试的关键用户场景和交互至关重要。正面和负面测试用例均需考虑,以确保全面覆盖。

  • 评估自动化可行性:评估新 UI 功能自动化测试的可行性是至关重要的一步。需要考虑的因素包括复杂性、可靠定位器的可用性、UI 稳定性以及整体测试自动化策略。

  • 制定测试计划:有必要制定详细的测试计划,概述新 UI 功能的测试方法、测试用例和预期结果。该计划包括手动和自动测试策略,以确保全面测试。

  • 设置测试自动化基础设施(如果有):确保必要的测试自动化基础设施到位至关重要。这包括选择合适的自动化工具、配置测试环境和设置测试数据管理流程。

  • 实施自动化场景:为新UI功能开发和实施自动化测试脚本。这涉及创建强大的定位器并遵循最佳实践,以实现可维护且可靠的测试自动化。

  • 集成自动化测试:将新的自动化测试集成到整体测试套件和持续集成/持续部署 (CI/CD) 流程中,确保测试作为常规构建和发布过程的一部分执行。

  • 持续监控和维护:定期检查和维护新 UI 功能的自动化测试,并根据需要更新测试以适应应用程序或测试环境的变化。监控测试结果并及时解决任何故障或问题。

在检查完整的 UI 测试自动化周期时,我注意到流程的右半部分和左半部分之间有明显的区别。

右半部分:顺利进展

周期((图1))的右半部分包括评估新的 UI 功能、确定可测试场景、评估自动化可行性、制定测试计划以及设置测试自动化基础设施,通常进展顺利。团队能够在每项新功能的指定时间范围内有效地完成这些步骤。

左半区:问题区域

然而,真正的挑战在于周期(图1)的左半部分。在这一部分,团队需要实施自动化场景,将其集成到整个测试套件中,并持续监控和维护自动化测试。

当团队为了满足紧迫的期限而匆忙实施和集成自动化测试而没有彻底验证其稳定性和可靠性时,就会出现问题。不稳定的测试被推到主分支,导致不可靠的测试积压越来越多,需要不断维护和修复。

团队没有专注于为即将推出的功能开发新的自动化测试或修改现有测试以适应功能更新,而是花费大量时间来处理不稳定的测试。这种恶性循环阻碍了团队及时高效地提供高质量自动化测试的能力。

图片

图2

为了进一步了解这个问题的根本原因,我需要更深入地研究不稳定测试的概念以及它们出现的原因。

不稳定测试是指自动化测试表现出不一致的行为,有时通过,有时失败,即使被测试的代码保持不变。这些测试给自动化套件带来了不确定性和不可靠性,使得测试结果难以令人信赖。

经过与团队的讨论和彻底的分析,我发现了不稳定测试发生的几个主要原因:

  • 时间问题:不稳定的测试通常由于与时间相关的问题而出现。依赖硬编码延迟的测试容易受到执行时间波动的影响,从而导致间歇性故障。如果处理不当,异步操作(例如API调用或UI交互)也可能会引入时间不确定性。

  • 环境不一致:测试环境的差异(例如不同的网络延迟、浏览器版本或操作系统)可能会导致测试不稳定。在一个环境中完美运行的测试可能会在另一个环境中意外失败(可能是管道),这使得重现和诊断问题变得困难。

  • 依赖外部因素:依赖外部服务、第三方 API 或特定数据条件的测试容易出现问题。如果这些外部因素不稳定或无法持续使用,即使应用程序代码正常运行,测试也可能会间歇性失败。

  • 测试隔离不足:缺乏适当的测试隔离会导致不稳定的测试。如果测试依赖共享资源或对执行顺序有依赖性,它们可能会相互干扰并产生不一致的结果。确保每个测试都是独立且自足的,对于缓解不稳定至关重要。

  • 非确定性行为:一些不稳定的测试可能是由应用程序本身的非确定性行为引起的。竞争条件、并发问题或代码中的随机性可能会导致测试以不可预测的方式通过或失败,这使得识别和解决潜在问题变得具有挑战性。

解决问题……

采取积极主动的方法:监控和解决不稳定因素

了解不稳定测试的根本原因是应对挑战的关键一步。有了这些知识,我与团队合作,设计出一种多方面的方法来正面解决不稳定问题。

在我们的团队中,我们会遵循两周的发布周期来发布任何更新或新功能(次要功能)。第一周专门用于 UI 自动化周期的右半部分,我们会彻底讨论 UI 设计和流程,让开发团队开始着手实现功能。在此期间,我们的团队专注于开发测试场景、审查它们,并最终确定哪些可以自动化。

第二周开始后,我们有五天的时间来开发测试脚本,并在周六晚上发布。理想情况下,如果我们到那时可以实现至少 80% 的自动化测试,那么发布过程就会变得更加顺畅,因为手动重新检查错误所需的时间会大大减少。

然而,我们遇到了一个重大障碍:在发布周期中,我们没有利用自动化测试脚本,而是发现自己陷入了困境,这迫使我们进行大量的手动测试。这提出了一个关键问题:

如果在最重要的时刻我们不能依赖自动化测试,为什么我们要花整整五天的时间来开发自动化测试呢?

经过仔细分析,我意识到虽然大多数测试都可以编写脚本,但缺少的关键要素是在两周的时间内持续监控开发的脚本。我们期望最终结果在周末之前就完美无缺,但实际上,除非开发的代码非常强大和可靠(这种情况很少见),否则这是不可能的。

为了解决这个问题,我有这个想法:

不仅要监控已开发的测试套件,还要在发布周期内密切关注新开发的测试。通过这样做,我们可以尽早发现并解决任何不稳定或可靠性问题,而不是等到周期结束。

图片

五个行动计划

此外,我们还制定了五个行动计划,以正面解决不稳定问题并确保整个发布周期内自动化测试的可靠性。该计划侧重于持续监控、协作和主动解决问题。让我们深入了解每个要点的细节:

  • 每日测试运行:如上所述,我们为新开发的自动化测试设置了每日测试运行,以便我们能够及时发现任何不稳定或故障。这给了我们充足的时间来调查和解决问题,以免问题在周期后期积累并造成延迟。

  • 协作代码审查:我们为自动化测试脚本制定了协作代码审查的实践。团队成员将审查彼此的代码,提供反馈和改进建议。这有助于保持代码质量,识别潜在的缺陷,并确保遵守最佳实践。

  • 不稳定测试跟踪和优先级排序:我们创建了一个专门的不稳定测试跟踪系统,根据不稳定测试的影响和发生频率记录和排序不稳定测试。这使我们能够将精力集中在最关键的不稳定测试上,并逐步解决积压问题。

  • 根本原因分析:每当发现不稳定的测试时,我们都会进行彻底的根本原因分析,以了解其不一致行为的根本原因。通过查明具体原因(例如时间问题、环境因素或测试隔离问题),我们可以制定有针对性的解决方案来消除不稳定性。

  • 持续改进:我们在团队内部培育了持续改进的文化。我们定期举行回顾和知识共享会议,讨论所取得的进展、分享见解并确定测试自动化流程中需要进一步改进的领域。

通过实施这些措施并在整个发布周期内监控已开发的测试,我们见证了自动化测试套件的不稳定性显著减少和可靠性提高。团队对自动化测试的信心增强,我们可以在发布过程中有效地利用它们,从而节省宝贵的时间和精力。

然而,值得注意的是,对抗不稳定测试的斗争是一场持续不断的战斗。随着应用程序的发展和新功能的引入,不稳定的风险仍然存在。保持积极主动的方法、持续监控测试结果并迅速解决任何不稳定行为对于保持自动化套件的可靠性和可信度至关重要。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HRSC2016 :推动光学遥感图像细粒度船舶检测的创新引擎(目标检测)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 摘要&a…

LabVIEW在核磁共振实验室的应用

​核磁共振(NMR)实验室在进行复杂的核磁共振实验时,需要一个高效、灵活且易于操作的实验控制和数据采集系统。传统的NMR实验系统往往使用专门的硬件和软件,存在系统封闭、扩展性差、维护成本高等问题。为了解决这些问题&#xff0…

java设计模式(五)建造者模式(Builder Pattern)

1、模式介绍: 建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建一个复杂对象的表示,同时隐藏了创建细节。该模式将对象的构建过程和表示分离,使得相同的构建过程可以创建不同的表示。 2、应…

低成本的PS5存储扩容方案,铠侠SD10 PCle4.0固态硬盘扩容报告

低成本的PS5存储扩容方案,铠侠SD10 PCle4.0固态硬盘扩容报告 哈喽小伙伴们好,我是Stark-C~ 对于入手PS5的游戏玩家来说,机器到手第一步,那就是订阅索尼PlayStation Plus会员,可以尽情的玩耍上百款游戏3A大作&#xf…

web刷题记录

[HDCTF 2023]SearchMaster 打开环境,首先的提示信息就是告诉我们,可以用post传参的方式来传入参数data 首先考虑的还是rce,但是这里发现,不管输入那种命令,它都会直接显示在中间的那一小行里面,而实际的命令…

L59---101.对称二叉树(广搜)---Java版

1.题目描述 2.思路和知识点 (1)根节点为空: 如果根节点为空,树是对称的。 (2)递归检查: isMirror 方法递归检查两个子树是否是镜像对称的。 (3)辅助函数 isMirror: 1)如果两个节点都为空,它们是镜像对称的…

Java中特殊文件和日志技术

特殊文件和日志技术 特殊文件:Properties属性文件 特点: 特点一:都是键值对 特点二:键不能重复 特点三:文件后缀一般是Properties 作用: …

涵盖多项功能的文件外发系统,了解一下

伴随着业务范围的不断扩大,信息化的迅速发展,企业与客户、供应商等合作伙伴之间的文件交换也愈加频繁,尤其涉及到核心数据,像核心技术、设计图纸等敏感数据,对其的保护也是越发重视。文件外发系统,应运而生…

2024年河北省特岗教师报名流程详细图解

最近有很多学员们问特岗教师具体的报名流程 给大家安排! 特岗报名步骤 第步: 电脑搜索“河北特岗招聘”登录进行注册 第步:注册后重新登录 第步: 根据个人情况选择填写自己的学历 第步:填写个人信息 (需要上传的电子版的照片、普通话证、学历证书、教资证等) 第步:选择岗位报名…

【大数据技术原理与应用(概念、存储、处理、分析与应用)】第2章-大数据处理架构 Hadoop习题与知识回顾

文章目录 单选题多选题知识点回顾什么是Hadoop?Hadoop有哪些特性?Hadoop生态系统是怎么样的?(1) HDFS(2) HBase(3) MapReduce(4) Hive(5) Pig(6) Mahout(7) Zookeeper(8) Flume(9) Sqoop(10) Ambari 单选题 1、下列哪个不属于Hadoop的特性&am…

MySQL索引优化解决方案--索引优化(4)

排序优化 尽量避免使用Using FileSort方式排序。order by语句使用索引最左前列或使用where子句与order by子句条件组合满足索引最左前列。where子句中如果出现索引范围查询会导致order by索引失效。 优化案例 联表查询优化 分组查询优化 慢查询日志

2024年上半年软件设计师上午真题及答案解析

1.在计算机网络协议五层体系结构中,( B )工作在数据链路层。 A.路由器 B.以太网交换机 C.防火墙 D.集线器 网络层:路由器、防火墙 数据链路层:交换机、网桥 物理层:中继器、集线器 2.软件交付之后&#xff…

C++ | Leetcode C++题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution { public:int calculateMinimumHP(vector<vector<int>>& dungeon) {int n dungeon.size(), m dungeon[0].size();vector<vector<int>> dp(n 1, vector<int>(m 1, INT_MAX));dp[n][m …

并发编程-04synchronized原理

并发编程-04synchronized原理 一 synchronized基础 1.1 并发安全问题 在学习synchronized原理之前&#xff0c;我们先要了解synchronized是干嘛用的&#xff0c;什么场景下需要使用它&#xff0c;以及它的使用方式有哪些&#xff1f;接下来我们去根据一个业务场景去了解下sy…

如何高效利用iCloud指南

苹果公司提供的iCloud服务是一个强大的云平台&#xff0c;它不仅允许存储数据&#xff0c;还支持跨设备的无缝同步和备份。通过充分利用iCloud&#xff0c;用户可以在多个设备上高效地访问和管理工作文件、照片、应用程序数据等等。具体分析如下&#xff1a; iCloud基础了解和配…

mysql workbench使用schema视图导出表和列结构到excel

目的&#xff1a;导出所有表和列的名字和注释 很多时候没有正规的数据库文档&#xff0c;为了快速交流啊&#xff0c;需要一个快捷的基础。数据库建表的时候可能有注释&#xff0c;也可能没有注释。有当然好&#xff0c;查看注释就能清楚很多&#xff0c;没有的话最好一个一个补…

这表单时而能使,时而不能使【debug】

项目地址&#xff1a;StrongBySteps-GitHub(一个学习记录与时间管理系统。) 这表单时而能使&#xff0c;时而不能使 在没有填写“绑定子任务”时&#xff0c;修改计划用时&#xff0c;比如我填写的是10。显示修改成功&#xff0c;但实际上并没有修改&#xff08;还是5&#xf…

单体架构改造为微服务架构之痛点解析

1.微服务职责划分之痛 1.1 痛点描述 微服务的难点在于无法对一些特定职责进行清晰划分&#xff0c;比如某个特定职责应该归属于服务A还是服务B? 1.2 为服务划分原则的痛点 1.2.1 根据存放主要数据的服务所在进行划分 比如一个能根据商品ID找出商品信息的接口&#xff0c;把…

Web应用和Tomcat的集成鉴权1-BasicAuthentication

作者:私语茶馆 1.Web应用与Tomcat的集成式鉴权 Web应用部署在Tomcat时,一般有三层鉴权: (1)操作系统鉴权 (2)Tomcat容器层鉴权 (3)应用层鉴权 操作系统层鉴权包括但不限于:Tomcat可以和Windows的域鉴权集成,这个适合企业级的统一管理。也可以在Tomcat和应用层独立…

图神经网络实战(15)——SEAL链接预测算法

图神经网络实战&#xff08;15&#xff09;——SEAL链接预测算法 0. 前言1. SEAL 框架1.1 基本原理1.2 算法流程 2. 实现 SEAL 框架2.1 数据预处理2.2 模型构建与训练 小结系列链接 0. 前言 我们已经学习了基于节点嵌入的链接预测算法&#xff0c;这种方法通过学习相关的节点嵌…