维持硒测试自动化的完美方法

毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式。 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序。 但是有时,甚至IT部门也误解了自动化一词。

大多数人认为计算机将为他们完成所有测试! 他们最终还以为可以使整个产品自动化。 好吧,我并不是说他们做不到,而是要依靠完全的自动化来维护它。 毕竟,这并不总是一劳永逸! 自动化会产生您不容忽视的维护成本。

那么,Selenium测试自动化工程师最大的噩梦是什么? 现在我们知道这是自动化测试维护。 即使在用户界面中进行很小的更改,也有可能破坏测试。 这要求Selenium测试自动化具有理想的维护过程。 关于这一点,我们将在本文中讨论维持Selenium测试自动化的完美方法。

有哪些不同类型的测试维护?

测试维护包括两大类过程。 首先是当已经进行的测试可能开始失败时。 另一类是生命线工具依赖性的变化。 让我们分别看看这两种情况。

  • 测试失败时

测试失败的第一反应是什么? 当然,确定失败的原因。 有时软件中可能存在缺陷。 其他原因可能是无法预料的副作用和行为改变。 在这种情况下,修复代码或更新测试会有所帮助。 有时,团队可能必须同时做这两项。

  • LifeLine工具依赖关系的变化

生产中运行的Selenium Test自动化工具需要支持。 当公司更改报告工具或API时,它可能需要对这些工具的某些元素进行更改。 这使得它可以作为工具集的一部分运行。 如果需要更新工具基础结构,则此类测试自动化维护还包括对工具进行培训的开发人员。

自动化测试维护有什么问题?

当谈到测试自动化时,首先想到的是什么? 好吧,对我来说,是硒。 毫不夸张地说,Selenium测试自动化统治着测试自动化领域。 但是问题在于它使用了JavaScript。 而且由于JavaScript依赖于定位符,因此随着page元素的移动,定位符也会随之移动,结果是选择了错误的定位符。

创建脚本时,至关重要的是要确定要与之交互的元素的选择器。 运行测试脚本时,您可以在页面上找到此选择器。 这是团队采取适当行动的时候。 但是随着UI的发展和变化,页面元素可以移动。

现在想象一下与这些元素交互的不同测试。 为防止测试失败,更新这些测试很重要。 有时,要经过几步才能确定真正的错误。 现在,由于您必须返回几步来找出问题所在,因此使过程变得更加困难。

硒测试自动化维护是一个持续的需求。 解决现有测试中的问题可能会浪费测试人员的宝贵时间。 毕竟,他们可以在这段时间内创建新的测试,完善测试套件并完成更多工作! 那么,如何使事情变得容易呢? 让我们来看看。

敏捷环境中的开发人员如何支持测试自动化维护?

硒测试自动化团队已经承担了保持工具和脚本更新的责任。 因此,随着用于检查特定元素的Selenium自动测试的数量增加,团队的工作量将越来越大。

对于传统的瀑布式框架,外部团队负责维护测试脚本。 因此,它们使开发人员不必这样做。

但是,敏捷的框架消除了对外部团队的需求。 敏捷方法论包括一个跨职能的开发团队和一个敏捷测试人员。 如果检查失败,则由开发团队负责。 他们可以构建,执行自动浏览器测试,修复和重新测试,换句话说,可以体验整个反馈周期。 最好的部分是,他们不必坐在那里等待外部团队的投入。

与拥有孤立的开发和测试团队的敏捷公司相比,敏捷公司产生的反馈周期更加紧凑。 敏捷测试人员知道需要更新什么。 他们还知道各种错误修复以及导致问题的原因。 他们还可以向程序员询问影响测试的代码更改。 这样,测试信息将立即可用。 因此,您可以在收到消息后立即对其进行操作,而不必将信息保留在队列中。

自动化测试在敏捷中的作用

跟上维护硒测试自动化的需求

一旦遇到测试失败,立即开始寻找补救措施就很重要。 这要求开发团队为硒测试自动化维护制定计划。 这包括弄清楚谁会做什么,并相应地分配任务。

如果没有计划,则整个工作量可能会落在无能的人身上。 即使落在熟练工人的手中,公司也有可能使勤奋的员工负担过重。 这增加了倦怠的风险,倦怠是整个硒测试自动化维护过程中的敌人。 最坏的情况是,您会因为精疲力尽而失去宝贵的资产。

最小化测试自动化维护的最佳实践

自动化测试工具需要维护。 如果您无法跟上与维护相关的需求,那么以后可能要付出代价。 这里有一些减少自动浏览器测试维护的最佳实践。

