做性能测试工作的人总是离不了性能测试工具,但当我们刚开始接触这类工具或者压测平台的时候,总是难免处在一种顾此失彼,焦虑又没想法的状态。
性能工程师的三大学习阶段
在我看来,对性能测试工程师本身来,多半会处在以下三个大的阶段。
性能工具学习期
性能工具学习期
JMeter 和 LoadRunner 是我们常用的两个性能测试工具。曾经有人问我,应该学 JMeter 还是 LoadRunner 呢?我反问的是,你学这样的工具需要多久呢?一般对方因为初学并不清楚要多久,然后我会告诉他,如果你是认真努力的,想要全职学习,那么我觉得一个工具,纯从功能的使用的角度来说,自学两个星期应该就差不多了。如果你是在工作中学习,那就更简单了,工作中需要什么就学习什么,不用纠结。
而应该纠结的是什么呢?当你把 JMeter、LoadRunner 的基本功能学会了,你会发现这些工具其实就做了两件事情,做脚本和发压力。
但问题在于,脚本的逻辑和压力场景的逻辑,和工具本身无关,和业务场景有关。这时你可能就会问,场景怎么配置呢?
这才进入到了另一个阶段。
通常在这个阶段的时候,你会觉得自己有非常明确的疑问,有经验的人可能一句话就可以指点你了,解决掉你的疑问,就是告诉你选择什么工具,如何来用。
性能场景学习期
第二个阶段就是性能场景学习期。我们平时在很多场合下所说的场景范围都有些狭隘,觉得场景就是业务比例,就是用多少数据。而实际做过多个性能项目之后,你就会发现,工具中的一个小小的配置,也会对结果产生巨大的影响。
比如说压力策略,应该用一秒 Ramp up 10 个用户,还是 20 个用户,还是 100 个用户?这应该怎么判断呢?
比如说,参数化数据应该用 100 条,还是 100 万条?还是有确定的值呢?有人说根据场景配置,可是根据什么样的场景怎么配置才合理呢?
比如说,在执行场景时应该看哪些数据?压力工具中的 TPS、响应时间这些常规数据都会去看,其他的还要看什么呢?这就涉及到了监控策略。
再比如说,业务应该用什么样的比例设置到压力工具中?有人说直接在线上做测试不是挺直接?但是你知道什么样的业务可以,什么样的业务不可以吗?如何控制线上的性能测试?
在性能场景学习期这个阶段,你关心的将不再是工具的使用操作,而是如何做一个合理的性能测试。你可以学会调整业务比例,并设计到压力工具中;你可以学会参数化数据的提取逻辑;你可以学会场景中要观察哪些数据。
按照这个思路,再做几个项目,你就会慢慢摸着一些门道。
性能分析学习期
学会使用工具了,也有了场景设计的经验,通过监控工具也拿到了一堆大大小小的数据。可是,数据也太多了,还在不断的变化。我又怎么判断性能瓶颈在哪里呢?
做性能的人都会有这样的一个茫然。当你把一个性能测试结果发给了别人,别人会顺理成章地去问你:“响应时间为什么这么长?有没有优化空间?”
听到这种问题,你有没有无助的感觉?心里台词是:“我怎么知道?”但是嘴上却不敢说出来,因为似乎这是我应该给出的答案?
但是当你尝试给出答案时,你就进入了一个大坑,对这个问题做出回答,近乎一个无底洞,需要太多的基础知识,需要很强的逻辑分析,需要清晰的判断思路。
如果你到了这个阶段,你可能会发现自己走得非常痛苦,好像自己也不知道自己会什么,不会什么。要说工具吧,也完全会用,场景吧,也会配置,但为什么就是不会分析结果,不会整理数据,不会下结论呢?
但实际上&#