Skip to content

开篇词为什么每个测试人都要学好性能测试?

你好,我是周辰晨,欢迎来到《说透性能测试》。

我从事测试工作 8 年,曾就职于京东、平安、易果生鲜等公司,目前在某大型数据科技公司担任测试专家,主导全链路性能测试及测试平台开发相关工作。其间,我通过问题总结出的种种单点经验逐渐转变为自己的方法论,我也渐渐跳出了原来对性能测试的局部认知,开始从全局的视角来看待性能测试。

像京东这样的头部互联网公司,网站承载着数以亿计的客户群,自然对性能有着很高的要求。在京东的工作也让我对性能测试有了更深的理解,性能测试并不只是要一个结果,更多的是要从部署结构、代码链路、业务上下游等多角度来综合考量

后来,我又经历了从 0 到 1 搭建性能测试体系的全过程,保证了双十一峰值期间 500 万下单量下 App 的正常运转;同时,这套测试体系也能够有效承接每分钟 150 万的访问量。

为什么要学性能测试

目前,最成熟的性能测试从业者一般都分布在各大互联网公司,这些公司对性能有着切实的需求,也具备深耕性能测试技术的土壤,所以往往能培养和聚集一批优秀的性能测试从业者。

那是不是说,其他公司就没有性能测试需求了呢?并不是的。

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

我们来看一则快手的招聘信息,其中就明确要求求职者有性能测试的相关经验。

招聘信息来源拉勾网

我也看到很多测试同学会在简历上写:"熟悉 JMeter 的基本使用和性能测试。"

但当我在面试时问:"性能测试的基本过程是什么?"很多人说"我就是用 JMeter 做了脚本",至于"如何监控数据?""需要监控哪些数据?"这样的问题,回答就更是模糊不清了

下面我列举了几个其他的常见问题,你也可以对照自检:

  • 只会使用 JMeter 但执行却不规范。在性能测试过程中,工具使用不恰当会影响到性能测试的结果。我见过很多因为工具使用不当导致的客户端瓶颈,让处理能力未达到预期的情况。很多测试没能及时发现是工具的原因,导致自己的专业能力备受质疑。

  • 不会制定有效的性能测试目标。如果不会制定有效的性能测试目标,那测出来的数据也没有什么参考价值,因为你不知道能不能满足上线需求,也不能准确地评估线上风险,做完了性能测试依然留有一大堆问题。

  • 不会定位和分析性能测试结果。测试脚本得到的数据并不能直接用来分析系统瓶颈,你只有通过监控去观察系统存在的异常点,然后根据异常点来重点监控相关组件,由表及里、层层深入才能找到根本原因。

事实上,现在很多人做性能测试只是在用工具写脚本、跑压测,最后出来一个结果,至于什么是性能测试,性能测试的过程是什么样的,性能测试目的是什么,缺少系统性的认知。

性能测试真正的价值,并不在于你用工具完成了一份报告,而是通过对过程和结果的分析找到症结,帮助团队有效提升产品性能,比如提升了多少 TPS,降低了多少响应时间,节约了多少硬件成本,等等。

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

课程设计

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

因此,本课程注重实战,我将以真实的互联网使用场景为导向,帮助你建立一个体系化的性能测试认知,分工具使用、场景分析、监控搭建和问题定位分析实践 4 个模块,为你全面展示性能测试的整个过程。

模块一:性能测试的工具原理与使用。JMeter 是目前最流行的性能测试工具之一,它具备较为完善的基础功能,还具备丰富的可拓展性,因此这一模块我将带你玩转 JMeter。

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

模块二:性能测试目标与场景分析。这个模块可以开启你从使用工具做性能测试到专业化性能测试的进阶之路。

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

模块三:分层监控体系建设。这一模块的重点是监控和问题定位,包括如何做硬件监控、系统链路监控,如何打造可视化的监控报表。监控是性能测试必要的步骤,是你发现性能问题的"眼睛"。

模块四:性能分析优化实践。我在前面提到,性能测试的标准常常是主观的,过往经验有时候不能照搬。因此,我会从服务端、中间件、数据层三个角度带你了解如何定位和优化问题,希望你看完以后可以结合自身工作场景进行性能调优。

很多公司担心直接在生产环境进行性能测试会影响用户体验、污染线上数据,其实这些都不是问题。我会从线上全链路性能测试的开展、组织和注意事项等多个维度来展开介绍,为你更好地实践提供思路。

讲师寄语

测试需要掌握越来越多的技能。对你来说,能多学会一门技能就可以胜任更多的工作,更可以"去同质化",拥有更强的竞争力。

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

希望这门课可以帮助你成为一名更优秀的测试工程师,将工具的使用、性能需求的梳理、监控的搭建、问题的定位灵活应用到你的工作中去,也欢迎你在留言区和大家分享你成功的喜悦。