1.保持自动化设计的简单性和战略性

保持简单是简化测试维护过程的关键。 现在,我知道您可能会认为我说的话说起来容易做起来难。 但是您应该尽量使用简单的Selenium测试自动化脚本。 原因是您可以快速执行低级测试。 此外,它们还易于维护,因为它们减少了维护工作量。

不必要地使测试套件复杂化会增加发生故障的机会。
但是有时候,复杂的情况是不可避免的。 在这种情况下,最好的解决方案是创建可重用的测试。

2.激发开发人员注意测试的精神

更新的UI是至关重要的过程,可为最终用户提供愉悦的体验。 但是通常,UI / UX开发人员在编写代码时不会在心中进行测试。 在这种情况下,为每个对象制定命名约定可能会有所帮助。 当您拥有稳定的QA ID时,Selenium测试自动化脚本将随着代码和UI / UX设计的不同方面不断识别对象。

测试人员和开发人员之间更好协作的7种方法

3.建立保持自动化的过程

您是否具有检查和更新Selenium测试自动化脚本的系统? 如果没有,那么该是时候建立一个使Selenium测试自动化保持更新的过程了。 我确信您的团队必须努力提供不断改进应用程序的功能。 但是您的测试脚本是否遵循该套件? 好吧,他们这样做很重要! 从长远来看,制定既定的策略来确保相同效果将节省大量工作。

4.建立智能测试执行策略

每个公司都感谢他们的辛勤工作。 但是您知道什么可以使公司蓬勃发展吗? 聪明的工作! 现在,我并不是说您不应该努力工作。 只是团队不必每次部署新代码都运行一个完整的测试周期。 毕竟,节省额外的精力并将其转移到其他地方没有什么害处。

涵盖所有主要测试案例的每晚自动浏览器测试是您的理想之选。 通过测试用例,我并不是说非常关键的用例。 您可以在此策略中涵盖常规维护测试。 自动化测试周期的结果将帮助您识别或解决夜间自动化测试中的问题。

为什么您需要了解测试管理策略?

5.识别片状测试并努力减少它们

在确定并尝试减少片状测试之前,让我们看一下它们是什么。 假设您在相同的参数下运行测试。 但是它们仍然给出不一致的结果。 它们被称为片状测试。 换句话说,易碎测试是测试人员再次运行时通过的失败测试。 通常,这在用户界面测试中普遍存在。

在自动浏览器测试设置中可能会出现松软感,而不是开发代码。 不幸的是,您可能无法完全避免使用它们,识别出片状测试并快速对其做出响应非常重要。 因此,减少不稳定的测试将帮助您轻松维护测试套件。

6.将自动化工作重点放在高价值和不稳定的功能上

哪些自动化测试最容易维护? 从未写过的那个。 硒测试自动化并不容易。 编写新测试肯定会花费大量时间。 因此,为了最大程度地减少我们的测试自动化维护工作,您需要考虑为哪些功能编写测试。 因此,建议将自动化工作重点放在高价值和不稳定的功能上。 围绕关键业务价值案例进行自动化测试,而不是围绕Web应用程序的亮丽外观进行自动化测试。

7.自动化测试报告

如果无法衡量,就无法改进。 话虽这么说,至关重要的是继续监视测试结果,以确定哪些地方需要改进以及哪些功能稳定。 同样,需要保留重要信息的测试结果,以备将来参考。

要自动执行测试报告,您可以利用pytest和Selenium等框架来最大程度地减少测试自动化维护工作。通过将报告与自动浏览器测试相结合,可以使生成的测试结果更具洞察力。

<中心
在PyUnit中生成XML和HTML报告以进行测试自动化
</ center

8.实施云硒网格

在本地Selenium Grid上执行测试可能非常繁琐,因为它可能需要您管理和设置本地基础结构。 本地Selenium Grid会带来一些可伸缩性问题,因为您的本地基础架构可能无法涵盖所有​​主要的OS,浏览器及其不同版本。 因此,建议使用基于云的硒网格。 您可以利用LambdaTest 云Selenium Grid在您的浏览器矩阵上执行并行测试 。

使用云Selenium Grid,无需设置和维护虚拟机和浏览器。 通过使用LambaTest Selenium Grid,您可以在2000多种真实的浏览器及其不同版本上运行测试。 这不仅可以帮助您节省基础架构成本,还可以帮助您扩展测试工作,并留出充裕的时间专注于重要任务。

LambdaTest Selenium Grid入门。 您的前100个自动化测试分钟即将到来。 立即注册!

总结一下

