如何实施DevOps的持续测试策略

192 阅读14分钟

如何实施DevOps的持续测试策略

发布者::Sarafadeen_Ibrahim Ayomide inDevOps June 11th, 2022 0 Views

让我们描绘一个场景。你正在穿越一个饱受战争蹂躏的国家的公路旅行,每隔一公里就有一个检查站。你的行李在检查站被严格检查,以确认你没有携带可能危及该地区稳定的物品。你和其他人一样,认识到这对安全的重要性。

让我们描绘另一个场景。你在一个类似的战乱地区,任何人都可以进入--没有检查站,没有搜查,没有边境管制,也没有监视--只有自由进入。

你认为这两个场景中哪一个会在未来更安全?是方案一,你的猜测是不错的。为什么?由于战略检查,安全和稳定在今天和未来都得到了维护。

具有持续测试策略的DevOps管道被描述为场景一,而没有持续测试策略的管道被描述为场景二。

在这篇关于DevOps持续测试的博客中,我不仅会描述什么是持续测试策略以及为什么它是必要的。我还将引导你通过创建一个有效的持续测试策略的步骤,这将有助于保证你的软件包的长期稳定性。

什么是持续测试?

持续测试经常被误解为需要每天或每批代码的测试,这是不正确的。相反,持续测试,通常被称为增量测试,是在软件开发生命周期(SDLC)的每个阶段测试软件的过程。

#DevOps中,持续测试与其说是不断测试,不如说是在事件的连续性中进行测试(代码签入、依赖性更新、基础设施变化......)。

- 🌤️livier Jacques (@ojacques2)January 13, 2021

开发人员在编码阶段从一个阶段到下一个阶段--从下载代码的依赖性到将代码版本化为可生产的软件。因此,持续测试确保每一步都没有错误,并为发布做好准备。持续测试策略是一个确保有效部署持续测试的计划。

持续测试的使用跨越了不同的领域,电子商务就是其中之一。总的来说,持续测试增强了数字信心,有助于获得竞争优势。此外,良好的消费者体验可以提高数字信心。根据最近的一项调查,65%的客户认为,他们在网站或网络应用程序上的数字体验对推荐一个品牌至关重要。

持续测试在DevOps中的重要性

软件开发的DevOps方法与持续测试有着密不可分的联系。它对DevOps管道的价值是不可估量的,这一点从以下几点可以看出。

实现持续的反馈机制

实施DevOps软件开发方法的主要目标是减少上市时间(TTM),或通过弥合开发和运营团队之间的差距加速发布周期。

只有对生产或部署准备情况和开发代码的质量进行一致的反馈,才能帮助实现这一主要目标。毋庸置疑,DevOps中的持续测试是唯一的出路。因此,持续测试保证了DevOps提高开发速度和减少团队间沟通延迟的目标得以实现。

尽早发现错误

根据一份报告,2020年仅在美国,软件质量差的成本就达2.08万亿美元,其中运营软件故障占总成本的近75%。

2020年美国的CPSQ

操作性软件故障是由于对软件质量的不重视造成的,这对用户体验产生了负面影响。这最终会降低你的产品的竞争优势。这种令人担忧的情况可以通过实施持续测试策略来避免。

持续测试可以确保DevOps管道保持其真正的敏捷性,因为软件产品的不同组件在持续测试周期中不断被检查,以验证产品是否没有错误。总而言之,在DevOps中通过持续测试早期发现bug,对改善你的销售有很大的帮助。

用服务虚拟化提供无处不在的测试环境

虚拟服务是管理测试环境和执行左移测试以实现连续测试的一个重要方面。它有助于确保测试与开发过程平行进行--API驱动的应用程序,基于云的应用程序,或其他基于异构组件的应用程序。此外,它允许测试团队在不对生产环境造成负面影响的情况下,访问需要肌理被测应用(AUT)的系统组件。

创建正确的测试环境的许多障碍可以通过服务虚拟化来克服。这种技术的优点是,任何团队都可以在虚拟化的基础上对任何服务进行测试。此外,它快速、准确,并允许团队进行平行测试

持续测试的组成部分

持续测试可以比作一个由若干组件组成的房子。即使缺少一个组件,整个结构的稳定性也会受到影响。就像这个例子一样,你必须熟悉这些组件,以便在软件开发过程中正确获得持续测试的好处。持续测试有两个基本组成部分。

  • 自动测试
  • 测试编排

