为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?

您是否认为仅仅是因为您的Web应用程序在过渡环境中以鲜艳的色彩通过了,您的生产环境也将是相同的吗? 您可能需要重新考虑!
特别是,如果我们指的是跨浏览器测试 ,则需要确保跨各种操作系统,运行在不同操作系统上的各种浏览器,浏览器版本无缝呈现Web应用程序。 毕竟,在您实际进行生产测试之前,您可能永远都不知道客户会面临哪些错误,对吗?

但是,说起来容易做起来难。 作为敏捷测试人员,您每两个月,每周甚至每天都会收到新的测试要求。 如果您仅专注于生产中的测试,那么谁将负责舞台环境中的测试? 这就是为什么要求您在生产环境中以及过渡环境中进行测试的原因。 从经验中,我知道如果手动完成,这可能是一个艰苦而艰巨的旅程。 幸运的是,我们拥有Selenium测试自动化来支持我们。 怎么样?

这正是我将在今天的文章中讨论的内容。 本文将帮助您了解为什么生产中的硒测试自动化对于您的下一个版本至关重要!

那么,什么是生产测试(TiP)?

如果您刚刚开始测试人员的旅程,那么很有可能您可能不知道SDLC(软件开发生命周期),并且可能会对生产是什么感到好奇。 我们在生产中要测试什么?

嗯,每个Web应用程序都在不同的环境中克隆。 一种用于开发人员,一种用于测试人员,另一种用于您的客户。 与客户进行交互的Web应用程序称为生产环境,而其他应用程序称为暂存环境。 因此,每当新的增强功能进入发布周期时,便会首先将其部署在属于开发人员的阶段环境中,以便他们可以对更改进行单元测试。 确认更改后,将更改推送到测试人员所属的登台环境中,他们可以在其中执行详细的集成和回归测试以验证代码更改。 一旦测试团队通过了签字,这些更改就会在生产环境中排队,客户可以在其中使用添加到Web应用程序中的最新功能。

尽管测试团队在登台环境中进行了详细的测试,但是一旦将更改推送到生产环境中,他们就应该执行另一轮详细的测试,以确保不会妨碍客户的用户体验。 最后一轮测试称为生产测试。

我们在生产中要测试什么?

几乎所有事物。 除了在登台环境中经过验证的测试脚本之外,生产中的测试还包括所有在生产环境之前无法识别或预测的测试用例。

但是您已经在舞台上进行了测试,那么为什么要在生产中进行测试?

您可以根据需要编写任意数量的案例,但这不足以复制实时生产环境。 重现客户数据或预测其行为并不容易。 别忘了,您的登台环境可能不会像生产环境那样暴露于实时流量中。 同样,如果您的暂存环境不是您产品的精确克隆(在大多数情况下是正确的!),那么很有可能在上线时可能错过跨浏览器不兼容CSS属性,或更糟糕的是,其中。

登台环境对您的组织失败的13个原因

这就是为什么在每个发布周期中都必须在生产环境中进行跨浏览器测试的原因。 但是,如果不是单调的话,要在数百种浏览器和操作系统上测试Web应用程序肯定会很累。 很多时候,由于有紧急中断的夜间修复程序和时间不足,您甚至可能最终在第11小时执行浏览器兼容性测试 ,因此,您可能最终只进行了冒烟测试而不是回归测试。 好吧,如果真是这样,您几乎可以期待浏览器错误将以您的方式出现。

让我们以实时场景来更好地理解这一点。 您的DevOps团队已准备好将最新的代码更改部署到Web应用程序中的管道。 在最终将其投入生产环境之前,您需要在多个登台环境中对其进行测试。 在分阶段进行测试时,您可以在所有主要的浏览器上进行测试,例如,去年推出了所有最新版本的Google Chrome,Mozilla Firefox和其他浏览器。 您进行了快速的烟雾测试,一切似乎都正常。 您的Web应用程序上线了,您可以坐下来放松身心,以为一切都已完成并完成。 这样日子就过去了!

