自动部署 管道 ci cd_自动化测试在CI CD管道中的作用

自动部署 管道 ci cd

业界广泛采用的软件开发实践:持续集成和持续部署可确保良好地交付产品并经常交付。 常规代码提交需要常规/连续测试,而如果忽略它,则可能导致非弹性基础结构。 如何交付坚固的CI CD管道? 对于许多公司来说,这是一个问题,除非他们寻求DevOps咨询。 即使您去了DevOps咨询公司,他们也很有可能不会对自动化工具,平台来帮助您实现工作流程自动化提出任何建议。

我个人认为,当我们想到CI / CD流程中的最佳实践时,自动化测试的好处通常会被忽略。 我认为,跳过CI CD管道中的自动化测试或放弃损坏的测试(永远不要重写)可能会明显威胁质量或交货速度。

当组织计划最大化(CI / CD)的价值时,测试的自动化非常重要。 这就是为什么我将与您讨论为什么没有自动化测试就无法拥有强大的CI / CD管道的原因。 我还将通过一个实时示例来帮助您了解为何CI CD管道必须进行自动化测试。

跳过自动化测试陷阱

在连续交付流程中忽略自动测试时,您是否可以评估陷阱?

尽管事实是,整个软件交付链都是敏捷的,但底切自动化测试将停止CD管道,从而从敏捷中获得核心价值。

开发团队将保持依赖状态,并且无法直观地更改框架,因为他们不知道测试团队是否会与改编兼容。

它阻止了软件交付的可伸缩性,因为软件测试无法扩展,而只能与连续交付链集成时才能扩展。

为什么手动测试无法满足CI CD管道的要求?

运行单元测试用例,基本代码质量,与安全性相关的测试,覆盖范围测试用例等,并在整个运营团队之间共享测试信息,这决定了使用测试驱动的基础结构。 虽然,您有时可能需要手动测试。 使用自动化测试是强大的CI / CD管道的事实上的标准,并且已被许多组织广泛采用。

与自动化一起,有时手动测试是明智而直接的。 但是,在CI CD管道中,开发人员必须处理少量的代码或更新集成,因此不会像在手动测试乏味中那样花很多时间。

通过分析技术方法的利弊,可以决定哪些测试应该自动化,哪些应该手动进行。 显然,重复和劳动密集型的任务应该推进自动化。 在自动化环境中进行的各种类型的测试是:

  • 单元和组件测试
  • API测试
  • 功能测试
  • 回归测试
  • 跨浏览器测试

单元测试Swift进行,导致集成测试,这将增加下一级别的复杂性。 之后进行系统范围的测试,最后进行验收测试(可能涉及某些级别的人机交互)。

区分测试和确定测试的优先级会比其他测试更快,这是有利的。

记住这一点,有必要将自动化测试合并到您的CI CD管道中。

CI CD管道中自动化测试的重要性

DevOps kick中的代码生成启动自动化。 当代码投入生产时,CI / CD管道中的测试解决方案以及其他工具集将实现自动化。 让我们考虑使CI CD管道中的自动化测试成为绝对必要的关键因素。

助力左移测试

CI CD管道以稳定的变更流和最小的延迟出现,从而确保了整体测试时间的缩短。 它通过左移测试帮助在SDLC上取得进展,该测试强调了在SDLC的需求收集阶段尽快发现错误的重要性。

左移测试方法表明,与在SDLC后期发现的错误相比,在SDLC早期发现的错误需要更少的成本和资源带宽。 有趣,不是吗? 阅读我们的博客, 了解左移测试如何帮助您提高产品质量 。

更快的DevOps意味着更快的CI CD管道,但是什么使它们更快?

如果您猜中了自动化测试,那么您猜对了! 将自动化测试集成到连续交付管道中是一个关键组成部分,如果没有此功能,则意味着事情将会落空,或者组织可能无法获得DevOps的全部好处。

自动化测试是确保与DevOps其余操作一样连续,可靠和敏捷的质量保证的方式。

如果开发团队意识到向CI / CD的过渡,它将暴露出在路径跟踪过程中不断出现的一些挑战; 并将通过自动化加强测试套件。

CI CD管道中的自动化测试是发布软件更新的有效举措

频繁的软件更新可能几乎无法处理连续交付管道中数量惊人的错误。 之所以能够成功,是因为测试团队需要持续而Swift的努力来解决这些问题。 它增加了有问题的代码污染构建的风险。 可能会影响代码的可读性和可维护性。

