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

为了提高工程效率,降低成本并提高系统可靠性,标准化测试流程是至关重要的步骤。

译自 Boost Microservices Testing Quality With Platform Engineering,作者 Arjun Iyer。

在快速发展的微服务世界中,每个工程团队通常都会打造自己独特的技术和工具组合——一种多语言的天堂。虽然这种多样性促进了创新,但在测试方面也带来了重大挑战。团队可以选择自己的编程语言和工具链,但正如容器和 Kubernetes 教会我们的那样,部署和运行时的标准化是无价的。这种对统一性的需求至关重要地扩展到测试领域,该领域充满了诸如优先考虑哪些测试、追求哪些指标以及自动化程度等决策。

“我们有一些团队希望快速行动,因此不费心编写任何自动化测试,只是在生产环境中进行测试并回滚。而我们还有其他团队花费过多的时间来*自动化他们代码的各个方面,导致发布速度非常慢!”

一家大型电子商务公司工程效能负责人

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

非标准化测试的问题

想象一下,一个团队在 CI 中使用 Docker Compose 勤奋地自动化集成测试,而另一个团队则将精力集中在夜间在预发布环境中运行的端到端 (E2E) 测试。第三组可能主要坚持手动测试,只是偶尔尝试自动化。这种碎片化的方式不仅会危及单个组件的可靠性,还会危及整个系统的可靠性。它掩盖了在整个工程组织中协调质量、速度和成本指标的任何努力。此外,请记住古老的格言:一个系统只有其最薄弱的环节才坚固。测试标准的不一致会导致整个系统容易受到其最不可靠组件的缺陷的影响,这可能会导致将来出现重大问题。

平台工程的作用

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

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

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

  1. 测试环境:两份报告都指出了管理多个测试环境的过高成本和复杂性。通过将开发、QA、预发布和验收整合到一个优化的预生产环境中,平台团队可以大幅降低开销并简化工作流程。这种方法不仅降低了基础设施成本,而且还加快了测试过程,符合行业向更高效的开发实践发展的趋势。
  2. 代码变更的早期预览:早期和迭代反馈的重要性是当前软件工程讨论中的一个反复出现的主题。实施标准化的预览环境可以让开发人员更有效地与产品经理、QA 和 UX 团队协作。尽管涉及复杂性,但建立这些环境对于增强微服务架构中的反馈循环至关重要,从而提高产品质量并加快迭代。
  3. 左移自动化测试:据行业领导者称,及早发现和解决问题是保持高生产力和产品质量的关键。通过将运行自动化测试作为合并拉取请求之前的标准做法,平台工程师确保在最早阶段识别和解决缺陷。这种主动方法不仅提高了发布的稳定性,而且还符合提高开发人员生产力和运营效率的总体目标。

这些标准化的战略领域不仅仅是为了改进单个流程,而是为了提升平台工程功能的整体有效性和效率。

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

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

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

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

  1. 结果重于输出:优先考虑直接影响软件质量和用户体验的指标,例如缺陷逃逸率或事件频率,而不是仅仅计算活动的输出。
  2. 价值驱动的测试:选择合适的测试不仅仅是决定手动方法和自动化方法之间的选择;它需要评估它们的投资回报率和维护工作量。理想的方法因业务环境而异。例如,一家电子商务公司可能会优先考虑对收入至关重要的交易流程,而一家 B2B 公司可能会关注不同的基本用户流程。尽管端到端 (E2E) 测试资源密集型,但它们保护高价值用户流程的潜力可能证明其成本是合理的。有效的测试策略与业务目标紧密结合,确保将工作集中在价值最大的地方。
  3. 迭代改进:使用指标不断改进测试实践。如果某些测试始终产生很少或没有可操作的数据,那么可能是时候修改或淘汰它们了。

通过关注这些原则并拥抱新兴技术,团队可以将他们的测试策略更紧密地与他们的核心目标相一致,从而提高其开发过程的效率和有效性。

结论

在提高工程效率、降低成本和提高系统可靠性方面,标准化测试流程是至关重要的一步。

在 Signadot,我们构建了帮助平台团队简化和标准化测试和预览环境的工具,从而在开发周期中实现左移方法,同时最大限度地降低基础设施成本。例如,Brex 的平台工程师能够在数百名工程师中扩展开发人员测试,而无需复制基础设施,而 Earnest 使其开发人员能够在类似生产的环境中进行早期测试,从而更早地发现问题并降低成本。

想知道如何将这些策略实施到您的开发流程中?访问 Signadot 网站了解更多信息。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注