您是否发现上述情况出了什么问题? 您猜对了! 您显然错过了旧版本的浏览器,现在旧版本的所有用户可能都疯了。 他们离开了您的Web应用程序,停机的数量猛增。

无需惊慌,我们已为您服务! (我们将成为您的Luke Skywalker的Yoda)

要解决此问题,您需要确保您已经准备好在零停机时间内在我们的在线Selenium Grid上执行Selenium测试自动化套件。 使用在线Selenium Grid在生产中执行自动浏览器测试可以帮助您清除维护内部Selenium Grid所花费的主要时间障碍,并跨不同的操作系统/设备/浏览器分别测试Web应用程序的功能。 这可以帮助您确保在生产中验证产品的跨浏览器兼容性。

长话短说,您不能忽视生产中的硒测试自动化。 话虽如此,让我们看一下硒测试自动化在生产中的优势。

硒测试自动化在生产中的优势

到目前为止,我们知道必须在生产中测试Web应用程序。 但是我们需要自动化吗? Selenium测试自动化的好处是什么,让我们看看。

日常监控

借助Selenium测试自动化的便利,不仅可以轻松测试您的Web应用程序,而且可以每天监控这些测试的结果,这变得相当容易。 LambdaTest提供了一个直观的仪表板,可帮助您通过我们的在线Selenium Grid分析Selenium测试自动化套件执行的结果。 您可以查看所有时间戳记以及各种日志,以帮助您快速调试Selenium测试脚本遇到的任何问题。

查找关键案例以确保可靠的用户体验

硒测试自动化可以帮助您发现生产中的错误,然后才能影响任何访客或客户的用户体验。 由于复制实时用户案例场景和用户数据非常困难,因此在生产中进行测试有助于识别否则无法识别的独特测试案例。

在高峰时间安排硒测试自动化

生产环境中的硒测试自动化可以帮助您在Web应用程序的高峰时段安排全面的自动浏览器测试。 从而始终确保质量。

减轻回归测试的工作量

硒测试自动化可以帮助您消除回归测试周期中的麻烦。 这样,每次将新代码提交给您的产品时,您所需要做的就是运行Selenium测试脚本,所有内容将自动在不同的浏览器中进行验证。 那还不是全部! 利用Selenium测试自动化还可以使您更快地执行Beta程序,因此您可以立即获得有关新推出的功能和用户体验的反馈。

利用硒网格加快上市进程

与Selenium WebDriver不同,Selenium Grid可以帮助您并行执行测试自动化。 这对于大型和小型公司都至关重要。 每个发布周期都会为您的Web应用程序添加一些新内容,这意味着将有更多测试用例可以自动化。 最终,如果您依靠Selenium测试脚本执行顺序测试执行,您将遇到麻烦。 通过利用Selenium Grid,您可以并行运行任意数量的测试用例,这可以大大减少测试周期的执行量,从而加快上市速度。

如果在生产中进行测试很酷,那我们为什么还要犹豫呢?

现实情况是,在许多公司中,测试团队经常会在生产中犹豫甚至忽略测试。 其背后可能有多种原因。 一个是敏捷测试仪的寿命很苛刻,每周或每月他们的测试需求只会越来越大。 另一个原因是分阶段环境下的测试周期导致的消耗。 在测试了庞大的测试套件之后,在生产环境中测试相同的东西变得令人沮丧。 以及测试清单中的所有新内容。 因此,测试人员认为,如果可能出现重大问题,则以某种方式进行一次烟雾测试会更好,然后客户会以任何方式举报。

在生产中执行测试的策略

现在,我们已经完成了在生产中进行测试的重点。 接下来的问题是关于实现的问题!! 如何开始在生产中进行硒测试? 我可以使用哪种策略? 让我们进一步探讨在生产中执行测试的策略或方法。

蓝绿色部署

在这种策略中,部署是在彼此相同的蓝色和绿色两个相似的生产环境中完成的。 在任何时候,只有一个环境处于活动状态,可以为所有生产提供服务。 在这种情况下,蓝色将获得所有生产流量,而绿色(蓝色的克隆)将保持闲置状态。 所有测试均在空闲状态(即绿色)下进行,一旦测试以绿色完成,所有流量便路由到该位置,并成为新产品。

