关于我们
TEACHER
老师介绍
李永飞
学掌门认证讲师
从测试一路走向性能工具开发的专项测试,无论你是0基础的测试人员,还是后续想突破年入30万,跟紧我的教学课程,都能轻松助你实现梦想。
Carl_奕然
资深测试开发专家、51Testing认证讲师
曾混迹于Sony(JP)、Al等企业,现就职于世界Top 200知名公司,拥有10余年互联网开发及测试开发经验,专注于Python领域、性能/全链路压测领域、自动化(WebUI、APP、接口)领域,面试培训方面创作。
INTERVIEW
专访
(回答顺序根据老师姓名首字母排列)
51Testing
目前及未来几年中,相较于其他测试岗位,性能测试岗位的需求量如何?
李永飞老师

当前受疫情影响,互联网行业盈利困难,以往的持续快速增长变得不可持续,这个状态可能会持续数年,直到疫情能完全被控制住。我们现在能感知到各行业的赚钱困难,互联网企业也不例外,会同时影响到测试行业,会对测试工程师的岗位要求更高,性能测试,测试开发(自动化测试)等会成为测试工程师的必备技能,因此性能测试岗位未来的需求肯定会比以往更多,更大。除了一部分新生行业(区块链、自动驾驶等)衍生出的新岗位需求外,还有大量岗位是普通测试工程师要求具备性能测试技能的场景。

奕然老师

从当前IT行业中,性能测试在整个测试领域中的需求量还蛮大的,尤其各个企业,对高级性能测试工程师的需求,都是求贤如渴的状态。并且,性能测试工程师的薪资也是上涨的趋势。

51Testing
一般企业中是否会配备专门的性能测试工程师岗位,如果没有,一般是什么岗位兼任?如果有,那么做专项性能测试的人员,企业一般用人的要求是什么?需要掌握哪些知识体系?
李永飞老师

现在企业按cpu、带宽流量收费,然后互联网人群瞬间并发压力大,一般中小型公司,都会要求软件项目有做系统的性能测试。但是是否配备专门的性能测试岗位要看公司的具体情况,一般来说,有6-8人的测试团队,至少会配备一名专门的性能测试人员,反正可能是兼职岗位,一般由资深的测试工程师兼任,或开发自己完成。专职性能测试工程师要掌握的要求技能不算高,属于入门门槛较低的岗位(相比于测试去做自动化、测试开发等岗位)。具备性能测试工程师经验能力,首先你要掌握理解性能测试的概念,然后你要会熟练使用一种压测工具(能满足需求即可,可以是Loadrunner、Jmeter等,甚至是自研的都可以)

然后工具会用后相当于能完成性能测试压力模拟,后面就可以分层了,初中级性能工程师,只需要将性能测试结果整理汇报出来即可,可以和开发一起分析结果,资深一点的,针对不同场景数据问题,可以分析的更透彻一点,不影响性能测试的执行。

奕然老师

这是一个好问题,也是一个很”深奥”的问题。

当前的企业,针对性能工程师岗位,分为两类: ① 大企业有专门的性能测试工程师:专门负责企业产品的性能测试。 ② 小企业/初创公司:没有专门的性能测试工程师,都是测试工程师来兼职做产品的性能测试。 这就导致了一个问题: 非专职/专业的人来做专职的事情,必定会得到不专业的结果。

我们都知道,用户是否喜欢用这个产品,除了产品的操作功能是否简单、界面视觉是否好看外, 最重要其中一点就是响应时间。

响应时间的快慢,不仅体现在代码上,还有数据库、服务器、缓存、队列,甚至与整个架构的合理性等。

所以,专项性能测试的人员需要掌握的技能,我给分为三类:

① 性能基础:性能基础知识,TPS,QPS,ResponseTime,吞吐量,并发度,并发用户等;

