背景:
场景:大部分场景下,性能测试是测试人员负责的(正所谓专业的人做专业的事)。为什么开发人员同样需要会压力测试?
- 很多小公司测试只是进行的功能性测试,然而很多bug的出现是在高并发场景下。
- 懂得性能测试,才能码出高性能的代码。
- 具备开发经验的同学,可以很快的掌握基本的性能测试(所谓性价比高)。
压测工具:
工欲善其事必先利其器:
曾几何时,一些公司上线前,为了测试服务器可以抗住多少用户访问。召集公司全员进行模拟压测,为了增大用户访问,需要每个员工开多个浏览器窗口,登录多个用户。然后在领导一声令下,一起操作(简直不要太low,哈哈哈哈)。后台开发观测服务器性能指标,嗯,感觉还不错!然而,上线后,在高并发下,系统仍然问题不断。嗯,总结原因,上线前,每个员工打开的窗口太少,需要每个人再打开更多窗口,模拟更多的用户。
大家不要认为这是一个笑话,这是很多小公司真实存在的场景(更有甚者,只进行了功能测试,直接推向市场,让上万用户使用,结果可想而知)!因为一些公司创业阶段,为了节省成本,测试都是公司其他部门员工兼职测试。开发人员也只是在单场景下,观察接口的响应时间。
压测工具比较多,大家可以根据自己的情况选择。
我在开发中,经常使用的是jmeter。
如何压测:
技能分为学习技能和使用技能。工具的使用,对程序员来说,应该是简单的。只要具备搜索的能力,可以很快的找到各类资料,上手一个工具的使用。在此,不在赘述如何安装使用jmeter,大家可以在网上搜索,一些专业测试博主写的更加的专业和全面。
再次,想和大家分享一些,开发人员一般需要关注的功能和一些指标,并帮助我们更好的提高代码性能和做好服务器配置。
配置上图的这些功能,就可以满足大家进行大部分的压力测试,更高级的可以自己进阶学习(可以根据自己的兴趣)
- CSV 配置从excel读取信息(如登陆用户等)
- HTTP默认设置,配置全局的接口(域名或IP)
- HTTP Header Manager 配置全局http header(用户登录的token等)
- Simple Data Writer-jtl 用于生成html 报告,结果更直观。
- View Results Tree 结果树
- Aggregate Report(聚合报告)重点
- Loop Controller(外循环)循环控制器
结果分析:
根据生成的报告,重点关注吞吐量和响应时间(P90,P95,P99)
P90:指后续10%的用户的响应时间比这个时间要长