1.什么是性能测试?
测试系统有没有性能问题
考虑时间,空间
服务端资源是否足够
响应时间是否超时
系统是否足够稳定
2.性能测试的应用领域有哪些?
能力验证:乙方向甲方交付项目时,声明项目的性能数据。
例如:向甲方声明能支撑500人1s内同时登录,响应时间在2s以内。出具性能测试报告去证明我声明的能力。
瓶颈分析:在能力验证的过程中可能会发现一些瓶颈,通过技术手段分析瓶颈,得到分析数据,为后续调优做理论依据。
响应超时:什么负载量的时候出现超时现象?
tps达到瓶颈,波动剧烈:tps瓶颈点在哪里?,在什么地方出现性能衰减?
性能调优:在得到瓶颈分析数据之后,做性能调优。
降低超时,提高tps,减少抖动。。
容量规划:基于未来。为将来的用户激增提前做准备
数据库扩容
服务端硬件优化(增加cpu,扩充磁盘,提升带宽,分布式,负载均衡。。。)
3.性能测试的核心原则是什么?
基于协议,多线程,场景设计
协议:所有的请求都是基于协议发出去 http,https,udp,tcp,mqtt
多线程:压力测试是基于java多线程原理,通过线程去模拟用户的行为
基于场景:控制器+定时器设计各种场景满足压测要求
并发场景
负载场景
稳定性
压力测试
4.性能测试基本思路是什么?
测什么:明确测试目标(明确需求)
怎么测:怎么设计场景?
测试计划,测试用例,测试方案
数据准备
参数化,表达式,断言
场景设计(并发,负载,压测)
得到性能测试结果
测试结果验证
验证结果数据是否符合预期
如果预期响应时间是3s,但是实际结果响应时间达到了5s 不合格
预期最大tps需要达到500,但是实际最大的tps只有300 不合格
5.测试哪些关键场景?
浏览器层面:
web端和app端(H5页面)
关注首屏时间(页面打开到完全呈现)
脚本加载时间,cpu占用,fps频率(帧频率越高,流畅度越高)
接口层面
权限划分
普通用户权限(非常多的的用户)
大并发场景:包括查询,表单提交
数据量也需要考虑(电商平台,门户网站)
负载场景:用户长期在线访问,对资源的要求会很高
管理员权限(几个用户)
大数据量的场景(管理几十万用户数据)
列表查询时间,分页时间
数据下载(excel,数据导出)是否会内存溢出
mysql数据库是否会死锁,sql查询是否异常
超管(1个)
大数据量的场景(管理几十万用户数据)
6.什么是集合点?设置集合点有什么意义?jmeter中如何设置集合点?
集合点更多的运用在并发测试
为了让压力尽可能的落在同一个时间点
7.你在性能场景设计中用到哪些方法?
参数化,关联,断言,jdbc连接
8.如何识别性能瓶颈?
1:随着负载不断升高,tps也是不断升高的,正常逻辑
2:随着负载不断增加,tps不再增加,甚至下降。表示单位线程的tps实际在衰减。tps的瓶颈点
9.什么是内存溢出
1:运行需要的内存大于空间剩余内存;会出现内存溢出
2:垃圾无法进行GC;会出现内存溢出
10.什么是负载?有哪些负载模式?
负载就是压力
1:用户模式。不断增加的用户数带来的压力
1个用户1s内发起20个请求,rps=20/s
2:请求模式,不断增加的请求数带来的压力
10个用户,1s用户1s内发起1个请求,rps=10/s
不能单纯的通用用户去衡量压力,直接通过每秒请求数去衡量压力。直接从服务端考虑
11.压力工具的工作原理是什么?
jmeter工作原理:基于协议,通过多线程的方式模拟用户行为,设计各种场景压测服务端,得到性能数据,分析性能瓶颈
12.交付一个性能测试项目,请阐述你的性能测试流程
1:明确测试需求
2:基于需求设计测试用例,测试方案,测试计划
3:准备测试数据,测试账号(预估并发量),设计测试脚本(参数化,表达式,断言,控制器)
4:运行测试脚本,数据监听(响应时间,tps,活动线程),结果分析(判断性能瓶颈)
5:基本性能瓶颈做调优(tomcat线程池,jvm内存,swap内存,带宽)
6:调优之后做性能回归,和前期结果做对比,是否有明显的优化。
7:代码问题优化(自己定位或者交给开发定位)
8:性能测试报告。整理性能测试数据(包括调优之前和调优之后)
9:构建持久化的性能监听平台,监听线上的服务性能
13.前端性能测试关注哪些点?了解哪些前端性能优化方法?
首屏时间:页面完全展现需要的时间
白屏时间:页面第一帧画面出现之前的时间
脚本加载时间,fps,cpu,network
前端性能优化:使用缓存,压缩图片,压缩js,css,gc回收优化,js前置
14.解释常用的性能指标的名称与具体含义
用户角度
响应时间(rt)从发起请求,到接口响应,到页面渲染
错误率(error)
服务端角度
rps(request persecond)每秒请求数,用户发起的
tps(transaction persecond)每秒完成事物数,服务端决定的
通过rps指标,来测试tps,从而衡量服务端性能。
浏览器层面
qps(query perecond)每秒查询接口数(uv pv)
刷新一次页面,调用了三个接口
hps(hit persecond)每秒点击率
15.性能测试类型有哪些?按顺序描述
基准测试(得到性能数据,为后续的回归测试做理论依据)
单接口基准测试
容量基准测试
负载测试
不断增加负载量(压力),一直到瓶颈点出现,可以停止
压力测试
1:稳定性压测
假设瓶颈点在300tps,用对应的负载量的80%-90%做持续性(几小时或者几天)的压测。目的是发现稳定性问题(内存溢出等等)
2:破坏性压测
用对应负载量的100%或者150%做压测,直接让服务器出现异常。目的是及早的暴露问题
失效恢复测试
服务端出现异常之后能不能及时恢复
16.什么是固定等待和隐式等待?
固定等待:超时时间=0
线程数一定要>=集合数。一定要集合完毕才发起请求
隐式等待:超时时间>0
达到超时时间范围,无论集合多少线程都会发起请求
17.你在性能场景设计中用到哪些方法?
参数化,关联,断言,jdbc连接
18.什么是上下文切换?哪些场景会存在上下文切换?
1:线程的切换
切换的时间加载寄存器和计数器
保存数据和位置信息,然后切换到下一个线程并读取它的数据和位置信息
2:进程切换
3:特权切换
系统调用(切换两次上下文)
用户空间向内核空间发起申请,内核空间返回api给用户空间调用;
19.吞吐量大幅度波动有哪些原因?
上下文切换的过快;
gc次数过于频繁;
20.哪些现象说明了IO瓶颈?
await=io等待时间=io处理时间+io队列时间
svctm=io处理时间
await与svctm的差值越大,表示队列时间越长
util磁盘繁忙度,值越大,磁盘越繁忙;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)