② 技术栈:架构流程、开发语言(java)、数据库(MySQL/MOngoDB)、缓存(Redis)、操作系统(CentOS)、监控(Promethues)、中间件(Tomcat)、队列(Kafka)…

③ 业务需求:任何性能脚本的设计,都是来源于业务方/运维方的需求。

这也是侧面反映出,为什么大企业对高级性能测试工程师的求贤如渴。

51Testing
很多企业在招自动化测试工程师时,要具备性能测试能力,这个能力要求与性能测试岗位对于人员的要求有什么区别?
李永飞老师

具备性能测试能力,就是这个公司可能没有专门配备性能测试工程师,但是还是有一些业务场景是需要做性能压测执行的(需要由专业的性能测试工程师完成),这个能力简单说就是你只要掌握压测工具的使用、结果的汇总报告即可,性能测试岗相当于是专职的性能测试人员,要求会更多一些,多的这部分,他并不一定具备很高的开发水平,多出的这部分,是他的测试数据汇总分析,问题定位这部分(当然,基本的压测场景脚本能做出来,这个也是比较初级的要求)。

奕然老师

首先,针对企业来说,想要招来的员工都是全栈测试开发工程师;但是,现实总是相反的。

招聘自动化测试,同时兼顾性能测试:也就是说,这个性能测试不是主要的,但是,又要了解一点性能测试的基础知识,例如:什么是TPS、吞吐量、响应时间、并发等。有没有在项目中实践,以及项目的规模,最后的性能测试结果,都不是很重要。

主要招聘性能测试工程师:这对应聘者的要求就很高了,需要具备的能力,

① 知识储备:一定是我上面说的那些技能(至少包含70%~80%);

② 性能分析:只会设计脚本,不会性能分析的工程师,不能独当一面;

③ 实战经验:没有实战经验,再多的理论都白搭;

④ 流量/产品影响力:性能测试,流量为王。

51Testing
在公司中做性能测试,是怎样的流程,需要哪些部门的配合?
李永飞老师

在公司做性能测试,看公司具体情况,如果系统完全在内网,服务器都是相对独立的,对带宽、硬件资源没有特殊要求,可能没有太多流程,直接测试即可。

如果公司硬件服务器同时部署了多个跨部门服务,应用软件有外网交互,这些就可能需要具体分析,找出对外的影响点,因为性能测试对带宽、硬件开销是比较大的,需要较平时使用占用更多的资源,需要提前对这些资源的主管部门进行报备,询问压测影响(时间段),一般是和运维部门沟通压测事项。

然后至于基本的测试数据制造这些,一般由测试人员自己完成,不熟悉系统的,需要对应开发进行配合完成。

奕然老师

性能测试上到老板,下到员工,横跨 产品、架构、开发、测试、运维 整个部门都需要配合。

因为涉及到跨部门合作,所以,性能测试的流程一定是规范的,详细的,但是又稍微的”繁琐”的,具体流程如下:

业务学习→需求分析→工作评估→性能模型→性能方案→评审→准备环境/设计脚本→性能监控→执行测试→调优/缺陷管理→分析问题→解决/验证问题→性能报告/结果。

51Testing
测试过程中,发现性能瓶颈时,如果做性能定位,需要具备哪些知识储备?
李永飞老师

发现性能瓶颈时,总体来说,要能分析出来瓶颈在哪个位置,这个位置越详细越好。

举例子,系统瓶颈,要能区分是应用瓶颈,还是数据库瓶颈。数据库瓶颈,是在应用数据库,还是缓存数据库,应用数据库瓶颈,是哪个操作,哪个SQL引起,能做到区分到这些,你基本上就是一个符合一名中级性能测试工程师水平了。

如果还能进一步分析到具体原因,举例子,应用瓶颈,是哪个应用(一般性能压测,一个系统可能由数10个应用提供服务)。

