技术主题

什么是性能工程?

以灯泡为重点的信息技术项目图示

概述

性能工程是主动、持续和端到端的应用程序性能测试和监控。它通过持续的反馈回路实现团队、工具和流程之间的无缝协作。在这里,负责质量保证的不仅仅是测试人员,还有开发人员、性能工程师、产品负责人和业务分析师。

通过利用从开发人员到性能工程师的合适工具,性能工程实现了性能测试的左移和应用程序性能监控的右移。如果不了解经典的性能测试,就很难理解性能工程与传统性能测试的区别有多大。

性能工程

性能测试和性能工程有什么区别?

传统的性能测试实际上是性能工程的一个子集。它通常需要运行一轮负载测试,作为开发后质量保证(QA)周期的一部分。性能测试包括检查应用程序在预期工作量下的速度、可靠性、可扩展性、稳定性、响应时间和资源使用情况。在了解性能工程与性能测试之间的区别之前,我们首先来看看孤立的性能测试,以及为什么性能测试本身已不再具有可持续性。

  • 首先,测试被孤立地看待,被视为功能测试结束后才开始的事后考虑。
  • 其次,各自为政的工作方式会导致项目子团队之间存在巨大的沟通鸿沟,无法开展交付高质量产品所需的协作。
  • 第三,当性能测试开始时,企业已经在应用程序的设计、开发和推广上投入了大量的时间、精力和财力。
  • 第四,性能测试往往是事后才考虑的问题,并不包括在发布前的 "完成 "标准中。因此,在这个节骨眼上,企业急需将应用程序投入生产,并希望不会出现任何延误。在这种情况下,质量保证部门的反馈发生得太晚,无法在发布前彻底修复。不可避免的是,大量的性能问题会不必要地进入生产环境,这样发布才能如期完成。与开发初期相比,在生产环境中修复缺陷的成本要高得多,破坏性也大得多。
  • 第五,传统的性能测试可能非常适合瀑布模型,但在当今以 DevOps 为中心的世界中却显得格格不入。DevOps 通过缩短从向系统提交变更到将变更投入生产的时间,降低了新版本的失败率。持续集成和持续交付(CI/CD)确保软件在整个生命周期内始终处于可发布状态。DevOps 还注重重新调整组织结构,以支持利益相关者、职能部门和工具之间的端到端协作。为了满足 DevOps 的快速交付需求,软件开发需要一种更先进的性能测试方法。这种新方法就是软件性能工程。

现在,让我们深入探讨一下性能工程与性能测试之间的主要区别。

  • 首先,性能测试是对应用程序负载处理和响应能力的质量检查。它可以确定系统承受生产负荷的能力,并预测在大负荷条件下可能出现的问题。性能工程旨在从一开始设计应用程序时就考虑到性能指标,以便在开发初期发现问题。
  • 其次,性能测试是一个质量保证过程,通常在一轮软件开发完成后进行。性能工程是一个持续的过程,它贯穿于软件开发周期的各个阶段--从设计、开发到最终用户体验。
  • 第三,性能测试由质量保证团队进行,而性能工程则涉及 RND 和质量保证。

性能工程概念

通过以下概念,DevOps 和性能工程可提供一致的生产性能结果,使客户能够更有信心地高效部署应用程序,并推出满足用户期望的高性能、稳定的软件。

端到端优化

性能工程通过持续的测试和监控流程实现端到端的系统优化。这就将性能和负载测试转移到了开发过程中。这与传统的性能测试不同,传统的性能测试是在功能测试稳定和代码发布后进行的。

一旦代码发布,性能工程部门就会利用应用程序性能监控 (APM) 工具跟踪生产中的应用程序。

由绩效利益相关者组成的跨职能团队

性能工程可促进从业务分析师到开发人员等项目利益相关者之间的协作。保持高性能水平以提升客户体验、跟上业务发展的步伐以及管理端到端性能,使得每个人(不仅仅是质量保证/性能工程师)都成为产品性能的管理者。具体方法如下

