1、提起性能测试,你的第一反应是什么?

当提到性能测试,你的第一反应是什么?是不屑一顾,认为它很简单,没发展前途、没技术含量?还是觉得它太难了,高不可攀,每当遇到系统的疑难杂症时,抓耳挠腮,无从下手?

很多IT从业人员,认为"性能测试仅仅只是测试的工作,会用压测工具,出一份测试报告就完事了"。

在我过往的工作经历中,我也看到过很多测试同学在简历上写着:“熟悉 JMeter 的基本使用和性能测试。” 但当我在面试时问:“性能测试的基本过程是怎样子的,你是如何开展性能测试工作的?”很多人会说“就是用 JMeter 做一下脚本,得到了一堆数据,整理出一份报告就行”,至于”如何监控数据?“、”需要监控哪些数据?“、”为什么要监控这些数据“,”如何从数据中分析是否存在性能瓶颈“这样的问题,回答就更是模糊不清了。

下面我列举了几个常见问题,大家可以自行对照自检一下:

  • 只知埋头执行,但不清楚如何制定与评估性能测试目标是否合理有效。试想一下,如果不会制定有效的性能测试目标,那测出来的数据也没有什么参考价值,因为你不知道能不能满足上线需求,也不能准确地评估线上风险,做完了性能测试依然留有一大堆问题。
  • 认为掌握了性能测试工具就等于掌握了性能测试,且工具使用不得其法。在性能测试过程中,工具若使用不恰当会极大影响到性能测试的结果。我见过很多因为工具使用不当导致的客户端瓶颈,让处理能力未达到预期的情况。很多测试没能及时发现是工具的原因,导致自己的专业能力备受质疑。
  • 应付任务式开展性能测试,报告中堆砌了一堆指标数据,但并不明白数据中的关系,不会定位和分析性能测试结果。性能测试真正的价值,并不在于你用工具完成了一份报告,而是通过对过程和结果的分析找到症结,帮助团队有效提升产品性能。如提升了多少 TPS,降低了多少响应时间,节约了多少硬件成本,等等。性能测试得到的数据并不能直接用来分析系统瓶颈,你只有通过监控去观察系统存在的异常点,然后根据异常点来重点监控相关组件,由表及里、层层深入才能找到根本原因。

上述指出的这些问题,归根结底是:由于现在很多人做性能测试只是在用工具写脚本、跑压测,最后出来一个结果,至于什么是性能测试,性能测试的过程是什么样的,性能测试目的、价值是什么,缺少系统性的认知。而行业中相关资料良莠不齐,参考价值不大,又影响了个人的职业发展和意愿。

2、为什么要学性能测试?

目前,大部分专业的性能测试从业者一般都分布在各大互联网公司,这些公司对性能有着切实的需求,也具备深耕性能测试技术的土壤,所以往往能培养和聚集一批优秀的性能测试从业者。那是不是说,其他公司就没有性能测试需求了呢?并不是的。

这几年,测试开发这个职位火了起来,许多公司招测试时都是在招测试开发。虽然招聘的不是专职的性能测试人员,但任职要求水涨船高,往往都需要你能够进行非功能测试,如性能测试、自动化测试。

所以对于你来说,学习高阶技术不仅在于提效,更在于能在学习过程中,了解更新的思想、更先进的理念,能对业务问题有更深刻的认知。从而在每次弯道超车时,都能知他人之不懂,擅他人不所长

如今行业竞争愈发激烈,测试人员需要掌握越来越多的技能。对你来说,能多学会一门专业技能就可以胜任更多的工作,更可以“去同质化”,拥有更强的竞争力,拥有更多就业选择和升职加薪机会

3、性能测试是个专业活,覆盖多方面知识

性能测试并不只是要一个结果,更多的是要从部署结构、代码链路、业务上下游等多角度来综合考量。

事实上,性能测试不仅包括测试,还包括监控、分析和调优。就像看病一样,既要有诊断,还要有治疗。测试是初期预判,分析是调优的过程,调优则是分析的目的,这三者首尾衔接,缺一不可,只有将这三个环节加起来,性能测试才有价值。

而且,性能测试作为非功能测试,是一个非常有价值、有成就感的工作,当你遇到性能瓶颈时,不是简单地说“去硬件扩容”。如果你的建议不只是简单地增加服务器成本,而是能够通过自己的定位和分析,以及一轮轮的调优和测试提升系统处理能力,一定更能够彰显你的技术视野,体现你工作的价值。

比如,知道系统的响应时间很长是不够的,我们还要知道如何优化响应时间,以及到底要优化到何种程度。然而摆在很多人面前的问题是,道理我都懂,可我就是不会分析、调优啊!

因此,为了帮助广大测试从业同学,以及想系统化提升性能测试专业能力的同学们,特新开设了一个性能测试专栏课程:《说透性能测试:每个测试人都能学好性能测试》

在这个专栏中,作者将自己的性能工作经验以及所吸取的经验教训凝结成了一套体系化知识。打破传统观念,告诉你性能测试的真正含义和内容到底是什么,并通过实际场景,一步步教给你分析场景的思路:从何处入手?都有哪些环节?每个环节中要注意哪些点?用具备指导性的理论、以及经过实践验证的方法论让你获得工作上的认同和产生价值回报。

