如何在DevOps中实施连续测试

在过去的十年中,对软件开发的需求已急剧发展。软件已成为公司得到竞争优点的关键优点,特别是若是您的公司属于SaaS范畴。经过在SDLC中实施瀑布等传统流程,组织如今正在向敏捷过渡,以便以更快的速度在市场上交付软件。为了应对RAD(快速应用程序开发),出现了许多新方法,例如CI / CD,DevOps,Shift左键测试,为了更好地构建,开发和优化软件交付。
即使如此,试图同时保持质量和速度仍然是一个真正的挑战,测试方法能够帮助或下降整个加速过程。今天,咱们将探讨在DevOps中进行连续测试的重要性。在本文中,将讨论什么是连续测试?还将帮助消除与连续测试有关的错误观点。咱们还将探讨DevOps中连续测试所涉及的挑战,以及最佳实践,以帮助您以专业人员的身份执行连续测试过程。前端

什么是连续测试?

连续测试是端到端的质量维护过程,其中团队不断进行各类自动化测试。同时,分析与最新软件开发相关的各类业务风险,并为开发人员提供快速反馈。这种反馈有助于在早期阶段识别缺陷和错误,并鼓励开发人员在SDLC(软件开发生命周期)的后续阶段中优化其代码。java

与在开发周期结束时交付结果的传统测试方法不一样,连续测试在多个阶段进行,包括开发,集成,过渡环境和生产环境。连续测试可确保在开发过程当中尽早解决缺陷和问题,从而提升总体质量并节省大量时间和金钱。编程

连续测试的好处

常规测试技术在很大程度上取决于手动测试和须要按期更新的自动测试,这可能会阻碍交付过程的速度。这就是诸如敏捷,DevOps,持续集成和持续交付之类的现代方法论所探讨的内容。后端

在DevOps中实施连续测试能够经过如下方式取得成果:浏览器

  • 持续风险分析:可能有一个版本的版本(候选发布)经过全部可用测试,但没有准备由业务负责人发布,持续测试将在每一个阶段评估这些风险。
  • 牢记用户体验:连续测试是一个能够轻松适应不断变化的客户要求的过程。经过根据客户反馈在应用程序中进行不断更新,将持续测试与DevOps集成在一块儿能够帮助使您的软件变得更加健壮和稳定。从客户的角度来看,您能够灵活地编写有效的测试用例。就用户体验进行正确的测试对于评估前端和后端全部相关技术的最终用户体验相当重要。
  • 帮助安全性:持续测试创建了一个支持系统,该系统可确保应用程序免受意外更改和攻击的安全性,这些更改和攻击在部署后也可能会遇到。在加速的开发过程当中,即便在软件出现故障的状况下,它也能够确保系统稳定且可恢复。
  • 从一开始就进行持续集成:持续测试指望测试从开发过程的早期就被嵌入,而不是在发布以前就进行处理。测试不断集成到软件交付管道和DevOps工具链中。
  • 涵盖功能和非功能测试:连续测试可模拟全部类型的功能测试,例如跨浏览器测试,回归测试,集成测试,API测试,单元测试;还有非功能性测试,例如可用性测试,安全性测试,可靠性测试,可伸缩性测试等等。
  • 及时的反馈而不会形成任何瓶颈:连续测试会在交付管道的适当阶段评估现代体系结构的每一层,并在交付管道的正确阶段提供可行的反馈,而不会形成冗长的排队。
  • 节省时间,金钱和资源:及早发现bug不只能够节省发布窗口的资源,还能够帮助您节省大量金钱和资源。持续测试经过使用诸如开发测试或左移测试之类的缺陷预防策略,减小了用于发现和修复缺陷的时间和资源。

与DevOps中的持续测试有关的错误观点

  • “将致使测试人员失业”:测试人员对框架有一种见解:他们能够看到客户如何与之交互。尽管自动化的发展很是迅速,但它尚未达到彻底取代手动测试的水平。引入自动化的所有目的是为手动测试人员提供更多的时间,以提出更有效的测试方案。仍然存在重要的手动活动,例如探索性测试和可用性测试,测试人员应该持续执行它们,这是他们工做的特征。固然,他们须要得到做为软件测试人员的有效技能。
  • “只有测试人员才能为连续测试作出贡献”:连续测试的某些或所有部分对于任何类型的团队及其团队成员都是相当重要的。例如,让测试人员与开发人员并肩做战可能使他们可以建立高级的自动化测试套件。这样,开发人员就有机会理解测试人员的观点,而且测试人员还能够学习和提升他们的测试自动化技能。
  • “连续测试意味着连续执行测试用例”:正如我已经解释过的,连续测试还有不少其余功能。它不只执行功能测试和非功能测试,并且连续测试还涵盖了从左移(单元,组件,覆盖范围,综合风险评估)到“右移”(监视/ APM,生产中的测试,客户体验,虚拟化测试)。
  • “连续测试和自动化测试是相同的”:经过自动化,企业正在尝试实施敏捷的测试策略:“尽早测试,常常测试,处处测试”。冗长的测试脚本会自动执行并按期进行更新,借助自动化测试工具,自动化测试可用于执行连续测试,从而减小了人工错误。可是,请记住,自动化测试和测试自动化稍有不一样。经过测试自动化,确保经过管道进行整个交付过程的速度和效率。自动化测试能够自动化,传统的测试方法能够自动化管理和跟踪不一样测试的整个过程。连续测试包括自动化测试和自动化测试,以保持质量和速度。自动化测试是连续测试的子集,不该将它们混淆。