卓越检测中心

卓越测试中心(CoE)是值得信赖的测试顾问和最佳实践的守护者。卓越测试中心支持不同的业务部门、不同的测试方法(如 DevOps 和敏捷),并可根据需要灵活推荐性能测试和测试工具。为了建立更好的测试模型和提高测试质量,CoE 是整合和重用多个业务部门长期以来生成和收集的测试数据的单一点。

性能工程师

性能工程师对开发过程中的所有代码进行全面审视,以确保性能测试标准全面、涵盖全局,并考虑到开发过程中所有不同的代码片段。性能工程师是性能测试工具的主要用户,在编写脚本、设计、运行和分析测试结果方面拥有丰富的专业知识。性能工程将性能工程师带入开发的早期阶段,他们可以提供性能指标和代码准备发布所需的场景。早期参与意味着性能工程师可以确保解决方案满足开发初期设定的性能预期。他们还能确认架构和设计在整个开发过程中保持一致。

软件开发人员

开发人员是编码方面的专家,但在功能测试和性能测试方面往往比较薄弱。他们在集成开发环境 (IDE) 中工作,倾向于使用自己喜欢的工具,很少愿意学习新工具。性能工程将性能测试转移到软件开发人员的职责范围之外。在性能工程师的帮助下,软件开发人员可以在编写代码的同时进行性能测试。在通过性能测试标准之前,开发人员不会发布他们的代码。

开发测试员

由于软件开发人员和性能工程师之间有明确的区别,因此在传统的性能测试中并不存在开发人员。在性能工程中,开发人员成为连接性能工程和开发人员团队的利益相关者。他们拥有扎实的编码和测试技能,虽然与开发人员和性能工程师的专业知识水平不尽相同,但他们在两者之间架起了一座桥梁。他们可以快速运行测试,在根据需要使用不同工具方面比开发人员具有更大的灵活性。

业务分析师和应用工程师

性能工程将测试工作转移到业务分析师和应用工程师身上。这样就能确保将定义用户体验质量的业务和应用程序性能要求纳入性能标准。这两个角色负责监控生产中的应用程序,以确保始终保持一流的应用程序性能。


找到合适的高性能工程合作伙伴

性能工程正在改变着软件开发的格局,也改变着所有参与其中的人员的工作内容。由于现在涉及的角色越来越多,因此比以往任何时候都更需要工具和技术来简化流程。性能工程需要从右到左、从左到右的端到端集成和协作,以及实时洞察和分析。传统的性能测试供应商没有足够的能力应对这一混乱的变革浪潮。OpenText 拥有成熟的经验和技术解决方案,可将测试混乱转化为工程秩序。

OpenText 性能工程开放式架构支持在任何开发环境中对任何协议和应用类型进行测试。它允许利益相关者(从开发人员到业务分析师)使用众多供应商和开源工具,以便大规模实现完整的 CI/CD 集成。OpenText 工具集成提供了快速消除开发等待时间和减缓应用交付的测试的能力。OpenText 性能工程解决方案以现有的内部部署或云基础设施为基础,促进资产的重复使用,以利用现有投资。这有助于快速扩展,以满足企业内多个应用程序的性能测试需求。

传统的性能测试直到功能测试完成后才开始,直到性能测试结束后才开始确定缺陷和根本原因。OpenText 性能工程需要对缺陷进行持续的端到端测量和分析,以便在性能测试结束前实时确定根本原因。性能标准包含在 "完成 "的定义和要求中。OpenText 实时分析可帮助性能工程师快速向开发人员提供反馈,以便在开发过程的早期启动故障排除。生产过程中的合成监控和真实用户监控可帮助我们深入了解已通过测试但必须在下一版本中修复的性能问题。从性能角度捕捉和分析终端用户的感受,可为开发人员提供更具体的反馈,从而优化应用程序,提高性能。

我们能提供什么帮助?

脚注