金丝雀测试

在金丝雀测试中,新功能仅向一小部分最终用户推出。 当确保Web应用程序在目标组中运行良好时,更改将被汇总到完整的流量中。

A / B测试

在A / B测试中,您向最终用户推出了两个不同版本的Web应用程序。 一个版本可以是旧版本,另一个版本可以是新推出的功能。 然后,在保留性能更好的版本的基础上,进一步分析哪个版本性能更好。

自动回滚策略

在此策略中,只要发现故障,就可以将Web应用程序返回到先前的稳定版本,而您仍处于监视阶段。 正确实施后,回滚可以帮助您实现以前的稳定应用状态,但是实施不当会导致数据丢失。

生产中硒测试自动化的最佳实践

我知道您现在已经准备好使用加速器了,迫不及待想为您的生产环境编写Selenium测试自动化套件。 但是,作为生产环境中Selenium测试自动化的最佳实践,您需要注意一些提示。

查找正确的硒测试工具

选择正确的Selenium测试工具在成功实施测试策略中起着举足轻重的作用,从而使其成功或失败。 正确的测试工具以及有效的DevOps流程可以确保从开发到生产的每个阶段都能平稳运行。 召集所有利益相关者并向他们解释生产测试的必要性将至关重要。 诸如LambdaTest之类的Selenium测试工具不仅可以帮助您在超过2000种真实的浏览器上测试Web应用程序。 它还有助于与众多用于CI / CD,项目管理,即时消息传递,无代码自动化等的第三方工具集成。

建立监控流程

仅仅因为您已经部署了自动化策略,并不意味着您就可以坐下来放松一下。 即使正确实施了策略和测试方法,也总是会遗漏一些错误。 您需要持续监控生产中的测试结果。

密切关注您的Web应用程序如何响应高流量以及服务器和数据库性能。 对应用程序的有效监视可以使您对产品有更深入的了解,并有助于识别和缓解不时出现的任何重大错误和问题。

确保主动警报机制

万一生产环境中出现问题,请确保在Selenium测试自动化过程中配置了通知或警报系统。 利用詹金斯(Jenkins)等CI / CD工具,该工具可以在发现问题后立即提醒合适的人员,您可以尽快找到并解决问题。 如果没有这种自动化,错误和缺陷可能会不被注意并妨碍您的用户体验。

使用功能标记

通过使用功能标志,可以使用if / then语句包装功能。 通过隔离功能在系统上的效果,您可以独立于部署打开/关闭功能,从而使您可以更好地控制功能。 这将功能推出与代码部署分开。

一旦使用功能部件标志部署了新代码,就可以在实时环境中根据需要对功能部件进行测试。 这使您可以更好地控制该功能及其对代码的影响。

合并POM(页面对象模型)

页面对象模型通常忽略了它,这对于生产中的硒测试自动化是必需的。 您需要使用页面对象模型,以便将所有UI元素定位器存储在一个位置,这使WebDriver更容易利用Selenium定位器 。

为BDD合并小黄瓜

测试人员常常忽略诸如Gherkin之类的语言解析器,因为他们认为单独编写逻辑比编写代码要简单得多。 但是,这对于过程中涉及的非编程涉众可能非常有帮助。 他们可以评估Selenium测试自动化脚本如何影响整体系统验证。

始终有执行版本回滚的选项

确保通过更好的稳定性和恢复测试防止任何重大问题。 确保Web应用程序可以从不确定的事件中恢复,而不会丢失任何重要功能和关键数据。 如果任何新推出的功能会影响旧功能,则需要确保可以有效地将其回滚而不会丢失数据。

总而言之

生产中测试的主要议程是确保Web应用程序在实时环境中稳定。 为了避免中断,您需要使测试脚本自动化,以确保在所有最新的和旧版浏览器中都对Web应用程序进行了尝试和测试。 硒网格是实现此目标的好方法。 使用Selenium Grid,您可以跨所有浏览器自动执行测试脚本。 它不仅可以帮助您自动化重复的测试用例,还可以帮助我们并行执行它们。 最终,减少测试周期内的总体时间消耗。 万一发生故障,请确保您可以选择回滚到Web应用程序的先前部署版本。 祝您测试愉快! 🙂