自动测试

通过测试自动化,可以减少测试过程中的人为干预。然而,它需要使用测试自动化框架和工具来创建测试脚本,验证应用程序的功能。在引入持续测试之前,团队为了方便和快速通过SDLC,习惯于将功能测试脚本自动化。

另一方面,持续测试需要通过自动化将质量置于SDLC的中心,以及从质量作为SDLC的一个 "阶段 "到质量作为从软件规划到软件生产的一个操作概念的文化转变。

测试编排

自动化和协调与持续测试相辅相成。测试自动化专注于一个特定的活动,而测试协调将测试纳入CI/CD管道,连接自动化和手动操作;从而帮助解决产品的整体问题。此外,协调为企业提供了测试的完全可视性,使他们能够看到每个步骤中谁负责什么,确定需要改进的地方,并随着时间的推移跟踪指标。

像LambdaTest这样的测试协调平台提供了HyperExecute--一种极快的测试协调云,可以以最快的速度进行端到端的Selenium测试。它比传统的Selenium网格云快70%,因此有助于企业实现更快的上市时间。

当更多的流程从手动区转移到自动区时,可以发现并纠正瓶颈问题。如果你计划从手动测试转移到自动化测试,你可以了解更多关于从手动测试转移到自动化测试的信息。当你需要让一系列的任务按照一定的顺序执行时,我建议选择测试协调。

另外,协调使反馈过程无摩擦,由于这个原因,反馈可以以更快的速度提供给开发团队。所有的团队都可以快速了解管道中的内容,进展如何,以及延迟对业务的影响。

总的来说,Orchestration使团队能够根据预先设定的KPI来审查整个软件应用。

那么人工测试呢?

持续测试的目标是提高开发速度,而手工测试过程中采用的流程与这一目标背道而驰。手动测试的一个阶段可以持续几个小时到几天,这取决于运行测试的团队的可用能力和专业知识。

来源

自动化测试可以加快这个过程,而且相对来说持续的时间更长。因此。 手工测试不是持续测试的一个组成部分.

用于持续测试的工具

持续测试工具设计所有的持续测试策略。他们确保你的成功,并保证你在持续测试过程中的阶段性积极成果。虽然有许多工具可用于持续测试,但其中很少有值得追逐的。一些突出的,持续测试工具是。

Selenium

Selenium是一个开源的框架,是具有广泛编程技能的质量保证(QA)工程师的理想选择。为了建立和实施你现有的开发周期,你需要对框架的工作方式有一个全面的了解。对于跨环境测试,Selenium支持广泛的流行操作系统(Windows、macOS、Linux)和浏览器(Chrome、Firefox、Safari等)。

在3000多个真实的浏览器和操作系统组合中运行Selenium自动化测试。现在就试试LambdaTest吧!

然而,当Selenium与CI/CD管道中的其他工具相结合时,存在许多障碍。最大的障碍是找到一个支持你所需要的工具和插件的基础设施,并允许你在规模上无缝运行Selenium测试脚本。

云测试解决了规模和基础设施的问题,因为Selenium测试是在一个安全和可扩展的云Selenium网格上运行。LambdaTest就是这样一个平台,它提供了一个Selenium云网格,让你在一系列浏览器和平台组合上大规模地运行Selenium测试。此外,通过与企业经常使用的大量最佳CI/CD工具集成,Selenium测试可以在CI/CD管道中以连续方式运行。

下面是LambdaTest云Selenium网格的一瞥。

你也可以订阅LambdaTest的YouTube频道,随时了解围绕Selenium测试Cypress E2E测试、CI/CD等的最新教程。

詹金斯

根据一份报告,33.3%的开发团队使用Jenkins作为其CI/CD工具的一部分。Jenkins是用Java编写的,有助于CI/CD任务的自动化。在Jenkins服务器建立后,你能够运行一系列的自动测试和构建,确保只有稳定的(和经过测试的)才能进入生产环境。

来源

使用像Jenkins这样的解决方案来实现CI/CD,可以大大简化保证高代码质量和成功构建的过程。它在与大型开发团队合作的单一项目中尤其有用,因为传统的方法可能会导致大量冲突的代码提交,可能需要大量的故障排除。