跳过自动测试可能会进一步导致生产延迟,并会定期间隔更新构建。 如果未通过自动化测试将DevOps标准化,则无法开发避免不规则和临时性的方法。

没有任何自动化过程的无计划和随机测试,或无计划的测试最终都无法简化软件交付过程。

版本控制,回滚和自动回归测试

CI / CD管道的最佳实践之一是将代码存储在中央存储库中,开发人员可以在该存储库中推送代码并提出对可用于功能实现或错误修复的最新代码的请求。 使用中央存储库,代码可以保持最新状态,并且所有用于标识版本差异的更改记录都可以使构建保持可维护的形式。

当开发人员遇到软件发行版的早期版本中没有意外解决的问题,或者准备或修复最新版本时,开发人员会提供一种体验。 弹出不必要的问题。

事实证明,最新版本与实际计划有所不同。 现在,保留有限时间的选项是回滚,而不是跟踪实际原因,而不是弄清楚实际出了什么问题? 因为这有时会更加恶化和耗时。

如果错误不断弹出,则会破坏理智,阻碍其连续性。 以及对应用程序质量的挑战。 回滚还可以将演示文稿,文档,流程图等带到幕后。 因此,版本控制系统为您提供了无缝的回滚功能,以节省时间,精力,并消除在生产或发布内部版本时可能出现的不受控制的情况。

为了充分利用所有CI CD管道,应该防止回滚,这可以通过全自动软件测试以及管道的其他精心设计的组件来实现。 因为即使您急于回滚以最大程度地减少对客户的用户体验,品牌声誉的损害,您也需要评估整个Web应用程序是否正常运行,然后再推动任何代码更改。 为此,CI CD管道中的自动化测试就像魔术一样工作。

还没说服? 让我们评估与自动跨浏览器测试相关示例场景。

什么是跨浏览器测试?

跨浏览器测试是通过不同的浏览器呈现网站以评估任何UI异常的过程。 它可以手动完成,也可以使用Selenium等开源框架自动完成。

当我们手动进行跨浏览器测试时,我们可能不得不根据目标受众,在数百种浏览器和操作系统组合上浏览并运行我们的网站。

现在,如果您的网站由于最近迁移的代码更改进入生产而向南移动,结果,您的网站的内容,版式,图像,图标,填充,公司徽标等看起来突然变化,那么可能会对您的业务造成破坏。 特别是,如果您的竞争对手注意到这一点。 他们可以截取屏幕截图并在您身上发布一个模因,很快就可以传播病毒。 为了摆脱这种危机,您很随意地进行了回滚。 但是接下来呢?

现在,您需要确保Web应用程序的运行状况与推送更改之前一样。 如果您开始通过手动跨浏览器测试进行评估,那么恐怕会非常麻烦且耗时。 但是,如果要将自动化测试合并到CI CD中,那么您所要做的就是运行一个已经配置并经过测试的跨浏览器测试套件。

使它变得更好的是基于云的跨浏览器测试平台,例如LambdaTest,它允许您使用在线Selenium Grid在2000多种浏览器和浏览器版本上测试您的网站。

前端网站

与CI CD管道中的自动化测试并行

并行运行多个测试用例的功能确实强大。 如果我们考虑我们之前的停机示例,则回滚和自动化测试可以使您感到轻松。 但是,如果测试是顺序进行的,则与并行测试相比,所花费的时间可能会明显更长。 使用Selenium进行并行测试可以将您的测试周期缩短十倍,从而可以在较短的时间内确保最大的测试覆盖率。

与CI CD管道的自动化测试并行进行是大规模执行大型测试脚本的关键和好处。 LambdaTest Selenium Grid为Selenium自动化脚本提供了并行测试。

专家提示:更多耗时的测试应等到轮到最后,因此请在代码进入生产之前使用它们。

维护临时测试环境或暂存环境

在状态最小的容器中使用短暂的测试环境可以防止可能滑入测试套件后续运行的副作用。 容器化测试环境是可移植的,开发人员可以在其中轻松复制配置,以供日后在CI CD管道中使用。 另外,轻松旋转容器并销毁它们也不会损害环境保真度。

与临时测试环境不同, 暂存环境应该是生产环境的持久且持久的副本。 过渡环境对于在将每个变更推送到实时Web应用程序之前对其进行测试至关重要。 但是,我们如何在不同的浏览器上本地测试网站?

