这是性能测试知识科普的第五篇文章。
前面的文章分享了性能测试中的核心术语和指标、常用测试策略、压测工具选型以及性能需求分析的内容。写这篇文章的初衷是昨天有同学咨询我,希望通过付费方式让我教她性能测试,可以达到独立owner项目的程度。
因此,这篇文章我想聊聊业内对于性能测试能力的定义和分层,以及在不同的阶段应该重点学习哪些知识。
性能测试能力分层
按照业内对性能测试工程师的要求以及在实际工作中要做的事情,结合我自己的工作经验,性能测试的能力分层可以参考下面的表格:
岗位分级 | 必备技能 | 角色定位 | 关键任务 |
初级 | 1、性能测试基础理论2、熟练使用压测工具 | 脚本执行工具人 | 1、能写脚本2、看得懂监控指标 |
中级/高级 | 1、性能测试基础理论2、熟练使用压测及监控工具3、对业务有不同程度的了解 | 一定的独立负责需求能力 | 1、能写脚本造数据2、看得懂监控指标3、不同程度的需求分析能力 |
资深 | 1、丰富的理论知识2、掌握各种压测监控分析工具3、对业务场景有足够的了解4、对被测系统有足够的了解 | 1、独自owner复杂项目2、指导团队同学性能测试工作 | 1、owner项目2、事前评估事中验证事后参与定位优化 |
专家 | 1、丰富的理论知识2、根据不同情况灵活应用各种工具3、对业务和技术架构有足够的了解4、能评估能规划能定位能分析能优化 | 一站到底 |
下面是关于上表中部分描述的释义以及个人的一些观点,仅供参考:
- 基础理论:这个应该不用解释,做性能测试的前提是你要对基础理论有一定的了解;
- 压测工具:性能落实到具体的事情上就是压测验证,熟练使用压测工具是最基本的能力;
- 监控工具:性能测试工作需要观察各项监控指标来评估分析,因此熟练使用监控分析工具也是基本能力;
- 业务场景:性能测试和功能测试没啥区别,所有的测试工具开展都是基于业务场景的,因此需要熟悉具体的业务;
- 技术架构:性能测试的测试对象是各种软件系统,因此了解系统的技术架构和各种调用依赖关系也是必不可少的;
- 评估能力:问题越早发现修复成本越低,在需求和方案评审时就评估发现风险,这是高级向资深迈步的必备能力;
- 规划能力:上面的六点能力主要集中在如何解决问题,规划能力是建设解决问题能力的底层建设和整体发展方向;
- 一站到底:对于专家岗位,我的认知是所有这个领域的问题到这里就应该都被解决,无论是技术难题还是沟通协调;
面向对象学习知识
如上图所示,性测试的对象是软件系统,服务部署于基于硬件的服务器上,测试过程中要考虑网络资源、通信协议、系统架构、服务调用关系、业务场景逻辑、代码实现原理以及各种参数配置。只有对这些影响性能的因素有足够的了解,才能说真正的做好性能测试工作。
因此在不同阶段,建议结合当前所处阶段和工作需要,以及长期的发展方向来提前学习不同的知识。对于处在不同阶段的同学,我的学习建议如下:
所处阶段 | 学习内容 | |
短期 | 长期 | |
初级 | 灵活使用工具学会分析需求 |
|
中级/高级 | 大量的理论知识常见的系统架构常见中间件原理 | |
资深 | 协调沟通项目管理 | 熟练的编码能力持续的复盘能力总结和输出能力 |
专家 | / | / |
下面是关于上表中部分描述的释义以及个人的一些观点,仅供参考:
灵活使用工具:除了压测工具,还有分析工具,监控工具等,灵活使用指的是把工具当初辅助,而不是路径依赖;
常见系统架构和中间件:上文解释过,如果不了解被测系统的架构和各种技术组件,很难分析和定位优化系统性能;
基础运维知识和编码能力:监控、日志、环境部署、交付流水线大多是运维团队负责,编码能力更多的是不被掣肘;
协调沟通和项目管理能力:复杂项目大多是多人且跨团队,工作开展除了技术,还有沟通协调和项目管理的软技能;
持续复盘和总结输出能力:从资深到专家,是需要形成自己的影响力且需要大量的工作实践和不断的复盘总结输出;
最后,至于去那里寻找这些学习的资料或者课程,建议大家自行搜索。
目前有很多专业的技术社区和主打技术课程的付费课程,自行选择即可。
不推荐找培训班,性价比低,且容易养成依赖。