从2006年起我就开始从事性能测试,和许多性能测试人员一样,我曾经认为经过几年的经验,我会成为一名性能工程师。不过,现在我认为我们需要明白,这并不那么简单。相反,成为性能工程师的道路是一段漫长而持续的旅程。
性能测试人员不仅需要具备很强的性能测试知识和性能环境设置能力,还需要对不同类型应用的性能分析和性能监控概念有一个良好的理解。性能测试人员应共享性能测试结果和有关测试执行的关键结果,并识别潜在的性能问题,并在可能的情况下提供一些性能改进建议。
另一方面,性能工程师确定性能问题的根本原因,找到问题的可能解决方案,并进行调优以解决这些问题或确保满足性能指标或期望。
性能工程是端到端的活动,性能测试是该活动中的一个子集。它不像一旦我们有10或15年的性能测试经验,那么我们将自动转换为性能工程师(老实说,这完全是性能测试员自认为的)。
根据我的经验,通常性能测试人员会在软件开发生命周期(SDLC)的最后阶段加入。然而,这种情况正在发生转变,更多的组织参与到敏捷和DevOps方法中,在SDLC的早期阶段将分配性能测试。这是一个积极的信号,将有助于加速性能测试人员成为性能工程师的进程。方法如下。
性能工程是贯穿所有SDLC阶段的持续活动。它旨在通过牢记性能指标来设计应用程序,并在开发周期中尽早发现潜在问题。我们继续执行性能工程活动,直到应用程序发布并满足总体性能服务级别协议(SLA)参数。如果不满足这些参数,那么我们会在所有级别(软件、操作系统、硬件和网络)进行性能优化,直到最终用户满意为止。性能工程师需要可视化应用程序的理想性能,以便应用程序团队成员可以设置正确的目标,并将其转化为具体、可度量的性能指标。
我们必须明白,性能工程不仅仅是性能调优和优化,就像它不仅仅是性能测试一样;更确切地说,这些都是性能工程的活动。
不过,在成为一名性能工程师的漫长而持续的旅程中,第一步将是学习性能测试基础知识。我主要从互联网和组织的内部在线学习系统学到了基础知识。在参与实际项目时,我开始学习自动化性能测试工具。所有这些工具的基本概念都是相通的,而工具文档非常有助于理解它们的不同之处
然后,我开始学习性能测试执行、结果分析和报告关键发现。我认为理解客户端统计信息(如响应时间,每秒点击次数,吞吐量,错误,虚拟用户图和网页组件细分图)非常重要。我还学会了使用不同的性能计数器查找服务器端统计信息,例如连接到基于Windows的应用程序的系统框,使用基于Unix的应用程序的系统命令,或对基于SAP的应用等特定应用程序情况使用事务代码。
然后我开始学习如何设置控制器(Controller),负载生成器(Load Generator)和数据处理器(Analysis)等性能环境。接下来,我开始收集有关不同监控工具的知识,从传统工具到应用性能监控工具,再到用于真实用户和综合监控的数字体验监控。
另一方面,在分析应用程序和服务器参数,客户端和服务器配置,测试执行细节,性能测试环境细节,测试环境配置,性能测试数据详细信息以及与利益相关者的讨论之后,使用自己的思维过程分析性能测试结果,所有这些都为了提高整体性能并为未来的参考建立基准。基于不同类型的应用程序,其底层通信架构和业务域,这里有很多东西需要学习。
然后是性能优化和调优阶段。我将主题分为三个部分:服务器级别(Web、应用程序和数据库),操作系统级别,以及设备和网络组件级别。作为一名性能测试人员,我们有很大的机会为整体性能改进提出不同的建议(包括关键发现),因为我们已经在这些领域拥有多年的知识积累。通过这样做,我们可以建立信心并开始真正寻找作为性能工程师工作的机会。
这就是为什么我认为这是一个漫长而持续的过程,将我们从性能测试员转变为性能工程师。我发现通过循序渐进的活动更容易走下去,比如首先成为性能测试专家,然后添加性能环境配置能力,最后成为具有良好整体性能监控概念的性能分析专家。这些是性能测试的基础,我们只需要在此基础上再接再厉。
为此,我们必须获得分析或诊断工具的实践经验,花时间学习,并寻找可能的机会。下面列出了我们应该关注的性能测试概念:
- 收集性能需求
- SLA定稿
- 为业务关键方案准备事务遍历文档
- 编写详细的性能测试策略
- 设计概念校验
- 工作量建模
- 为多个用户和多次迭代创建自动化性能脚本
- 处理多个用户的不同性能数据准备方法
- 满足实际用户模拟的性能测试执行类型
- 性能测试报告(包括初步报告和执行报告),包括结果分析
- 使用客户端和服务器端统计信息进行性能监视
- 性能改进建议
- 基于可用资源、工具和底层通信机制的性能环境设置
性能工程是端到端的工作。整个目标是主动确保任何产品满足性能要求,并在实际用户面对性能问题之前识别和解决这些问题。从性能测试人员转变为性能工程师是一个漫长而持续的过程,但通过将这一旅程分解为具有明确学习目标的分步活动,这样你可以制定对应的职业发展计划。
本文译自 Arun Kumar Dutta 《From Performance Tester to Performance Engineer》 一文