CI CD管道对于将机会从一个登台环境迁移到另一个登台环境至关重要,并且还负责在签署后最终迁移到生产环境。 在CI CD管道中执行本地自动化测试可以帮助您减少中断,并提供无缝的UI和UX,因为您知道网站上线后的外观可能会很好。

开发和测试齐头并进

与开发团队集成时,IT运营部门可以构建DevOps。 尽管程序员向系统管理员广播了一条消息,以在生产环境中部署软件,并且类似地,持续的通信仍可带来更快的软件交付速度和最大的可视性。 但是,它无法消除自动化测试的作用。

自动化测试是DevOps的先决条件,否则,就无法优化软件交付,开发和运营团队才能通过该软件协同工作。

这意味着需要引入自动化测试以实现CI / CD的真正本质。 这进一步简化了开发团队和IT Ops团队之间的协调。

消除障碍

由于所有更改都将通过CI / CD系统传递,因此它将消除或减少有问题的资源。 在通过快速运行的测试验证了构建之后,应遵循复杂的运行测试。

分开进行测试可以有效地破坏大型测试的规模和复杂性,从而在大型产品中造成部署风险。 因此,建议使用较小的版本以快速发布该版本。

拆分这些测试后,将它们放入队列中,并使用针对CI CD管道的自动化测试并行运行它们,将有助于您采用可靠的机制,从而发现并消除微小的障碍。

更好的产品可见性和反馈

诸如单元或界面测试之类的自动化测试可在任何时间提供产品状态的更大可见性。 CI CD的测试自动化是一种检索开发人员反馈的方法,因此可以进行快速修复以始终在发布阶段管理构建。

通过CI CD管道中的自动化测试轻松重新配置

测试自动化意味着大多数重新配置可以自动启用。 随着新技术的到来或当需求可能在任何给定的时间改变时,对配置或框架进行调整的趋势使CI / CD管道变得更加强大。

CI / CD DevOps旅程最佳实践

您可以通过结合一系列实践来发现潜在的好处,这些实践将定义如何有效维护和实施CI / CD系统。

低值的缩减测试

在CI / CD中,全面的测试流程可确保在生产部署变更期间不会发生意外情况。

变化必须贯穿整个过程,因此可靠,快速的流程可以停止阻碍开发速度。

更好的主意是通过优化测试来扩展CI / CD基础结构。 另一方面,时间的流逝可以加强一些有关测试相对价值的关键决定。

通过减少一些低值的测试来过滤测试套件也是合乎逻辑的,这样可以提高频繁使用的管道的速度。

CI CD管道中通过自动化测试进行可靠的性能验证

由于复杂性,性能测试仍然超出范围,有时情况非常繁琐,只有手动测试才能推动事情发展。 然而,大多数时候,公司很少进行调整和更改方法来扩展自动化性能测试的范围。

在了解了性能测试和功能测试之间的区别之后,公司需要制定一个基于级别的测试计划,该计划确定用于自动性能测试的层。

贡献者和利益相关者了解性能测试的局限性,而当现实的理解允许行为方式发生变化时,积极的结果就会开始出现!

在自动化测试中,代码通过登台环境从测试移至生产。

在功能测试中,检查逻辑以确定通过还是失败。 与功能测试不同,性能测试有一个限制。 就运行时环境的细节而言,它特别敏感。

性能测试取决于必须始终合适的基础架构。

如果未提供运行时环境来支持测试的目的,这是相反的。 在性能测试中,执行时间很重要。 根据并行执行中的虚拟测试节点,时间可能会有所不同,并且确实会花费很多时间。

在CI / CD中等待较长时间是一个障碍,因为CI / CD都是要从开发环境快速移动代码。 因此,性能测试不能在CI / CD管道内进行,而是在代码移交给生产之前进行处理。

这意味着大规模性能测试已从CI / CD管道中移出。 而且,性能测试需要与生产环境相同的环境。

对于大多数CI / CD环境,支持像运行时环境这样的生产是不可行的。 这是昂贵的,并且公司采用基于云的测试服务来允许执行关键任务性能测试。

想知道更多吗? 您可以查看以下CI / CD管道的16个最佳实践以加快测试自动化

CI CD管道中的自动化测试仅与您的自动化工具一样好

