业界广泛采用的软件开发实践:持续集成和持续部署可确保良好地交付产品并经常交付。 常规代码提交需要常规/连续测试,而如果忽略它,则可能导致基础架构无法恢复。 如何交付坚固的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方法的快速需求。CICD流水线使您能够将代码更改从暂存环境实时推向生产环境。每月,每周,甚至每天。 在复杂性和努力的基础上拆分测试始终是明智之举。 CI CD中的自动化测试将帮助您将代码更改从登台环境推向生产环境,并为回滚方案提供有组织的版本控制。 如果您运行的是详尽的测试套件,那么并行测试可以帮助您节省大量时间。 阿迪奥斯!
翻译自: https://www.javacodegeeks.com/2019/06/role-automation-testing-pipeline.html