翻译自: https://www.javacodegeeks.com/2020/03/why-selenium-automation-testing-in-production-is-pivotal-for-your-next-release.html

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

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

相关文章

手机usb共享计算机网络连接,如何将手机wifi网络通过USB共享给电脑?小编教你共享方法...

曾经就有过这样的情况,家里突然断网了,这时又需要打开电脑接收文件,或是需要在线编辑公众号的文章,着急得很,这时电脑没有网络怎么办呢?能不能使用手机的流量,来让电脑连网呢?有时候…

为全局变量赋值_实例分析如何远离漫天飞舞的全局变量

前篇《由static来谈谈模块封装》基本实现了对外隐藏属性,隐藏局部模块函数,开放接口的功能。对于这个话题还有些点没有深入探讨:为什么要这样做?以及这样做的好处。或许很多刚刚开始用C或者其他面向对象编程语言(比如C)的小伙伴们…

数据库班级字段怎么定义名称_班级名称

数据库班级字段怎么定义名称在Java中,每个类都有一个名称。 类位于包中,这使我们程序员可以一起工作,避免名称冲突。 我可以命名我的班级A ,也可以命名您的班级A ,只要它们位于不同的程序包中,它们可以很好…

计算机指令取决,不同的计算机,其指令不同,这主要取决于什么?

不同的计算机,其指令系统也不同,这主要取决于所用的CPU。1、CPU指中央处理器,是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。2、程…

python内存管理方法_Python 内存管理大揭秘

前言语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。对象的内存使用…

Kubernetes集群上的Apache Ignite和Spring第1部分:Spring Boot应用程序

在之前的一系列博客中,我们在Kubernetes集群上启动了一个Ignite集群。 在本教程中,我们将使用先前在Spring Boot Application上创建的Ignite集群。 让我们使用Spring Boot创建我们的项目。 Spring Boot应用程序将连接到Ignite集群。 让我们添加依赖项…

计算机VB整除,【原创】VB中的整除运算和转换函数

前言&#xff1a;【关于四舍五入】——实际上是相对小数部分<0.5 舍&#xff1b;0.5 看整数部分&#xff0c;若为奇数则进&#xff0c;若为偶数则舍&#xff1b;>0.5 进整除运算“\”作用&#xff1a;用于对两个数进行除法运算并返回一个整数例如&#xff1a;18\53 …

栈空间_Linux中的进程栈和线程栈

1. 进程栈进程栈是属于用户态栈&#xff0c;和进程虚拟地址空间 (Virtual Address Space) 密切相关。那我们先了解下什么是虚拟地址空间&#xff1a;在 32 位机器下&#xff0c;虚拟地址空间大小为 4G。这些虚拟地址通过页表 (Page Table) 映射到物理内存&#xff0c;页表由操作…

mockito_Mockito 101

mockitoMockito是一个模拟框架&#xff0c;可让您使用简洁的API编写漂亮的测试。 它偏向于最小的规格&#xff0c;使不同的行为看起来有所不同&#xff0c;并显示清晰的错误消息。 创造嘲弄 要使用Mockito创建模拟&#xff0c;只需使用Mock注释模拟&#xff0c;然后调用Mockit…

csgo显示服务器失败,csgo服务器失败

csgo服务器失败 内容精选换一换您可以通过“应用管理”页面的应用列表&#xff0c;快速查看应用状态&#xff0c;及相关异常信息&#xff0c;如图1所示。包括&#xff1a;应用状态&#xff1a;即图1中的①应用异常信息&#xff1a;即图1中的②云服务器异常信息&#xff1a;即图…

mysql多表成绩查询_MySQL多表数据记录查询(一)