要做到这些,一般来说要了解整个系统的运行部署架构,同时了解系统的开发语言和依赖中间件,还有配套DB。了解系统业务业务场景的执行,会做哪些事情,比如点击登录,前端会将用户账号密码发给web服务器,web服务器会将账号密码发给应用服务器,应用服务器会执行登录逻辑,去对应db检索用户信息,要能了解这个流程,同时能掌握对应系统的开发语言则更优。然后掌握一些常用的Linux系统瓶颈定位,数据库瓶颈定位,这些是必须的,也是比较容易的(比如系统CPU、IO高,交换分区内存不足等常见问题分析定位)

奕然老师

测试过程中,如果会做性能定位,这是拉开性能测试等级的一个分界点,性能定位分析需要具备能力:

①业务压力场景;

②系统架构流程;

③服务部署流程;

④监控服务:应用、缓存、数据库、日志监控等;

⑤操作系统(CentOS);

⑥数据库;

⑦开发语言:java/C/Python/Go等。

51Testing
有人说性能调优是开发做的,那测试人员在性能测试过程中需要承担哪些工作?
李永飞老师

所有最终性能问题,都是开发解决,这个固然没错。但是举例子,如果一个性能测试工程师能快速指出性能问题所在,把问题点直接抛出来的时候,你给别人的感觉是不是不一样。举例子压测出现性能瓶颈,经过你分析,你指出是某个SQL慢引起,经过排查,是某个表的查询没有命中索引导致,你能发出这个结果到群里,和你只能发出有性能瓶颈的结果,哪个对你的升职加薪更有利一目了然。

所以我们测试工程师还是要提高技术水平,在做性能测试时,能给更多更专业的测试结果,对你自身的工作加薪升职帮助是很大的。

奕然老师

在整个系统链路中,涉及到代码级/架构级,就需要开发同学来调试; 但是,涉及到网络、资源配置、操作系统、数据库等问题,可能就需要运维、DBA等人员参与; 当然,在整个调优过程中,测试人员需要:确定问题瓶颈,协助开发定位分析、以及验证调优结果。

贯穿到整个性能流程,测试人员需要承担的工作:业务学习,需求理解(业务级/架构级),方案设计、策略制定、性能模型设计、脚本设计、数据准备、脚本执行、瓶颈定位及分析、验证调优的结果、测试报告编写及风险预估。

51Testing
“全链路性能测试” 是性能测试领域的新名词吗?它和传统意义上的性能测试有什么区别,是否能从测试场景,测试技术等相关方面给我们普及一下?
李永飞老师

可以算是个性能测试名词,和传统意义的性能测试没有区别,全链路说通俗点就是全面场景的性能测试,就是完整的业务场景的性能测试(不在是某个单一的接口压测,或者单一的功能压测),这个全,是指要业务功能场景要覆盖全,这样能更真实的模拟用户对系统的实际压力,能看出整个业务运行时,所有相关依赖系统的压力。至于测试方法,和普通性能测试没有差别,主要就是场景叠加要全,注意这一点满足需求即可。

奕然老师

“全链路性能测试”从概念提出到落地实践,也有些年了,也被业界称为 “核武器”。但是,真正能做起来的,也就是屈指可数的那些大厂了

相比于传统性能测试,全链路压测主要是在线上进行,并不是说全链路性能测试不能在线下做,只是在综合考量后,线下做的价值并不高。 在这,也例举几个不同点:

业务项 全链路性能测试 传统性能测试
业务流程改造 必须要做 不需要
流量平台搭建 必须要做 不需要
基础数据改造 必须要做 不需要
压力流量改造 必须要做 不需要
51Testing
手工测试人员如果想往性能测试方向转型,对于这些人来说,如何相对快速且有效地入行性能测试,需要具备哪些基础技能、掌握哪些工具等,这方面,您有什么好的建议吗?
李永飞老师

