高级性能测试课程

1.性能测试应用领域有哪些

能力验证:乙方通过性能测试向甲方证明自己所陈述的能力,出具报告
瓶颈分析:能力验证过程中发现性能瓶颈,找到性能问题
性能调优:针对发现的性能瓶颈和问题做调优
容量规划:着眼于未来。为将来可能出现的用户暴增做提前规划

2.性能测试三个基本思路是什么

测什么:了解性能需求,了解项目架构,了解业务内容
怎么测:用例设计,方案设计,场景设计,脚本设计运行
对不对:数据整理,需求对比,经验判断

3.交付一个性能测试项目,请阐述你的性能测试流程

了解性能需求
了解项目组织架构(mysql+nginx+tomcat+java....)
熟悉业务流程
设计用例和方案(并发数设计,测试场景设计)
准备测试数据(csv 参数化,jdbc...)
设计测试脚本(线程组设计,参数化,业务关联,断言)
运行观察脚本,获取性能数据(监听器,非 gui 的 html 报告...)
性能瓶颈分析(tps 衰减,响应时间异常,超时,内存泄漏)
性能调优(cpu 调优,内存调优,磁盘调优,网络调优...)
性能测试回归(直到测试结果满足需求)
出具测试报告
持续监听(grafana+influxdb)

4.性能测试类型有哪些?

并发测试
多线程在单位时间内同时发起单次请求,观察响应时间(注意集合点)
负载测试
持续不断的增加压力(并发用户/每秒请求),观察 tps 和响应时间的变化趋势,找到瓶颈点(性能衰减点)
基准测试
基准并发
基准负载
用并发基准点做一次简单的脚本测试,得到一个基线,为下一次的回归做理论依据
压力测试
稳定性压力测试
脚本以最大压力的 80% 做持续运行(1h,1d,1w)
破坏性压力测试
不考虑服务器的稳定性,直接以极限压力测试,目的是破坏服务器,直接找到异常(内存溢出,超时)
失效恢复测试
系统在出现异常之后,能否及时恢复

5.描述一下 tps 和 rps 指标

rps:request/persecond 每秒请求
tps:transaction/persecond 每秒传输(每秒处理)
rps 是可变的,不论是并发用户还是单位请求数,都会影响到 rps
tps 是有最大值的,衡量了服务器的性能瓶颈。tps 到达瓶颈点之后,就会出现性能衰减
瓶颈点之前:rps 增加,tps 也增加
瓶颈点之后:rps 增加,tps 不变或者下降
压力测试都是通过不断地调整 rps(增加并发,增加请求),测试 tps

6.jmeter 的核心工作原理是什么

基于协议:http,udp,ftp
多线程:模拟并发用户,设计压力值
场景设计:模拟用户的真实使用场景,获取准确的性能数据
核心工作原理:基于各种协议,通过多线程的方式,模拟各种用户场景去施压服务器,获取性能测试结果

7.什么是 Ramp up?为何要设置 ramp up?

Ramp up:线程延迟启动,让瞬时压力不是特别大
delay:延迟分配内存
ramp+delay=延迟分配线程内存

8.jmeter 的请求压力怎么设计

同 7

9.tcp 在 OSI 模型的哪一层

tcp 在传输层
应用 会话 表示 传输 网络 接口 物理
三次握手和四次挥手

10.集合点的作用是什么,什么是强制等待和隐式等待?

线程启动是有时间的,所以请求并不是在同一时间发起
集合点的作用就是保证线程全部集合完毕,同时发起请求
强制等待:超时时间=0,一定会等到所有线程集合完毕再发起请求
隐式等待:超时时间!=0,在超时时间范围内,无论集合了多少线程都会优先发起

11.什么是关联,如何动态关联?有哪几种关联的方法?

关联:让业务上下游衔接起来
比如新增 - 修改 - 删除
再比如:登录 - 后续请求
正则关联,json 关联,jdbc 关联,登录关联,xpath 关联,css 关联

12.应用层有哪些性能指标?

TPS
HPS
RT
ERRROR
VU

13.代理服务器怎么过滤请求

抓包的时候可能会抓到很多静态资源,需要过滤掉
包含模式:.+(port).+

14.cpu 利用率的合理范围是多少

50%<sy+us<80%

15.前端性能重点关注哪几个指标

首屏时间
脚本加载时间
帧率:一帧需要花费的时间,或者每秒有多少帧(fps)

16.什么是负载测试?负载测试目的是什么?负载模型有哪些

持续不断的增加压力值(并发用户或者单位请求)
并发用户模型:阶梯加压线程组
单位请求模型:rps 定时器(基于最大线程范围内的 rps)

17.设计一个登录的并发测试场景

先确定并发用户数,假设 1000
准备用户数据(涉及 csv 参数化)
100 并发,加集合点
200 并发,加集合点
500 并发,加集合点
。。。
观察响应时间的变化趋势
基于 1000 并发的负载测试
观察 cpu 和内存的变化趋势

19.jmeter 负载测试中怎么保持 session 会话?

让登录并发和后续请求的并发保持关联性,同时又不影响后续的性能
保存登录的 session 数据(存本地或者存系统属性)。后续请求可以并发直接读取 session

20.并发测试为什么要做 csv 参数化

为了数据的合理性,用户数据都会经过数据库。绕开数据库就会忽视掉一部分性能问题

21.响应时间如何分层分析

latency:响应延迟
connect time:网络连接
服务处理时间
latency=网络时间 + 服务处理时间
剖析性能问题存在于网络还是服务端

22.你遇到过哪些性能问题?可能的原因有哪些?

out of memory :内存溢出 调整 jvm,gc 频率
connect timeout:连接超时
port aready use:端口占用
jmeter 线程阻塞:调整本机的 java 内存
tps 波动剧烈:内存,cpu,磁盘都有可能
网络 IO 过多:数据包过多,分片过多


↙↙↙阅读原文可查看相关链接,并与作者交流