通过平台工程提高微服务测试质量

文摘   2024-09-09 10:39   云南  

 


点击上方蓝字关注我们


 

 

背景


 

  • 微服务架构的多样性导致了测试过程中的不统一和效率低下。

  • 各团队可能使用不同的编程语言和工具链,导致重复工作和成本增加。

  • 非标准测试方法会危及系统的可靠性和整体质量。


    为了提高工程效率、降低成本并提高系统可靠性,标准化测试流程是关键的一步。在快速发展的微服务世界中,每个工程团队通常会构建自己独特的技术和工具组合 —— 一种多语言的天堂。虽然这种多样性促进了创新,但在测试方面带来了重大挑战。团队可能会选择自己的编程语言和工具链,但正如容器和 Kubernetes 所教导我们的,部署和运行时的标准化是非常宝贵的。这种对统一性的需求至关重要地延伸到测试领域,这是一个充满决策的领域,例如优先考虑哪些测试、追求哪些指标以及自动化程度有多高。

“我们有一些团队想要快速行动,因此懒得编写任何自动化测试,只是在生产中进行测试并回滚。而我们还有一些团队花费太多时间自动化他们代码的各个方面,并且发布非常缓慢!”

这种差异不仅效率低下,而且成本高昂,因为它会导致冗余的努力和增加的维护成本。没有标准化的测试,团队可能会重复工具和流程,这通常会导致更昂贵的生产问题,消耗大量资源,并可能影响收入。

非标准测试的问题

       想象一下,一个团队在 CI 中勤奋地使用 Docker Compose 自动化集成测试,而另一个团队则将精力保留在每晚在暂存环境中运行的端到端(E2E)测试上。第三组可能主要坚持手动测试,只是偶尔尝试自动化。这种碎片化的方法不仅危及单个组件的可靠性,而且危及整个系统。它模糊了在整个工程组织中围绕质量、速度和成本协调指标的任何努力。此外,请记住那句古老的谚语:一个系统的强大程度取决于它最薄弱的环节。测试标准的不一致可能会使您的整个系统容易受到最不可靠组件的缺陷的影响,从而可能在未来引发重大问题。

平台工程的作用

     

Platform engineering is a practice built up from DevOps principles that seeks to improve each development team’s security, compliance, costs, and time-to-business value through improved developer experiences and self-service within a secure, governed framework. 
Microsoft

     平台工程是 DevOps 原则的演变,专注于开发内部工具,以标准化技术流程并为开发人员提供自助服务能力。在测试微服务的背景下,平台工程师(PE)可以与质量保证团队合作,打造更广泛的工程团队可以采用的标准化工具和最佳实践,从而确保一致性和效率。

 

平台工程标准化的关键领域


 

       最近的行业见解,例如 Puppet 的 “2023 年平台工程现状” 和 “Gartner 的 2024 年软件工程优先事项”,突出了直接影响平台工程团队的关键目标和挑战。这些报告强调了软件交付中效率、可靠性和速度的重要性,强调了在软件开发生命周期(SDLC)中简化操作的必要性。专注于测试,这是 SDLC 的关键阶段,可以极大地增强这些方面。以下是平台工程师如何使他们的策略与这些首要举措保持一致:

测试环境:两份报告都指出了管理多个测试环境的过高成本和复杂性。通过将开发、QA、暂存和验收整合到一个单一的、优化的预生产环境中,平台团队可以大幅削减开销并简化工作流程。这种方法不仅降低了基础设施成本,还加速了测试过程,符合行业朝着更高效开发实践推进的趋势。

代码更改的早期预览:早期和迭代反馈的重要性是当前软件工程讨论中反复出现的主题。实施标准化的预览环境允许开发人员更有效地与产品经理、QA 和 UX 团队合作。尽管涉及复杂性,但建立这些环境对于增强微服务架构中的反馈循环至关重要,从而提高产品质量并加快迭代速度。

左移自动化测试:根据行业领导者的说法,早期检测和解决问题是保持高生产力和产品质量的关键。通过标准化在合并拉取请求之前运行自动化测试的实践,平台工程师确保在最早的阶段识别和解决缺陷。这种主动的方法不仅提高了发布的稳定性,而且符合提高开发人员生产力和运营效率的更广泛目标。这些标准化的战略领域不仅仅是关于改进单个流程,而是对于提高平台工程功能的整体有效性和效率不可或缺的。

指导测试标准化的核心原则

      在平台工程的领域中,对开发人员的好处是巨大的,从提高生产力到提高软件质量。值得注意的是,开发人员强调了减少错误和更稳定应用程序的优势,这在快节奏的开发环境中至关重要。

Source: https://www.puppet.com/resources/state-of-platform-engineering

       当我们避免使用诸如代码覆盖率百分比或自动化测试的数量等虚荣指标时,这些指标可能会误导而不是提供信息,专注于测试提供的可操作见解而不是其存在本身至关重要。以下是一些指导原则,以确保测试工作真正有效:

结果重于输出:优先考虑直接影响软件质量和用户体验的指标,例如缺陷逃逸率或事件频率(frequency of incidents),而不是仅仅计算活动的输出。

价值驱动的测试:选择正确的测试不仅仅是在手动和自动化方法之间做出决定;它需要评估它们的投资回报率和维护努力。理想的方法因业务上下文而异。例如,一家电子商务公司可能会优先考虑对收入至关重要的交易流程,而一家 B2B 公司可能会关注不同的关键用户流程。尽管端到端(E2E)测试资源密集,但它们保护高价值用户流程的潜力可能证明其成本是合理的。有效的测试策略与业务目标紧密结合,确保努力集中在最能提供价值的地方。

迭代改进:使用指标不断改进测试实践。如果某些测试始终产生很少或没有可操作的数据,可能是时候修改或放弃它们了。通过关注这些原则并拥抱新兴技术,团队可以使他们的测试策略更紧密地与他们的核心目标保持一致,提高他们开发过程中的效率和有效性。

 

结论


 

     在提高工程效率、降低成本和提高系统可靠性方面,标准化测试流程是关键的一步。我们构建工具来帮助平台团队简化和标准化测试和预览环境,在开发周期中实现左移方法,同时最大限度地降低基础设施成本。例如,平台工程师能够在不重复基础设施的情况下在数百名工程师中扩展开发人员测试,而使其开发人员能够在类似生产的环境中进行早期测试,更早地发现问题并降低成本。

 

 


Megadotnet
为您介绍各体系平台的新闻,系统研发相关框架,组件,方法,过程,运维,设计。企业IT与互联网信息系统或产品解决方案。开源项目,项目管理。
 最新文章