4、性能测试专栏是如何设计的?

性能测试中的很多标准其实都是非常主观的,网上有很多推导公式、二八原则之类的概念,如果不结合业务实际,盲目地学习,然后把这些作为性能测试的标准打开方式,很可能是有害无益的。

因此,本课程注重实战,以使用场景为导向,帮助你建立一个体系化的性能测试知识体系,专栏共分七大模块,不仅包括完整的服务端性能测试,还覆盖Web前端性能测试、App客户端性能测试、PC客户端性能测试、一个专栏,全端覆盖。

1、模块一:性能测试工程(开篇破冰):3节课

在第一个模块中,作者将利用3节课的时间,澄清性能测试常见误区以及讲解性能工程的基础概念、难点、痛点、包括性能测试企业完整流程、性能测试体系演进以及建设路径、需要具备哪些方面的能力,通过以终为始,帮助大家开篇建立正确的性能测试认知观。

2、模块二:服务端性能测试(内功心法):18节课

在第二个模块中,是开启你从普通测试到专业化性能测试的进阶必备之路。

在这个模块,共安排了18节课,我会聚焦正式开始性能测试之前应当明确的事情:如何制定性能测试指标;参考数据有哪些,怎么获取;常见的性能测试场景有哪些,如何通过这些场景来提高性能测试的覆盖率,等等。这些都是性能测试方案的组成部分,只有制定了正确的性能测试方案才能做出有效的性能测试。通过这一模块的学习,你可以理解性能测试的每一步,而不只是机械地执行上级派给你的任务。

除此之外,课程还包括了服务端的基准测试、并发测试、负载测试、稳定性测试、容量规划测试、全链路测试、中间件性能测试、网络性能测试、流量录制回放等各类性能测试如何开展、实施方法等。

3、模块三:服务端性能测试(工具实战):19节课

在模块三中,重点以工具实战为主,将以JMeter作为主线,讲解性能测试工具的方方面面,JMeter 作为目前最流行的性能测试工具之一,它具备较为完善的基础功能,还具备丰富的可拓展性,因此这一模块我将带你玩转 JMeter。

你在这里不仅仅能学到如何使用 JMeter开展性能测试,还能学到 JMeter 的二次开发和调用 JMeter 的 API 完成性能平台开发的基础步骤。二次开发可以让你了解如何通过 JMeter 提供的接口进行拓展,实现自己的定制化需求,而掌握平台化的操作可以极大地提高团队协作效率。

通过性能测试工具的实际操作演练,对应模块二中性能测试内功心法的前后逻辑关系,以便确保工具的使用及结果是为性能测试需求指标和性能分析报告而服务的,而不是浮于表面的“炫技”。

4、模块四:服务端性能测试(监控调优):11节课

这个模块是性能测试的难点与核心,两大重点:

  • 分层监控体系建设:监控和问题定位,包括如何做硬件监控、系统链路监控,如何打造可视化的监控报表。监控是性能测试必要的步骤,是你发现性能问题的“眼睛”。
  • 性能分析调优实践:在前面提到,性能测试的标准常常是主观的,过往经验有时候不能照搬。因此,我会从服务端、中间件、数据层三个角度带你了解如何定位和优化问题,比如实际的瓶颈判断的过程是怎样的,怎么分析出根本的原因,如何从问题表象定位到热点方法,探究追溯问题本质,如何提出具体的解决方案。

5、模块五:客户端性能测试(Web端):15节课

模块五以Web前端性能测试为主,按照顺序依次讲解Web前端性能体系总览、前端性能测试基本概念、前端性能测试常见场景、Web前端性能指标获取(白屏、卡顿、网络延迟)、数款主流Web前端性能测试工具使用、前端性能监控体系建立、Web前端调优分析、Web前端性能专项如何开展等。

6、模块六:客户端性能测试(App端):14节课

模块六以App客户端专项性能测试为主线,包括App客户性能测试工具大全、App常见性能指标获取、涉及内容有App启动时间专项、CPU占用率专项、内存消耗专项、流量消耗专项、流畅度FPS专项、App弱网测试专项、UI渲染测试专项、以及App性能测试工具自研等相关内容。

7、模块七:客户端性能测试(PC端):7节课

最后一个模块重点讲解PC客户端性能测试,包括常见的PC客户端性能瓶颈、PC瓶颈识别的方法与分析技巧、PC客户端性能优化的原理与方法。

内容包括如何分析生成的转储文件(DMP)和日志数据,如何结合实际案例,利用DebugDiag、WinDbg等工具分析解决内存泄漏、进程崩溃等常见问题、如何找出潜在的问题根源等。

作者寄语

我希望用这门课把性能测试的全过程讲透给你听,不仅带你玩转工具,学会制定一个有效的性能测试方案,更在把工具做到极致的基础上,和你分享如何监控数据才能迅速定位问题,如何做性能调优,攻克性能测试的重难点。

也希望这门课可以帮助你成为一名更优秀的测试工程师,将性能需求的梳理、工具的使用、监控的搭建、问题的分析定位灵活应用到你的工作中去。