性能测试重点梳理
1. 性能测试的测试流程
1)分析性能的需求==》需求从哪里来的?==》① 业务和产品提出的 ② 测试提出的 ③ 客户提出的
2)执行性能测试的方案和计划,搭建性能测试环境
3)编写对应的性能测试用例 ==》设计对应的性能测试场景
4)在jmeter里面自检接口和开发性能测试脚本
5)执行性能测试
6)分析性能瓶颈,给出性能调优建议,得出性能测试报告
2. 性能测试当中的并发测试,负载测试,压力测试,失效恢复测试
1)性能测试常见的类型:并发测试,负载测试,压力测试,失效恢复测试
并发测试==》所有的用户在同一时间请求同一个接口(瞬间的)==》秒杀、抢红包
负载测试==》通过不断的增加用户和增加请求对服务器施加压力,找到瓶颈点和拐点==》比如,用100并发线程数持续加压5-10分钟
压力测试==》又称为稳定性测试、破坏性测试==》找到瓶颈点和拐点后,通过80-100%的TPS去持续进行施压30分钟,1个小时,2个小时,12个小时,24个小时等等,看看系统是否有内存泄露和内存溢出等问题
失效恢复测试==》主要是检查系统在出现故障之后,能否自动恢复到正常状态,以及恢复的过程是否正确,数据是否完整等
3. 并发测试里面用户的概念
1)注册用户数 ==》50000个人注册
2)在线用户数 ==》5% ==》2500个人在线
3)并发用户数 ==》并发度1-5%*2500 ==》25=125个并发
【面试题】你在做并发测试的时候,怎么得到最佳或最优的并发用户数(并发线程数)
答:我会通过阶梯式加压的方式去进行测试,比如20-40-60-80-100-120-140-160,当接口响应时间不超过3秒,接近3秒,并且TPS最优,接口无报错,此时对应的并发线程数就是最优的并发用户数
TPS的计算公式:TPS=并发用户数/接口响应时间
注意:并发用户数并不是越高越好,并发用户数越高,带来响应时间也会增加,以及错误率也会提升
4. 性能测试的指标
1)性能测试的目的:不断的增加用户和请求对服务器施加压力,看服务器的性能表现
2)性能测试的指标
① TPS(transaction per second) ==》每秒处理的事务数 ==》瞬间 ==》可以使用jp@gc - Transactions per Second插件来监听
② 吞吐量(throughput)==》网络上行下载的数据量总和 ==》是平均的TPS ==》可以在聚合报告里面查看
③ QPS(query per second) ==》每秒SQL语句的查询数
④ RPS(request per second)==》每秒的请求数
⑤ HPS (hists per second)==》每秒点击率
⑥ RT (response time)==》接口的响应时间
a、从客户端发送接口请求到服务器的时间 T1
b、服务器处理请求的时间 T2
c、服务器把处理好的请求返回给到客户端的时间 T3
d、客户端把接口响应数据渲染到前端页面的时间 T4
在jmeter里面的接口响应时间=T1+T2+T3
⑦ 事务
a、打开cms输入用户名和密码--点击登录 ==》这是一个事务 ==》1TPS=1QPS
b、打开cms输入用户名和密码--点击登录--添加用户--修改用户--删除用户 ==》也是一个事务 ==》1TPS=4QPS
结论:处理单接口事务的时候TPS和QPS是相等的,处理多接口事务的时候TPS和QPS是不相等的
⑧ 错误率 ==》事务的错误率 ==》不能报错
TPS是衡量服务器好坏的唯一指标,TPS越高服务器性能越好,TPS越低服务器性能越差
5. 并发测试
1)相对并发测试:测试出来的数据不是很准确
2)绝对并发测试:所有的用户在同一时间请求同一个接口 ==》添加 同步定时器 (集合点)
6. 单接口场景和混合场景负载测试
1)并发用户模型:不断的去增加用户数对服务器施加压力,站在用户的角度去思考问题
2)吞吐量模型:不断的增加请求出对服务器施加压力,站在服务器的角度去思考问题
单接口场景:登录接口
混合接口场景:登录接口+查询接口 ==》登录查询业务
单接口场景的TPS一般比多接口的TPS要高多
7. 压力测试和性能测试需要关注的指标
1)业务指标:TPS、接口响应时间(接口平均响应时间,90%line)、错误率
2)硬性指标:CPU和内存的使用率低于70%,还有网络IO和磁盘IO
参考连接:https://www.cnblogs.com/xiaoshubass/protected/p/16352846.html
业务指标主要关注了:接口的平均响应时间、90%line、吞吐量tps(系统每秒处理事务数)、错误率
资源指标主要关注了: cpu、内存、磁盘、网络(i/o)
应用指标主要关注了:如空闲线程数、数据库连接数、GC/FULL GC次数、函数耗时等。
前端指标主要关注了:如页面加载时间、网络时间(DNS、连接时间、传输时间等)
我们当时规定的tps必须要达到270/s以上,接口的平均响应时间要小于3秒,错误率为0%,CPU和内存的使用率是需要低于70%以下的
8. 通过jmeter -n -t XX.jmx -l XX.jtl -e -o ./report命令行做压测
参考地址:
https://www.cnblogs.com/xiaoshubass/p/16984657.html ==》先配置环境
https://www.cnblogs.com/xiaoshubass/p/17512575.html ==》使用命令进行压测
9. 性能测试结果分析和编写性能测试报告
有发参考的报告在QQ群里,自己可以去总结一下报告里面有哪些内容
10. 性能测试的面试题
1)怎么找出性能测试的拐点?
答:TPS上升到最高点开始下降,响应时间开始上升的这个点就是性能的拐点和瓶颈点
2)怎么知道服务器所能承受的最大的并发用户数
我会通过阶梯式加压的方式去进行测试,比如20-40-60-80-100-120-140-160,当接口响应时间不超过3秒,接近3秒,并且TPS最优,接口无报错,此时对应的并发线程数就是最优的并发用户数
TPS的计算公式:TPS=并发用户数/接口响应时间
注意:并发用户数并不是越高越好,并发用户数越高,带来响应时间也会增加,以及错误率也会提升
3)求出最大的tps
可以使用jp@gc - Transactions per Second插件去看最高的TPS就是可以了
TPS的计算公式:TPS=并发用户数/接口响应时间
4)你们之前公司的tps能达到多少?
答:每个接口的TPS都是不一样的,增加类的接口TPS就会高一点,查询类的接口TPS就会低一点,==》800多TPS,1000多TPS
5)什么情况下TPS等于QPS?
处理单接口事务的时候TPS和QPS是相等的
6)你们在做性能测试的时候是用的单机去压测还是用的多机(分布式)
建议回答:是用的单机去压测的
7)如果不知道并发线程数数到底取多大,怎么操作?
我会通过阶梯式加压的方式去进行测试,比如20-40-60-80-100-120-140-160
作业:
1、背诵性能测试讲解:(参考如下文或者自己编写讲解文档)https://www.cnblogs.com/xiaoshubass/p/16352846.html
2、背诵性能指标和性能bug ==》https://www.cnblogs.com/xiaoshubass/protected/p/17146923.html ==》常见的bug
3、TPS上不去的原因 ==》 https://www.cnblogs.com/xiaoshubass/p/17146837.html

浙公网安备 33010602011771号