selenium自动化测试_维持Selenium测试自动化的完美方法

selenium自动化测试

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

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

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

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

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

  • 测试失败时

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

  • LifeLine工具依赖关系的变化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

自动化测试工具需要维护。 如果您无法满足与维护相关的要求,则可能会增加您的费用。 这里有一些减少自动浏览器测试维护的最佳实践。

1.保持自动化设计简单而又具有战略意义

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7.自动化测试报告

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

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

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

8.实施云Selenium网格

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

selenium自动化测试

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

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

相关文章

单例模式的优与劣

转载自 大话设计模式(四)单例模式的优与劣前言首先来明确一个问题&#xff0c;那就是在某些情况下&#xff0c;有些对象&#xff0c;我们只需要一个就可以了&#xff0c;比如&#xff0c;一台计算机上可以连好几个打印机&#xff0c;但是这个计算机上的打印程序只能有一个&…

MySQL存储过程+游标+触发器

【0】README0.1&#xff09;本文旨在 arrange mysql 存储过程及如何在存储中使用游标 的相关知识&#xff1b;0.2&#xff09;delimieter的用法&#xff1a;参见 http://blog.csdn.net/pacosonswjtu/article/details/51407756&#xff1b;【1】存储过程基础1&#xff09;intro…

java迭代器退出迭代_使用Java迭代器修改数据时要小心

java迭代器退出迭代随着本学期的结束&#xff0c;我想我会分享一个关于如何非常熟悉Java迭代器的小故事。 现实世界语境 就上下文而言&#xff0c;我开设了第二年软件组件课程&#xff0c;这是尝试进入该专业的学生的最后障碍。 当然&#xff0c;这门课程对学生来说压力很大&a…

pojo 带参构造函数_带有Java Pojo作为输入输出示例的AWS Lambda函数

pojo 带参构造函数在上一个教程中&#xff0c;我们看到了如何使用Java创建AWS Lambda函数&#xff0c;我们传递了String作为输入&#xff0c;还返回了String作为Output。如果您是第一次创建lambda函数&#xff0c;我建议先阅读该教程。 在本教程中&#xff0c;我们将看到如何传…

MySQL检索数据(过滤+通配符+正则表达式)

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review “MySQL的基础知识”&#xff1b;【1】检索数据1&#xff09;检索单个列&#xff1a;select a_name from table_name;2&#xff09;检索多个列&#xff1a;select a_name,b_name from…

创建者模式

转载自 设计模式之创建者模式创建者模式又叫建造者模式&#xff0c;是将一个复杂的对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程&#xff0c;它把复杂对象的创建过程加以抽象&#xff0c;通过子类继承或者重…

buildpack_使用Buildpack容器化Spring Boot应用程序

buildpack在本文中&#xff0c;我们将看到如何使用Buildpacks容器化Spring Boot应用程序。 在先前的一篇文章中&#xff0c;我讨论了Jib 。 Jib允许我们在不使用Dockerfile的情况下将任何Java应用程序构建为Docker映像。 现在&#xff0c;从Spring Boot 2.3开始&#xff0c;我们…

MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL创建字段数据处理函数汇总数据&#xff08;聚集函数&#xff09;分组数据” 的基础知识&#xff1b;【1】创建计算字段1&#xff09;problemsolution1.1&#xff09;problem&am…

apache.camel_Apache Camel 3.2 – Camel的无反射配置

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

MySQL数据检索+查询+全文本搜索

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL数据检索查询全文本搜索” 的基础知识&#xff1b;【1】使用子查询1&#xff09;查询定义&#xff1a;任何sql 语句都是查询。但此术语一般指 select语句&#xff1b;SQL 还允许…

selenium自动化测试_49自动化测试中最常见的Selenium异常

selenium自动化测试开发人员将始终在编写代码时牢记不同的场景&#xff0c;但是在某些情况下&#xff0c;实现可能无法按预期工作。 相同的原则也适用于测试代码&#xff0c;该代码主要用于测试现有产品的功能&#xff0c;发现bug并确保产品100&#xff05;不受bug影响。 正确…

MySQL的CRUD操作+使用视图

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL数据检索查询全文本搜索” 的基础知识&#xff1b;【1】插入数据1&#xff09;insert是用来插入&#xff08;或添加&#xff09;行到数据库表的。插入可以用以下几种方式使用&a…

mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)

mega x通过超过62个小时的培训来掌握最流行的编程语言&#xff0c;从而树立信誉良好的开发人员职业 嘿&#xff0c;怪胎&#xff0c; 这一周&#xff0c;我们JCG促销专区 &#xff0c;我们有另一个极端的报价 。我们正在提供一个巨大的96&#xff05;off的完整2020 Python编程…

tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析

【0】README0.0&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(11)StandardWrapper源码剖析” 的基础知识&#xff1b;0.1&#xff09;StandardWrapper 是 Catalina中对Wrapper接口的标准实现&#xff1b;要知道&#xff0c;tomcat 中有…

lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换

lambda表达式语法从Java 14开始&#xff0c; switch表达式具有其他Lambda式 &#xff08; case ... -> labels &#xff09;语法&#xff0c;它不仅可以用作语句&#xff0c;还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法&#xff0c;如果标签匹配&#xff0…

装饰器模式(讲解+应用)

转载自 设计模式&#xff08;5&#xff09;装饰器模式&#xff08;讲解应用&#xff09;目录 装饰器模式为什么使用装饰器模式应用实例 装饰器模式 看到装饰器是在看《Thinking in Java》一书的时候&#xff0c;看到文件读写那边的时候&#xff0c;有提到装饰器模式&#xff0c…

quarkus_使用Quarkus调试容器中的系统测试(视频)

quarkus如果您能够借助容器在本地进行端到端测试应用程序&#xff0c;则可以提高开发效率。 在下面的视频中&#xff0c;我将展示如何使用Quarkus在Docker容器中调试本地系统测试。 这是我关于有效测试的视频课程的Quarkus扩展。 要全面了解&#xff0c;还可以查看以下资源&a…

MySQL事务管理+安全管理+MySQL数据类型

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL事务管理安全管理MySQL数据类型” 的基础知识&#xff1b;【1】管理事务处理【1.1】事务处理1&#xff09;并非所有引擎都支持事务管理&#xff0c;MyISAM 不支持&#xff0c;而…

超音速 启动_从根本上讲超音速亚原子Enterprise Java

超音速 启动我创建了一个视频&#xff0c;其中我用Quarkus解释了“超音速亚原子Java”&#xff0c;这是现代Java应用程序的运行时。 无论您是刚开始涉足Enterprise Java领域&#xff0c;还是已经是一位经验丰富的Java EE / J2EE开发人员&#xff0c;本课程都将指导您如何在2020…

利用java求积分(定积分和无穷限积分)

【0】README0.1&#xff09;本文部分文字描述转自或译自 https://en.wikipedia.org/wiki/Simpson%27s_rule和 https://en.wikipedia.org/wiki/Numerical_integration#Methods_for_one-dimensional_integrals&#xff1b;旨在利用java求积分&#xff1b;&#xff08;定积分和无穷…