之前我有相关视频课,介绍普通测试人员,如何向专项测试工程师转型(点击链接可直达 ),性能测试相对来说是入门门槛较低。对编程技术没有太高的要求,能掌握基本的压测工具使用,理解接口,和掌握接口压测脚本开发即可,这块可以参考一些性能测试入门的基本课程即可。

奕然老师

有几点可以参考,也是根据初级→中级→高级路线来规划的:

(1) 知识储备:

① 掌握性能基础知识:TPS、QPS、响应时间、吞吐量;

② 学习Linux系统,如:各种操作命令,IO/Disk/CPU/Mem/Network等知识;

③ 学习性能测试工具的使用:Jmeter、LoadRunner、Locust等等;

④ 学习MySQL/MongoDB/Redis/Tomcat等知识及操作;

⑤ 学习各个应用服务:数据库应用,Java应用,缓存应用

⑥ 学习性能模型,方案设计;

(2) 项目实战: 最快的成长方式,就是在项目中历练自己,所以,如果有项目让你参与,一定要去。

(3) 网站学习: 有专业的老师讲解,会让你在学习过程中躲避很多坑,达到事半功倍的效果。

51Testing
什么行业对于性能测试要求比较高,不同行业性能测试技术有什么差别?
李永飞老师

一般来说,企业人数达到一定规模,测试人员数量大于10个以上,这时候可能会需要一名或多名专职性能测试工程师。性能测试相对于其他专项测试工程师不同,技术上来说它是通吃的,无论你是什么行业,你掌握了性能测试,都能适应。说简单点,无论你的后台服务是go,还是java,还是。Net,或者公司是互联网、或者是区块链,都不影响你的性能测试执行,因为你只需要掌握最基本的目标,就是模拟大量客户端访问对应服务端,产生真实压力即可,无需关注其他。

这也是性能测试是入门门槛低,适用性广的原因,不像自动化,可能有api自动化、gui自动化、还有安卓和ios,每个都不一样,都够你折腾研究好几年。

奕然老师

互联网行业对性能测试的要求相对较高,尤其大厂的产品:手淘、京东、美团、拼多多等; 不同行业,对性能技术的差别主要体现在:

①技术栈能力:读代码,编写性能脚本,搭建服务,监控服务,优化等;

②负载测试、容量测试、异常场景测试、稳定性测试。

51Testing
性能测试工程师的未来发展,可以往什么技能或者岗位晋升?
李永飞老师

测试工程师向上的发展空间,无外乎2条路,测试技术专家,或测试管理。 测试管理,一般也都是会从测试人员中挑选更多测试经验的同事,性能测试工程师一般来说晋升测试管理岗位,优势会比普通工程师更大,毕竟掌握了一门专项测试技能。

因此,相比较普通工程师而已,性能测试工程师的晋升发展空间就大很多了,既可以做测试技术专家,也可以做测试管理岗位,毕竟你是具备较高测试专业技能的。 然后性能测试做多了,精通了,慢慢转型测试开发(或开发),也不是没有这个可能,总之得行动起来,尝试起来。

奕然老师

性能测试工程师的未来发展方向,可以分为三个:业务路线、技术路线、管理路线。

业务路线:有QA经理、业务专家、产品经理、行业咨询专家等;

技术路线:自动化测试工程师,性能工程师,测试开发全栈工程师,性能培训讲师;

管理路线:测试开发主管,测试开发经理,测试开发总监。

EXTENSION
扩展阅读

看过本次专题后,小伙伴们对性能测试有新的认识了么?还有什么想要补充的知识或是有什么问题都可以在下方评论区交流~

有关性能测试工程师的现状,在51Testing软件测试2022软件测试行业现状调查问卷中也有体现,感兴趣的小伙伴,戳这里参与调查,还有礼品赠送哦~

另外,不知道大家还想看哪方面的知识或技术?又或者有哪位大佬有擅长的技术想要迫不及待分享给大家呢?可以微信添加or扫描二维码联系我们哦~

COMMENT
评论