现在,如果您认为这需要太多的努力,请相信我,这是值得的。 我们已经知道自动化测试有多么有益。 那么,为什么要让维护工作阻止您利用自动化测试的所有令人兴奋的优势呢? 您需要做的就是制定一个测试管理策略计划并坚持执行。 其余的将全部自动放置到位。

如果您喜欢本文,则可以单击响铃图标,以帮助我们在发布新博客时通知您。 另外,请随时在Twitter上转发我们,与您的朋友分享这篇文章。 测试愉快!

我是计算机科学学位的工程师,也是一名热情的作家。 我作为网络内容作家的职业归功于结合技术背景进行写作的诀窍。 我坚信利用我的技能来通过我的写作传播意识并简化人们的生活! 当我不忙于玩文字游戏时,我喜欢沉迷于阅读和上健身房等爱好。

翻译自: https://www.javacodegeeks.com/2020/05/the-perfect-way-to-maintain-your-selenium-test-automation.html

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

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

相关文章

双色球霸主网络问题_霸主–统治和管理API的地方

双色球霸主网络问题今天我们生活在一个越来越分散的世界中。 如今的计算机系统不再是在随机桌子下面的某些硬件上运行单个部门项目&#xff0c;而是大规模&#xff0c;集中甚至分散地运行。 监视和管理的需求从未改变&#xff0c;但是随着时间的推移变得越来越复杂。 如果将所有…

php验证码 php中文网,ThinkPHP 使用不同风格及中文的验证码

使用其他风格验证码在上文《ThinkPHP 验证码详解及实例》中了解了 ThinkPHP 验证码的具体用法&#xff0c;本文将进一步介绍如何使用不同风格的验证码以及使用中文验证码。上文例子使用的是默认参数&#xff0c;也就是生成 4 位的数字验证码。buildImageVerify 方法生成验证码时…

java 开发人员工具_Java开发人员应该知道的5种错误跟踪工具

java 开发人员工具随着Java生态系统的发展&#xff0c;可满足不断增长的请求和用户对高性能需求的Web应用程序成为了新型的现代开发工具。 具有快速新部署的快速节奏环境需要跟踪错误&#xff0c;并以传统方法无法维持的水平获得对应用程序行为的洞察力。 在本文中&#xff0c;…

Apache Camel 3.2 – Camel的无反射配置

在Apache Camel项目中&#xff0c;我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小&#xff0c;更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel&#xff0c;以使配置与应…

java jsoup解析_3使用Jsoup解析Java中HTML文件的示例

java jsoup解析HTML是Web的核心&#xff0c;无论您是通过JavaScript&#xff0c;JSP&#xff0c;PHP&#xff0c;ASP或任何其他Web技术动态生成的&#xff0c;您在Internet上看到的所有页面都是基于HTML的。 您的浏览器实际上是解析HTML并为您呈现它。 但是&#xff0c;如果需要…

【AI提示词艺术】第12期 摄影艺术构图处理和人像生成的技巧

摄影艺术构图 星空宇宙 关键词&#xff1a; 强烈的明暗对比,8k,精细的描述,相片纸,超高分辨率,无建筑的,大自然,星空&#xff0c;云朵&#xff0c;刺眼流星&#xff0c;群星&#xff0c;银河&#xff0c;仰视视角&#xff0c;广角镜头 以下是按照提示词类别整理的相关描述&a…

Kogito,ergo规则:从知识到服务,轻松自如

欢迎阅读有关Kogito倡议的博客系列的另一集&#xff0c;以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中&#xff0c;我们介绍了两种实现完整智能服务的新方法 &#xff1a; 独立的规则服务 集成智能工作流程和规则…

linux 读取内存颗粒,Linux虚拟内存地址转化成物理内存地址

背景现代手机这种SOC(system on chip)&#xff0c;因为功耗、Modem等功能soc上集成了很多core,他们还可以是独立的系统在运转。比如ADSP简介ADSP(Application Digital Signal Processing)就是高通的Hexagon DSP ,就是独立运转的一个coresystem。这样做不仅可以使用soc上的专用核…

primefaces_PrimeFaces扩展中的全新JSF组件

primefacesPrimeFaces扩展团队很高兴宣布即将推出的3.0.0主要版本的几个新组件。 我们的新提交者Francesco Strazzullo为该项目提供了“ Turbo Boost”&#xff0c;并带来了至少6个已成功集成的 JSF组件&#xff01; 当前的开发状态是OpenShift上的deployet – 请查看展示柜。以…

linux中memcpy实现分析,ARM64 的 memcpy 优化与实现