1&#xff0e;交叉连接SQL语句的语法结构如下&#xff1a;select * from表1 cross join 表2;或Select * from表1&#xff0c;表2;2.内连接SQL语句有两种表示形式&#xff1a;使用inner join 语法结构如下&#xff1a;Select表达式1&#xff0c;表达式2&#xff0c;...&#xff…

DMN中的函数式编程:感觉就像再次重读我的大学课程一样

在本文中&#xff0c;我想分享有关DMN中的递归支持的有趣见解&#xff0c;并重点介绍FEEL语言的特定属性如何使功能编程结构能够在DMN中建模。 我们将从一个基本的示例开始&#xff0c;以演示FEEL语言和DMN构造的“商业友好”性质如何使我们能够解决一个通常不愉快的问题&…

手游极品飞车无限狂飙链接服务器失败,极品飞车无极限无法联网是什么原因 联网失败原因分析及解决方法...

有些玩家对于极品飞车无极限游戏中无法联网的问题而困扰&#xff0c;应该怎么解决呢&#xff1f;下面42824小小编就把方法分享给大家&#xff01;一、极品飞车无极限游戏无法联网原因及解决方法1、网络连接不稳定推荐在wifi的情况下进行游戏&#xff0c;如果是3G网的话很容易会…

mysql索引命名规范_mysql使用规范-索引规范

(1)单张表中索引数量不超过5个。(2)单个索引中的字段数不超过5个。(3)索引名必须全部使用小写。(4)非唯一索引按照“idx_字段名称[_字段名称]”进用行命名。例如idx_age_name。(5)唯一索引按照“uniq_字段名称[_字段名称]”进用行命名。例如uniq_age_name。(6)组合索引建议包含…

junit规则_jUnit:规则

junit规则规则在测试&#xff0c;测试用例或测试套件周围增加了特殊处理。 他们可以对该类中的所有测试执行通用的其他验证&#xff0c;并发运行多个测试实例&#xff0c;在每个测试或测试用例之前设置资源&#xff0c;然后在之后拆除它们。 该规则可以完全控制将要应用到的测…

mysql中创建唯一索引的关键字_mysql中唯一索引的关键字是什么

mysql中唯一索引的关键字是unique index。创建唯一索引可以避免数据出现重复。唯一索引可以有多个&#xff0c;但索引列的值必须唯一&#xff0c;索引列的值允许有空值。创建唯一索引可以使用关键字UNIQUE随表一同创建。mysql中唯一索引的关键字是unique index。(推荐教程&…

奇迹觉醒qq服务器比微信少,十年内最大的奇迹!功能比QQ还少的微信为什么能成功?...

今天&#xff0c;微信迎来了自己2021年的第一次「翻车」——2021年1月18日下午2点前后&#xff0c;「由于系统抖动原因」部分微信用户无法及时收取微信消息。截止下午3点19分&#xff0c;故障已被修复。其实微信曾面临过几次信息服务中断的事故&#xff1a;2013年&#xff0c;微…

从fork-join /线程池调用的Singelton bean中的访问spring请求范围缓存

问题&#xff1a; 启用了Spring且将范围设置为Request的缓存需要由不在请求范围内的singleton bean访问。 解&#xff1a; Spring使您能够创建缓存&#xff0c;该缓存为请求范围保留数据。 例如 import org.springframework.cache.concurrent.ConcurrentMapCache; import org…

linux终止mysql进程_Ubuntu Linux下定时监测MySQL进程终止时自动重启的方法

前言最近发现MySQL服务隔三差五就会挂掉&#xff0c;导致我的网站和爬虫都无法正常运作。自己的网站是基于MySQL&#xff0c;在做爬虫存取一些资料的时候也是基于MySQL&#xff0c;数据量一大了&#xff0c;MySQL它就有点受不了了&#xff0c;时不时会崩掉&#xff0c;虽然我自…

系统错误null是什么意思_为什么NULL是错误的?

系统错误null是什么意思Java中NULL用法的简单示例&#xff1a; public Employee getByName(String name) {int id database.find(name);if (id 0) {return null;}return new Employee(id); }这种方法有什么问题&#xff1f; 它可能返回NULL而不是对象-这是错误的。 在面向对…