vlambda博客
学习文章列表

性能测试面试题问答第一弹-基础知识




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(这个时候就需要进行分布式压测来解决问题)