如何优化 memcpy 函数Linux 内核用到了许多方式来加强性能以及稳定性&#xff0c;本文探讨的 memcpy 的汇编实现方式就是其中的一种&#xff0c;memcpy 的性能是否强大&#xff0c;拷贝延迟是否足够低都直接影响着整个系统性能。通过对拷贝函数的理解可以加深对整个系统设计的一…

ejb生命周期_EJB 3.x:生命周期和并发模型(第2部分)

ejb生命周期这是两部分系列的第二篇。 第一部分介绍了有状态和无状态EJB的生命周期以及并发行为。 我将在本文中介绍Singleton EJB 。 Singleton模式可以说是最常用&#xff08;有时被滥用&#xff01;&#xff09;的模式。 单吨又爱它&#xff01; Java EE使我们无需编写显…

JDK 14 / JEP 305模式匹配“ Smart Casts”实例

我通常将Java代码中instanceof运算符的存在视为“ 红色标志 ”&#xff0c;这意味着在某些情况下使用instanceof不一定是错误的&#xff0c;但是使用它有时表示可以以一种更干净的方式解决设计问题&#xff0c;如所述本文末尾引用的一些资源中的内容&#xff08;包括有关Java以…

易流即时配送_即时大数据流处理=即时风暴

易流即时配送在Ubuntu背后的公司Canonical&#xff0c;每6个月进行一次技术工作&#xff0c;以第一手测试我们的工具并向其他人展示新想法。 这次&#xff0c;我创建了一个即时大数据解决方案&#xff0c;更具体地讲是“即时风暴”。 Storm现在是Apache基金会的一部分&#xf…

csp真题字符串匹配c语言,CCF CSP认证考试历年真题 模板生成系统 C语言实现

试题编号&#xff1a;201509-3试题名称&#xff1a;日期计算 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述&#xff1a;成成最近在搭建一个网站&#xff0c;其中一些页面的部分内容来自数据库中不同的数据记录&#xff0c;但是页面的基本结构是相同的。例如&…

osgi架构与linux_OSGi:进入微服务架构的门户

osgi架构与linux在构建可扩展&#xff0c;可靠的分布式系统的背景下&#xff0c;“模块化”和“微服务体系结构”这两个术语如今经常出现。 众所周知&#xff0c;Java平台本身在模块化方面很弱&#xff08; Java 9将通过交付Jigsaw项目来解决此问题&#xff09;&#xff0c;这为…

引入我们全新的YouTube频道进行视频课程编程

嘿&#xff0c;极客们&#xff0c; 收到社区的反馈并紧贴行业发展趋势&#xff0c;我们非常高兴宣布推出全新的Youtube频道 &#xff01; 在我们的频道上&#xff0c;我们将主持与Java编程有关的视频课程&#xff0c;但通常也会进行软件开发。 我们将介绍代码演练以及完整的…

田忌赛马c语言程序设计,还是杭电1052田忌赛马

已结贴√问题点数&#xff1a;20 回复次数&#xff1a;2还是杭电1052田忌赛马//昨天那个算法漏洞挺大&#xff0c;但我重新构思了&#xff0c;但运行到312ms还是wa了。我测试了许多数据&#xff0c;结果是对的&#xff0c;郁闷了&#xff0c;谁能救救我啊&#xff1f;#include&…

启动jboss_3种启动JBoss BPM流程的基本方法

启动jboss这一集提示和技巧将帮助您了解根据需要启动流程实例的最佳方法。 规划项目可能包括流程项目&#xff0c;但是您是否考虑过可以启动流程的各种方式&#xff1f; 也许您的JBoss BPM Suite在您的体系结构中本地运行&#xff0c;也许您在云中运行&#xff0c;但是无论它…

c语言中rand()%900,c语言 n=rand()%5是什么意思

rand()函数会产生范围为0至32767的随机数&#xff0c;% 让它与5求余&#xff0c;变成0至4的随机数&#xff0c;不过每次启动程序产生的随机数都相等&#xff0c;在用srand(unsigned int)输入种子数后产生的才不一样&#xff0c;一般都用的 srand((unsigned int)time(NULL)) 产生…

c语言malloc calloc,C语言内存管理:malloc、calloc、free的实现

任何一个对C稍稍有了解的人都知道malloc、calloc、free。前面两个是用户态在堆上分配一段连续(虚拟地址)的内存空间&#xff0c;然后可以通过free释放&#xff0c;但是&#xff0c;同时也会有很多人对其背后的实现机制不了解。这篇文章则是通过介绍这三个函数&#xff0c;并简单…