DevOps中连续测试的挑战

  • 一次性巨额投资:构建测试环境和创建自动化框架须要大量的专业知识和精力。得到测试自动化范围的最大困难是与创建有效的自动化框架相关的时间和成本。为了实现测试自动化项目,JIRA, Asana等全面的测试管理平台简化了此过程。
  • 测试普遍的复杂体系结构:现代应用程序普遍分布,敏捷和并行开发流程的采用正在增长,端到端功能测试一般要求访问第三方服务或大型机,这些服务或大型机仅可用于容量有限或在不方便的时间。能够经过使用服务虚拟化模拟缺乏或不存在依赖项的AUT(被测应用程序)交互来解决此问题。它还能够用于确保各类测试运行中的数据,性能和行为是一致的。
  • 不可扩展的测试套件:团队避免进行连续测试的另外一个缘由是其基础架构的可伸缩性不足以连续运行测试套件。经过将测试集中于公司的优先级,拆分测试基础并将测试与应用程序发布自动化工具并行化,能够解决此问题。
  • 团队之间缺少协调:寻找合适的熟练自动化专家也是一项挑战。DevOps中的连续测试要求产品经理,开发人员和测试人员之间进行高度协调。协调是大多数公司奋斗的领域。自古以来,它们之间就存在文化上的脱节。质量检查团队处于孤立状态,能够经过适当的员工敬业度策略和意识来解决。安全

    成功在DevOps中进行连续测试的主要说明

  • 建立强大的用户故事:持续测试意味着从一开始就进行质量和粒度测试。确保得到良好的业务需求以开始开发。确保用户故事是可测试的,并具备良好的接受标准,采用更具探索性的态度进行手动测试可能有助于得到良好的结果。
  • 协做:从文化的角度来看,若是每一个人都表现出团队的素质和合做,那么在DevOps中进行连续测试就是成功的。在开始编码或根据须要编写测试以前,先描述测试用例。不管如何,开发人员和测试自动化架构师应共同努力,以确保优化用于测试自动化的代码。团队还可使用Slack之类的工具来合做测试结果,以加快反馈和调试速度。
  • 保持简单和逻辑:减小没必要要的测试对象,例如普遍的测试计划和测试用例,并减小测试等待时间。测试应该是一致的,增量的和可重复的;结果应可量化且有意义。
  • 处处进行测试:测试必须在交付管道的全部阶段进行,涵盖整个环境的全部方面,不管是生产环境仍是QA环境。经过在每一个阶段进行测试并不断向开发人员提供反馈,能够帮助提升软件开发的质量。
  • 自动化测试:自动化测试对在DevOps中成功实施连续测试起着重要做用。坚持测试自动化金字塔,并专一于自动化测试脚本以实现Web应用程序中的最新更新相当重要。不能实现100%的自动化,可是您可使过程自动化的程度越高,执行连续测试的速度就越快。
  • 拥抱CI / CD(持续集成/持续交付):开发人员应采用持续集成-经过天天屡次将代码集成到共享存储库(例如Bitbucket和GitHub)中。当使用CI服务器实施自动化测试时,每一个构建都会当即开始连续测试。警告,不管测试结果是否经过,均可以实时直接发送给开发团队。经过按期集成,您能够更轻松地快速检测和定位错误。一旦完成全部测试,就能够绝不犹豫地将更新持续交付生产。
  • 选择基于GUI的API:DevOps和Agile团队以较短的发布周期,快速的反馈循环和频繁的更改而工做,很难维护GUI测试。GUI测试须要更长的时间来提供反馈,而且须要大量的返工。对于具备多层体系结构的现代应用程序,重要的是验证后端服务和功能路径。API测试更稳定,建议一样使用。GUI测试仅限于系统测试,移动测试,黑盒测试;API测试涉及许多实践,例如单元测试,功能回归测试,负载测试,安全测试,Web互操做性测试等等。
  • 超越自动化的思考:就像人的大脑工做同样,实施人工智能(AI)和设计智能机器(借助IoT,量子计算,机器人等),对交付管道的每一个阶段进行启发式思考,能够加速整个流程的发展。 SDLC。服务器

结论

为了迅速行动并取得更快的结果,咱们必须保证咱们从一开始就制造正确的产品。修改产品以进行错误修复历来都不是一件容易的事,由于后期在管道中发现的缺陷修复成本很高。相反,必须采用正确的方式进行测试,并使用同步的交付过程(CI / CD,DevOps),测试方法(API测试,服务虚拟化),稳定的测试平台以及自动化测试的功能和非功能方面。架构

将团队之间传统的脱节融合在一块儿,测试人员和开发人员能够学习并执行具备适当专业知识的成功自动化脚本,并轻松优化软件体系结构。框架

DevOps中的连续测试是持续质量的主要方法(并不是惟一方法)。这是经过持续交付向更高质量产品迈出的一步。工具

一旦在DevOps中实现了连续测试,就会出现一个理想的机会,能够考虑采用不一样的方法,这些方法不包括运行测试以识别缺陷或问题,而是能够防止编码。这样,鼓励开发人员从一开始就构建完好陷的最佳产品。


技术类文章精选

非技术文章精选

相关文章
相关标签/搜索