性能测试面试题问答第一弹-基础知识
1.性能测试的应用领域有哪些?
能力验证:通过实际的测试结果证明自己系统的预期能力
瓶颈分析:通过一系列的测试手段发现系统存在的性能瓶颈(并发,负载,压力,失效恢复)
性能调优:通过一系列的技术手段优化系统性能,包括响应时间,吞吐量,资源利用率
容量规划:为了符合未来的规划预期(用户数,市场占有率),对资源做相应的调整。
2.交付一个性能测试项目,请阐述你的性能测试流程
1:分析需求
2:制定测试计划和方案(人力资源,时间资源,测试机器资源)
3:设计性能测试场景和用例(并发,负载,压力,稳定性测试)
4:准备用户数据(如何确定用户并发数)
(1)线上的注册用户数的10%做测试环境的在线用户
(2)根据高峰时间段和业务量,计算平均并发和峰值并发
5:设计性能测试脚本(jmter或者lr)
(1)线程,请求,关联,断言,参数化,报告
(2)不同的线程组设计不同的测试类型
6:运行,监控测试数据
jmeter监听器,jtl数据,grafana+jmeter,非gui
7:分析性能瓶颈
吞吐量瓶颈,响应时间瓶颈,资源利用率瓶颈
8:性能调优
(1)吞吐量调优:中间件,jvm,网卡带宽
(2)硬件调优:cpu,磁盘,IO,TCP连接,swap内存
9:出具性能测试报告和总结
3.jmeter如何设计性能测试场景?
并发测试:基础线程组(强调单位时间的并发,不存在绝对并发)
基准测试:反复对比结果,验证调优结果是否通过(tps是否提升,响应时间是否下降)
负载测试:持续不断地增加负载,发现性能瓶颈(阶梯加压线程组,Concurrency Thread Group)
并发用户模式的负载:不断增加并发用户数,发现瓶颈
吞吐量模式的负载:不断增加每秒请求数(rps)对服务端施压,发现tps瓶颈
压力测试:tps瓶颈点上持续负载
稳定性压力测试:tps保持高压稳定。一般取最大tps的80%持续运行
破坏性压力测试:目的是只需要服务端出现异常
失效恢复测试:出现异常之后,系统可以很快的恢复
容量规划测试:50万,高峰时间段2小时
4.解释常用的性能指标的名称与具体含义
吞吐量
hps:点击率
rps:每秒请求数
qps:每秒查询接口数
tps:每秒完成响应的请求数
响应时间:包括页面渲染时间,tcp连接时间,sql查询时间,服务端处理时间
cpu利用率:1-系统Idle(空闲比)的CPU时间占比
5.什么是集合点?设置集合点有什么意义?jmeter中如何设置集合点?
1:设置集合点是为了让线程尽可能在同一时间点发起请求
2:jmeter定时器中有集合点
6.jmeter集合点的等待时间怎么设置?
等待时间=0,线程数达不到集合人数就会一直等待
等待时间>0,线程数在等待时间范围内集合发起
7.什么是压力测试?有哪些压力模式?
1:压力测试指的是通过单位时间内不断地向服务端发起请求,从而给服务端施加压力,测试系统性能
2:压力模式有
并发用户模式:从用户角度来衡量压力(不断增加用户)
吞吐量模式:从服务端角度衡量压力(不断增加请求数)
8.你在性能测试中遇到哪些性能问题?
响应时间突然变长:检查tomcat连接数
tps毛刺过多:ramp up值过高,压力过大
tps突然出现断崖式下跌:防火墙拦截,tcp连接中断
进程无缘无故失踪:swap空间耗尽,触发了oomkiller
内存溢出:jvm内存空间不足
9:tps无法上升原因有哪些?
1.网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,就会造成网络资源竞争,导致服务端接收到的请求数达不到服务端的处理能力上限。
2.连接池
可用连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。
3.GC
如果堆内存分配的不合理,就会导致频繁的gc,gc会导致线程暂停。尤其是fullgc,会造成线程长时间暂停
4.数据库配置
高并发情况下,如果请求数据需要写入数据库且需要写入多个表的时候,数据库的最大连接数不够,或者写入数据的SQL没有索引,或没有主从分离、读写分离,就会导致数据库事务处理过慢,影响到TPS。
6.硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)
7.压力机
单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,会影响TPS(这个时候就需要进行分布式压测来解决问题)