一:性能测试的流程
1.找产品沟通哪些接口需要压测,需要达到什么样的预期值(TPS和响应时间)
2.编写测试方案,比如测试场景,时间计划,人力投入等
3.测试数据准备,测试账号(预估并发量),设计测试脚本(参数化,表达式,断言,控制器)
4.运行测试脚本,数据监听(响应时间,tps,活动线程),结果分析(判断性能瓶颈)
5:基本性能瓶颈做调优(tomcat线程池,jvm内存,swap内存,带宽)
6:调优之后做性能回归,和前期结果做对比,是否有明显的优化。
7:代码问题优化(自己定位或者交给开发定位)
8:性能测试报告。整理性能测试数据(包括调优之前和调优之后)
9:构建持久化的性能监听平台,监听线上的服务性能
二:性能测试中一般关注哪些指标?
1.并发用户数:同一时间 向服务器发送请求的用户数
2.响应时间:从客户端发出请求到得到响应的整个时间,一般包括网络响应时间+server的响应时间。
3.TPS吞吐量:系统每秒处理事务数,TPS越高,性能越好
4.错误率:系统在负载情况下,失败交易的概率,一般不超出千分之3,即成功率不低于99.7%
5.CPU:后台服务的所有指令和数据处理都是由CPU负责,服务对CPU的利用率对服务的性能起着决定性的作用
6.内存:检查被测服务所占用内存的波动情况,它是与CPU进行沟通的桥梁
三:性能测试的类别
1.负载测试:通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值,保持性能指标要求的前提下测试系统能够承受的最大负载,比如:100人下订单 1s,1000人下订单 2S
2.压力测试:从负载的基础上增加逐步增加负载,使系统某些资源达到饱和甚至失效,是使系统性能达到极限的状态,3000人下订单 —》4000人下订单–》5000人下订单 -〉崩溃
两者区别:例如软件系统正常的响应时间为2s,负载测试确定访问量超过1万时响应时间变慢。压力测试则继续增加用户访问量观察系统的性能变化,当用户增加到2万时系统响应时间为3s,当用户增加到3万时响应时间为4s,当用户增加到4万时,系统崩溃无法响应。由此确定系统能承受的最大访问量为4万。
3.稳定性测试:通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,使其持续运行一段时间(如7×24h),检查系统是否稳定,通常可以检测出系统是否有内存泄漏等问题
4.配置测试:是指调整软件系统的软硬件环境,从而找到系统各项资源的最优分配原则,例如安装版本更高的数据库、配置性能更好的CPU和内存等
5.基线测试:在给产品系统施加较低压时,查看系统的运状况并记录相关数做为基础参考
6.并发测试:测试多个用户同时访问同一个应用、在极短的时间内,发送多个请求,来验证服务器对并发的处理能力,比如秒杀活动
7.容量测试:评估系统在不同负载条件下的性能表现,并确定系统的容量和资源需求,以支持预期的用户数量和数据量