本文关键词:性能测试学习路线
最近在知乎上看到这个题问,刚好618快到了,公司又做了一次压测,提前复习了一些相关知识,就顺手回答了下。
因为之前没有专门了解过性能测试工程师这个岗位,还特地去拉勾上查了下,不查不知道,一查吓一跳。原来高级性能测试专家的薪资待遇这么高。
火币网:45k-65k
小米:20k-40k
360:20k-40k
但是我也发现,相比于【测试开发】【自动化测试】等岗位,【性能测试】招聘的岗位数量还是比较少的,而且只有比较知名的公司在招专家岗。如果只是普通的性能测试岗,薪资待遇也差不多。
果然应了那句话,“有技术,就不怕没收入”。
但是不管是不是要往这个方向深入发展,性能测试都是我们要了解的一个知识点。
之前我整理的一份中级测试(1-5年工作经验&大厂面试资本)需要掌握的技能,性能测试也包含在里边。
一、学习性能测试要从哪几个方面去学习?
1)性能测试的基础理论(文末分享性能测试学习资源)
基础理论这块没有特别严格的定义,根据我自己的经验,一般在测试工作中主要需要了解以下四部分:
1、性能测试的方法:分为后端性能测试、前端性能测试、代码级性能测试、压力测试、配置测试、并发测试,以及可靠性测试。
2、性能测试的基本流程。
3、性能测试的场景:比如基准性能场景、容量性能场景、稳定性性能场景、异常性能场景。
4、性能测试报告的撰写。
2)性能测试的常见指标
性能三个最常用的指标是:并发用户数、响应时间,以及系统吞吐量。
具体可以参考这篇文章:《一文搞懂性能测试常见指标》
https://testerhome.com/articles/21178
3)性能测试工具
工具这块,一般需要你能熟练掌握主流的性能测试工具,并且了解一些其他的测试工具,能够根据需要选择适合工具。
1、后端性能测试工具:比较主流的有Jmeter和LoadRunner(LR)。
LR是收费的,传统企业用的多一些。
Jmeter是开源免费的,互联网企业用的多。建议可以先学会Jmeter这个最常见的工具是如何使用的。
官网链接:https://jmeter.apache.org/
2、前端性能测试工具有:WebPagetest、YSlow。
WebPagetest是用的比较多的,也是一个免费而强大的工具。
官网链接:https://www.webpagetest.org/
3、客户端性能测试工具:Perfdog、Mobileperf等;
WeTest客户端性能测试工具-PerfDog性能狗:https://wetest.qq.com/product/perfdog
天猫团队开源的PC Android性能稳定性测试工具-Mobileperf:https://github.com/alibaba/mobileperf
可以收集Android性能数据: cpu、内存、流畅度fps、logcat日志、流量、进程线程数、进程启动日志。
4、性能测试监控工具
1.Profiler。一个记录log的类,阿里巴巴集团自主开发,嵌入到应用代码中使用。
2.Jstat。监控java[/url]进程GC情况,判断GC是否正常。
3.JConsole。监控java内存、javaCPU使用率、线程执行情况等,需要在JVM参数中进行配置。
4.JMap。监控java程序是否有内存泄漏,需要配合eclipse插件或者MemoryAnalyzer来使用。
5.JProfiler。全面监控每个节点的CPU使用率、内存使用率、响应时间累计值、线程执行情况等,需要在JVM参数中进行配置。
6.Nmon。全面监控linux系统资源使用情况,包括CPU、内存、I/O等,可独立于应用监控。
7.Valgrind。监控C/C++程序是否存在内存泄漏,基于linux环境。
8.Vmmap和ApplicationVerifier。监控C/C++程序是否存在内存泄漏,基于windows环境。
9.Grafna。一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。
4)性能分析和调优
这块也是性能测试最难的部分。
这里推荐一篇阿里技术的干货:如何回答性能优化的问题,才能打动阿里面试官?
图源:阿里技术
以上,其实学会这些基础之后,对性能测试应该能够基本入门了,但想要对性能测试有更深入的认识,还是需要在工作项目中去积累实战经验,毕竟网上性能测试教程提到的实战项目,都不是成熟商业项目的性能实战。
5)其他需要掌握的知识
网络知识:熟悉网络协议如http/https、WebService、dubbo;
数据库和缓存知识:MySQL索引、MySQL慢查询、MySQL分库分表、MySQL事务与锁机制、Redis缓存、缓存击穿、缓存雪崩、热点缓存等;
服务端知识:了解分布式架构/微服务架构,熟悉server端压力/性能等方面的知识,并能开展相关工作;精通Linux管理和Shell编程,了解Linux内核相关知识、熟悉常见引发性能问题的系统参数配置;熟悉RabbitMQ、Kafka等消息中间件,可进行准确的瓶颈分析和缺陷定位;
容器环境知识:熟悉云计算相关技术产品,掌握Docker、K8s等公有云常见技术;
流量录制与回放:掌握goreplay、jvm-sandbox-repeater的部署与使用。
二、要学习哪一种开发语言?
第一建议学习python,因为python是当前主流的后端开发语言,很多公司包括:阿里、京东、美团都在用。用的公司多,就业面就更广。
当然,具体也要看你们公司的后端技术栈是哪门编程语言。
一般来说都要求【熟练掌握Python/Go/Java/Javascript等至少一种编程语言】,如果想继续往性能测试工程师方向深入发展,一般大公司还需要你有开发经验。
假如你要测java的后端服务,你肯定要对java有足够的了解,比如对Java高并发机制有深入理解,精通JVM内在机理,熟悉JVM调优的常见方法。
不然的话,根本无从下手,在性能分析的时候也会碰到很多瓶颈。
三、一个优秀的性能测试工程师,应该能做到以下:
1、对性能测试理论、流程精通,针对不同业务场景能够设计全面合理的测试案例,运用各种压测工具进行线上系统全链路压测;
2、了解各种常见的开源软件环境的安装部署,可以构建和维护项目测试环境;
3、根据压测结果,发现、定位、解决性能问题,具备性能瓶颈分析与定位能力,给出性能报告,给出调优建议;
4、主导设计研发自动化压力测试平台和针对主流压测工具的二次开发;
最后,其实性能测试特别是性能优化是一门很深的学问,我也还在不断的学习中。
如果有写的不好的地方,请大家多多指教。如果有其他想法,也欢迎在评论区和我交流。
性能测试学习网盘资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于在从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….