持续集成是DevOps的基础技术,它将代码更新合并到代码存储库中,但是如果将来代码存储库或集成服务器进行转换,该怎么办。 当组织决定将Web应用程序更改为混合应用程序时,类似地,将发生许多开发更改,这些更改将需要各种各样的框架。 适应一种能够支持不断变化的需求并保持连续交付管道敏捷性的测试解决方案将变得不可避免。

CI / CD通过强大的工具进行扩展时,可以减少集成更改的时间,最小化集成过程中的错误,并提高项目速度。 存在大量工具,从免费,开源到商业都有。 它们都旨在支持不同的测试类型和技术。

您可以根据自己的经验,预算和要求做出决定。 继续查看计划选择的工具的优缺点,例如需要多少并发版本或需要多少时间来保留数据。

如果您正在寻找可以为CI CD提供自动化测试的Web测试解决方案,那么LambdaTest是您的首选平台。 它提供了可扩展的在线Selenium Grid,用于自动跨浏览器测试,以及与多个CI / CD工具 (如Jenkins,Travis CI,CircleCI等)的集成。

不仅如此,借助LambdaTest,您甚至可以使用Selenium在本地托管的网页或Web应用程序上执行自动跨浏览器测试。 另外,您可以并行执行多个测试脚本。 您还可以与JIRA,asana,Trello等项目管理工具集成,以便轻松记录错误并在同事之间进行更好的协作。

结论

通过采用CD CD流水线来招募开发人员或为其配备武装,您可以满足诸如敏捷,看板等现代SDLC方法的快速需求。CI CD流水线使您能够将代码更改从暂存环境实时推向生产环境。每月,每周甚至每天。 在复杂性和努力的基础上拆分测试始终是明智之举。 CI CD中的自动化测试将帮助您将代码更改从登台环境推向生产环境,并为回滚方案提供有组织的版本控制。 如果您运行的是详尽的测试套件,那么并行测试可以帮助您节省大量时间。 阿迪奥斯!

前端网站

翻译自: https://www.javacodegeeks.com/2019/06/role-automation-testing-pipeline.html

自动部署 管道 ci cd

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

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

相关文章

Maven的maven-install-plugin插件详解

文章目录将下载到本地的jar文件安装到Maven本地仓库中将当前项目安装到Maven本地仓库中参考maven-install-plugin 插件的作用:1.可以将当前项目安装到 Maven 本地仓库,供本地其它 Maven 项目使用 执行 mvn install 命令将当前项目安装到 Maven 本地仓库…

python字典_Python 字典

1、什么是 dict(字典)上一章节,我们学习了列表(List) 和 元组(tuple) 来表示有序集合。而我们在讲列表(list)的时候,我们用了列表(list) 来存储用户的姓名。name [一点水, 两点水, 三点水, 四点水, 五点水]那么如果我们为了方便联系这些童鞋&#xff0c…

hazelcast_Java:如何在不到5分钟的时间内通过Hazelcast提高生产力

hazelcast如果要使用Hazelcast内存数据网格(IMDG)来加快数据库应用程序的速度,但是要处理数百个表怎么办? 手动编码所有Java POJO和序列化支持将需要数周的工作,完成后,手动维护该域模型将很快成为一场噩梦…

Maven的maven-help-plugin插件详解

执行下面的命令查看指定插件的详细信息: [~/Documents/IdeaProjects/demo02]$ mvn help:describe -Dpluginorg.apache.maven.plugins:maven-site-plugin:3.9.0 -Ddetail上述命令执行的是 maven-help-plugin 的 describe 目标,在参数 plugin 中输入需要描…

android官方文档中文版_最全实至名归,NumPy 官方早有中文教程,结合深度学习,还有防脱发指南...

点击 机器学习算法与Python学习 ,选择加星标精彩内容不迷路本文转自机器之心在 Github 上一度蝉联最流行的机器学习和数据科学包 NumPy,已经有了非常之系统的中文文档,回想起当初细啃 NumPy 之时,不少人不得不徘徊于各大搜索引擎及…

tls jdk_使用JDK 13查看TLS配置

tls jdkJDK 13 Early Access Build 16现在可用,它带来的有趣的功能之一是能够使keytool命令行工具显示当前系统的TLS配置信息 。 这比尝试在单独的文档中查找受支持的TLS信息并将该信息与自己的JDK供应商和版本进行匹配要容易得多。 要查看JDK 13 Early Access Bui…

