如何自学性能测试?

Posted 测试小牛进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何自学性能测试?相关的知识,希望对你有一定的参考价值。

阅读本文大概需要 3.8分钟。

你好,我是小牛



而且就学习成本以及跳槽涨薪技能要求等方面性价比却不如接口自动化,所以之前文章一直没写。


一般来说,以一线城市为例,工作经验三年以下,薪水15k以下,面试会被问到的性能概率并不高,除非你简历上面写了,或者你主动提到性能测试。


目前来说,一般真正做性能测试的主要集中在一些大厂,他们会有专门的性能测试工程师,来专门负责性能测试。


这种就比较专业了,薪水相对来说就很高,丝毫不逊色于开发。工作内容会涉及到全链路监控,数据库,中间件压测,性能瓶颈分析,协助开发调优等等。


而对于一些中小型企业来说,要么压根不做性能测试,要么就做的比较水,最多的就是写下脚本,使用工具,对主流程接口做下压测,生成报告,分析一些指标,主要看下TPS是否符合预期。


但是,工作中用到的不多并不意味着就没有学习的必要了,主要有两点。


一方面可以加深你对系统架构的理解,说实话,要想真正做好性能测试,需要你掌握好很多系统架构方面的知识。


像数据库,中间件,网络,系统硬件,代码能力,虚拟机等等最好都有所了解和掌握。


另一方面,就比较功利了,就是面试很加分。说实话,功能测试你做再多项目,面试也说不出什么亮点,无非就是页面加接口以及一些如何定位分析bug以及解决问题的能力。


这些东西并不是说不重要,相反我觉得这恰恰是一个测试人员吃饭的根本。但是,这个很难体现出的你的技术能力,因为它主要是靠经验获取。


测试的多了,基本上都可以做好,很难为你在谈薪中提升砝码。


接下来聊聊实际工作中如何做性能测试以及作为一个小白应该如何上手性能测试的学习?


首先,来说下什么是性能测试?简单来说,就是看一个系统在大量用户同时高并发访问下的系统表现能力,是否稳定,可靠,快速。


最经典的场景也是并发最高的就当属春晚抢红包,淘宝双11等等。


这些活动可能短时间内有上亿用户在操作,对系统的性能以及服务器的稳定性,承载能力具有相当高的要求。


性能测试直接来说就是对服务器做测试,而且是在高并发的情况下,一般会使用工具进行模拟对其进行压测。而服务器主要包括两部分,软件和硬件。


软件主要就是web容器比如tomcat,apache,数据库,缓存redis,网关nginx


硬件就包括cpu,io,内存,带宽。除此之外,服务器数量也会影响系统性能,企业中一般是集群架构。


当对一个系统在逐渐施压的时候,系统就会到达性能拐点,比如TPS下降,响应时间大大增加,失败率大大提升。


这个一般就是我们所说的系统瓶颈。至于造成瓶颈的原因其实就是木桶理论。


而组成木桶的每一块板子就是我刚刚上面提到的软件和硬件每一个指标。


所谓的性能瓶颈分析就是去分析里面每一个指标,逐一进行排查,看看究竟是哪块木板成为了系统短板。


性能调优就是根据分析的瓶颈结果去进行优化,然后再次进行压测,从而一步步提升系统的能力使得达到最优化。


接下来说下如何开展性能测试?


首先就是需求分析,熟悉压测系统,然后设计出性能测试场景,场景主要包括单场景和混合场景,最后推算出性能压测指标。


比如一个聊天系统,场景就包括一分钟内10万人在打字,20万人在视频聊天,30万人在挂机等等。


也需要考虑这些场景同时存在,然后根据这些场景指标计算出你所需要压测接口的目标TPS。


接下来就是编写脚本,目前使用最多的工具就是loadrunner和jmeter。如果你之前从来没有学习过性能测试,请直接学习jmeter,这个是目前使用最多的也是最主流的压测工具。


接下来就是执行性能测试,以及监控性能指标。执行性能测试主要是通过jmeter这个工具对接口进行压测。


而性能监控主要就是使用一些工具,监控cpu,io,数据库等指标是否符合需求。


最后就是生成系统测试报告,反馈给你的领导。


步骤很简单,就是这么几步,这里的难点在于场景分析和设计如何转化为一个合理的目标TPS,保证系统不会崩溃。


其次,当压测时系统达不到这个TPS时,如何找到系统瓶颈,进行优化使其达到目标。


一般,当监控指标不符合我们的性能需求时,一般是从请求开始进行分析,一步一步排查请求流经的节点。


看服务器硬件资源cpu,内存,磁盘io,网络等是否存在性能瓶颈,是否存在队列,线程池,连接池,线程死锁,数据库死锁,慢sql,长事务等性能问题。总之,一句话,水很深就是了。


最后,关于如何自学性能测试?


首先就是先学习性能测试理论,TPS都不知道是什么意思还玩什么。其次就是玩熟jmeter这个性能测试工具,会编写脚本。


再然后就是学习性能监控工具,命令,去学习上文提到的每一个软件硬件指标的相关理论知识。


然后去学习案例去分析掌握每一种指标可能存在的瓶颈,性能问题。最后就是找一家能用的上的企业进行实战,积累经验。



对于转行的或者在做测试的同学,如果你有什么困惑或者想了解这个行业的点。



以上,完。


推荐阅读:



以上是关于如何自学性能测试?的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter自学笔记10----性能测试基础实战

性能测试如何做全链路压测?

性能测试工具—Jmeter

正则表达式在性能测试中的应用(上)

4个月自学软件测试面进阿里!如何从功能测试转成自动化...我经历了什么

性能测试中如何定位性能瓶颈