Appium

Appium是一个测试自动化框架,能够在桌面和移动端进行跨浏览器测试。此外,许多云设备供应商现在允许用户在他们自己的基础设施上进行Appium测试。

你可以使用Appium直接在云中开发、上传、执行和检查测试结果。Appium支持JSON线协议。Appium不需要重新编译应用程序,可用于在物理设备和模拟器或仿真器上进行自动化测试。

茄子

Eggplant是最好的持续测试工具。该工具为测试自动化提供了一种独一无二的方法:基于图像的解决方案。Eggplant不是呈现原始的测试脚本,而是通过视觉媒介模拟用户的观点,与被测试的应用程序(AUT)进行互动。

Eggplant提供了一个测试实验室,使开发团队可以全天候地进行持续测试和部署。Eggplant还与其他CI/CD工具如Jenkins、Bamboo等集成。

如何实施有效的持续测试策略?

你必须创建一个有效的持续测试策略,以充分实现持续测试能给你的开发过程带来的投资回报。遵循这些步骤,使持续测试所提供的好处最大化。

选择合适的持续测试工具

无论你有什么样的持续测试策略,都可以通过你选择的持续测试工具来实现。通过最大限度地减少瓶颈和实现连续发布和部署,一个合格的自动化工具总是能够为你的开发过程增加价值。

开发人员可以利用各种平台和工具来自动化和协调持续测试,以完成质量目标。然而,并不是所有的都能满足你项目的需求。因此,花时间选择正确的工具是至关重要的。有几种方法可以确保你选择正确的测试自动化工具。

对项目要求的彻底了解是选择理想的持续测试工具的众多步骤之一。另外,选择一个能够让你轻松开发和维护测试脚本的持续测试工具,跨浏览器测试也很重要。此外,确保你的工具与构建的无缝集成。

测试优化

根据2020年Capgemini持续测试报告,55%的开发团队表示他们最终的测试案例大大超过了他们的需求,有很多重叠。选择最好的工具,用最少的测试用例提供所需的测试覆盖率,这被称为测试优化。

测试优化提供了许多好处,从全面回归套件的基于风险的测试选择到为新功能的目标和回归测试选择测试。它是一个动态的和持续的过程,特别是与持续测试架构一起使用。在自动化之前,应该进行测试优化,而且应该在整个持续测试过程中持续进行。

了解重要的用户工作流程所涉及的集成--包括这些应用程序中使用的技术(Web、移动、消息/API层等)--是测试优化的第一步。第二,在测试案例中包括提供最高水平的测试覆盖率的测试。

为了提高质量和速度,你的测试套件应该建立起来,用最少的测试用例提供最大的覆盖率。此外,应定期审查测试套件,以删除不再需要的测试,修复不稳定的测试,并根据新功能添加新的测试。

左移 ~ 基于模型的测试

左移 "的测试趋势旨在使测试更接近于软件开发过程的开始。一个项目可以通过早期和经常的测试来减少问题的数量和提高代码的质量。目标是避免在部署阶段发现任何需要修补代码的关键缺陷。

因此,实施一个基于模型的测试策略来解决这些问题。

基于模型的测试(MBT)是左移策略的一个组成部分,它涉及以系统模型为输入创建测试场景。技术要求,如统一建模语言(UML)、流程图、工艺流程等,可以包含在这些系统模型中。

开发一个全面的测试协调系统

你的持续测试策略只有在组成它的组件中才是好的,其中之一就是测试协调。考虑到测试协调的各种好处,以及协调有助于使SDLC更加透明和受控的事实,建立一个强大的测试协调系统是不可低估的。

实时测试数据生成、自动代码弹性、持续监控,以及具有自动规划、代码、测试和监控的持续交付框架,集成到具有100%系统可用性的组装管道中,这些都是选择。

结论

持续测试是一种DevOps方法,协助开发人员在最少的时间内实现高质量的代码。我们已经看到了什么是持续测试,以及如何利用持续测试策略来加快开发速度和实现敏捷性。

由我们JCG项目的合伙人Sarafadeen Ibrahim Ayomide授权发表在Java Code Geeks上。点击这里查看原文。如何实施DevOps的持续测试策略

Java Code Geeks撰稿人所表达的观点属于他们自己。

2022-06-11

Sarafadeen_Ibrahim Ayomide