执行Plugins下的install:install报错:The packaging for this project did not assign a file to the build artif

文章目录导致错误的原因分析解决方法直接执行生命周期的某个阶段命令阶段和插件目标一起执行参考导致错误的原因分析 在 IDEA 中使用 Plugins 下的 install:install (或者在命令行下执行命令 mvn install:install),代表执行的是 install 插件…

javascript等待异步线程完成_前端:什么是单线程,同步,异步?彻底弄懂 JavaScript 执行机制...

javascript是按照语句出现的顺序执行的。js是一行一行执行的:let a 1;console.log(a);let b 2;console.log(b);然而实际上js是这样的:setTimeout(function(){ console.log(定时器开始啦)});new Promise(function(resolve){ console.log(马上执行for循环…

react回调_回调地狱和React模式

react回调我可以更好地了解a的用途的一种方式 基于React流的方法是它简化了无阻塞IO调用的方式。 这篇文章将快速讲解进行同步远程调用所涉及的那种代码,然后说明如何在非阻塞IO中分层,尽管在资源(尤其是线程)的使用方面非常高效…

Maven插件列表_Maven插件查询_Maven插件查看

Maven 官方插件列表:https://maven.apache.org/plugins/index.html。 Maven 官方插件下载地址:https://repo1.maven.org/maven2/org/apache/maven/plugins/

jsp循环输出表格_「翻译」JS可视化学习之七:Promise、事件循环和异步2

喜欢排队吧,它能保护你的时间和精力 - 排队纪律维护员Event LoopPromise和事件循环概览图请注意上面这张图,Promise和事件循环的那些事,将在这个图上缓缓展开。微任务和(宏)任务好了,(经过上一节对Promise的理解)现在我们对如何创…

azure api 管理_具有Azure功能的无服务器API

azure api 管理在这篇文章中,我将研究一个非常简单的用例。 在执行部署管道时, FlexDeploy可能会产生一些应被批准或拒绝的人工任务。 例如,某人必须批准对生产环境的部署。 可以在FlexDeploy UI中或通过某些外部通信渠道来完成。 今天&#…

Maven插件目标

插件就是打成 jar 包的 Java 类,目标其实就是指方法,代表一种功能,也就是代表执行一种任务,你可以指定具体的任务,不过目标也有自己默认的任务。

android 渐变圆形进度条_flutter好用的轮子推荐七-flutter圆形或线型进度条

前言Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。IT界著名的尼古拉斯高尔包曾说:轮子是IT进步的阶梯!热门的框架千篇一律,好用轮子万里挑一!Flutter作为这两年开始崛起的跨平台开发…

jakarta ee_Jakarta EE中的规范范围

jakarta ee使用Eclipse Foundation Specification Process (EFSP),一个开放源代码规范项目就有一个专门的提交者项目团队来创建和维护一个或多个规范。 创建和维护的周期跨越了该规范的多个版本,因此尽管各个成员可能来去去去&…

苹果雪豹操作系统正式版_Android 11 正式版发布!

整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)头图 | CSDN 下载自谷歌官网Android 11今天正式发布了!新版本主要加强了聊天气泡、安全隐私、电源菜单,以及对瀑布屏、折叠屏、双屏的支持。除了谷歌自家的Pixel 手机,一加、小米、OPPO、Realme的手机用…

Maven的单元测试没有执行的问题

今天使用 Maven 的单元测试,正常导入以下的类 org.junit.Assert; org.junit.After; org.junit.Before; org.junit.Test;在项目的根目录下执行 mvn test,结果并没有执行单元测试,也是无语了。普通的 Java 项目可以正常运行,但是 M…

lambda表达式优化反射_反射选择器表达式

lambda表达式优化反射Java :: Geci是一个在单元测试期间运行的代码生成器。 如果生成的代码适合源代码的实际版本,则测试不会失败。 如果需要进行任何修改,则测试将修改源代码并失败。 例如,存在一个需要setter和getter的新字段,然…

10个常用python标准库_【循序渐进学Python】11.常用标准库

安装完Python之后,我们也同时获得了强大的Python标准库,通过使用这些标准库可以为我们节省大量的时间。这里是一些常用标准库的简单说明。更多的标准库的说明,可以参考Python文档 sys 模块 sys模块能够访问与Python解释器紧密联系的变量和函数…