性能测试准备
性能测试准备
很多人都想,做性能,直接就做了,还需要什么准备呢?
恰恰相反,测试前准备非常重要,准备工作做的好与不好,直接影响本次测试结果。
首先我先讲一个自己身上的真实案例。
项目名:APP(类似抖音)
预估用户:1000w
日活用户:100w
预估峰值:40w/h
主服务配置4*4c8g(其中包括nginx)(不晓得公司是不是穷疯了)
db配置:8*2c4g(公司是真的不想花钱了)
redis:1*4c8g
mq:1*4c8g
项目初期,大概是注册,登陆场景流浪较大,所以测出注册服务有问题且不好改动时,另起服务进行实现业务,还有某接口大并发导致redis死锁,导致mysql数据不落地,
项目中期,未发现代码中大问题,但是架构很单纯的认为我自己的电脑可以当压力机,进行测试并告知后,申请压力机两个月未果,性能计划几乎无任何进展,
项目后期,可能是项目经理急了,每天问我要测试报告,但是性能bug并未改完,so当时我也不想出报告,后期压力机申请下来,在临上线的前几天,开发告诉我,性能bug改完了,
最终在上线的前一天,执行测试,发布报告(报告数据很明显是不支持上线),
上线时不到十分钟,系统崩溃,开会时老板,架构问到不知道性能测试怎么测的,这么大的问题都没测出来,我只是顶了一句,报告没看吗?报告数据显示很明显不能上线,不看怪谁?
然后整个团队忙乎一整天才搞定(最后主服务4*4c8c;db服务8*8c16g)
简单简述下奔溃原因:
1、登录、注册流量过大,什么锁,忘了,持有时间太长
2、峰值计算偏低,预估峰值1500/s实际1w/s
3、部分场景测试过程未覆盖,服务未作处理查询数据过大
4、部分操作导致sql服务io堵塞,导致主服务cpu爆满
5、未作限流、容灾措施
还有很多,不一一介绍了
出现这些问题最根本的原因:
1、测试工作不重视,整个测试过程都感觉是测试的事
2、测试准备工作不足,从峰值预估,场景覆盖,以及开发性能bug修复能力等等
3、公司太抠(运维都舍不得请,临上线前请了一个,技术还不如我一个测试的)
从这个实例,应该可以看出性能测试的重要性,以及复杂度,而不是单纯用工具加点并发就完事,尤其是新项目或更新速度较快项目,如没有足够的资金支持,那性能对于这个产品的未来也是有很大影响,接下来,简单讲讲性能测试的测试准备。
1、基准测试
对于任何点都要有怀疑的心态,而不是说这个接口估计没人用,就不做测试了,呵呵!!!
2、项目部署情况
对于我的那份失败的项目经验,因为疫情,整个部署情况,我丝毫不知,直到上线前几天才知道,但凡知道的早一点,也许崩的不会那么惨
3、流量问题
流量问题要跟运营,产品,运维综合讨论,如不做优化时,如何限流,如何扩容等等
4、团队性
性能测试不是一两个测试就能干的了的,需要整个团结去配合,多测,总能测出点问题,尽量把问题消灭在Test中
5、这点建议送给那些中小企业老板
如果您的产品是面向大众用户,请重视性能测试,否则轻则程序奔溃,倾家荡产,重则家破人亡。
公众号:bug终结者之王者归来

浙公网安备 33010602011771号