性能测试讲解
 一、你做过性能测试吗?
 方法1:做过
 方法2:在公司中性能测试有专门的性能小组做,但是我也会做性能
 二、性能测试有哪些类型?
 1)压力测试(破坏性测试)
 压力测试是系统在一定饱和状态下,例如:cpu、内存、磁盘io在饱和使用情况下,不断给系统施加压力,看系统处理能力,以及系统是否会出现错误;
 (2)负载测试
 负载测试是对测试系统不断增加压力,直至性能指标超过预期或者某项资源使用达到饱和状态。
 (3)稳定性测试
 稳定测试就给系统施加一定压力,持续运行一段时间(7*24),观察系统能否稳定运行。
 (4)基准测试
 基准测试在给系统施加较低压力时,查看系统的运行状况并记录相关数作为基础参考 。
 (5)并发测试
 并发测试是指模拟多用户并发访问同一个应用,模块或者数据记录时可能发生的性能问题。
 三、性能测试的工具有哪些?
 1、jemter 开源、免费、安装方便、体积下(常用)
 2、loadrunner 收费、专业、安装包大、4g、
 四、性能测试流程?
 步骤:
 1、需求分析(性能需求/性能要求)
 2、性能计划的编写
 3、性能场景的设计
 4、脚本的开发(录制脚本,接口填写)
 5、性能环境的搭建
 6、性能数据准备
 7、性能执行(性能工具jmeter)
 8、收集性能指标,分析结果
 9、输出性能报告
 10、性能调优(开发)
五、性能测试关注哪些指标?
 软件指标:并发数、响应时间、tps、qps、吞吐量、事务每秒数、事务点击率、错误率、最大并发数、最佳并发数、hps等
 参考:https://www.cnblogs.com/xiaolehong/p/16790205.html
 硬件指标:cpu、内存、磁盘、网络i/0、
 参考:https://www.cnblogs.com/xiaolehong/protected/p/16618951.html 性能插件
六、性能测试中你遇到过哪些问题?
 8.1提现申请接口3-5个线程并发时,容易引起死锁现象,经优化后,Tps达到224左右,且没有死锁现象出现;
 8.2账单查询接口,优化索引前,响应时间为8s左右,Tps为11;优化索引后,响应时间缩短为0.15秒左右,Tps升为560左右
 参考:https://www.cnblogs.com/xiaolehong/p/16797081.html
七、性能测试你是怎么做的?
 案例1:
 在工作中我测试会对单个接口进行压测或一个性能场景进行压测;首先会分析需求,根据需求分析接口和场景做性能;设计性能场景;根据性能场景使用badboy(或反向代理录制脚本)录制脚本;将录制的脚本进行参数化、并且调通;在测试计划中设置并发数,设置并发时间,在添加查看结果树、聚合报告、tps插件、hps插件、混合图标、图像报告、表单报告等插件,在服务器中也可以使用nmon来采集硬件指标:cpu、内存、硬盘、网络I/等,或top命令去监控,在点击执行;然后就能检测到性能参数;在收集的实际性能指标进行分析和预期指标进行对比。对比后分析性能问题,给出性能报告;最后在进行性能调优。
 案例2:
 性能测试或者压力测试你是怎么做的?
 我们产品经理首先会评审性能需求,产品经理把需求分析过后,我们就根据需求做性能场景的设计,比如我就拿登录-贷款资料录入-初审-回退-重新提交-复审-签约接口这样的一个场景,和您这边大概说一下:
 首先我会设计好这个性能测试用例之后,然后接着在Jmeter里面开始组建接口,把接口请求组建好之后,然后再添加吞吐量定时器,再添加TPS插件,HPS插件,以及混合图表,查看结果树,聚合报告,以及对应的一个并发线程数比如50,然后选择压测10分钟,然后就开始点击运行,进行压测,在压测过程当中,我一般会通过混合图表去看当负载不断升高的时候,也就是我的并发线程数,它负载升高的时候我的接口的响应时间跟我的TPS之间的一个曲线变化,当我的TPS到达最高点,响应时间开始急剧上升的时候,这个时候一般就会出现一些捌点或瓶颈点,那我们去看一下它后续的一个曲线变化是怎么样的,后续如果TPS没有很快的急剧上升而是平缓的运行,我们这个时候就会去看它的、监控它的TPS是否符合我们原来设定的那个TPS、因为之前我们计算得出来的TPS需要高于105笔/秒,但我压的时候平均都能达到300多TPS,TPS这块就是符合需求的,但是只关注这个标指标还不行,还需要关注这个接口它的平均响应时间是不是在3秒钟之内。0到1秒一般是比较优秀,说明这个接口响应时间必较快速,1到3秒合格,超过了3秒我这边就会调整并发或者rps并且重新去压,还有就是错误率。我们之前的错误率指标需要低于0.1%,如果错误大于了0.1%此时说明接口有很多的报错,也是不符合性能要求的, 直到我们压完之后如果TPS达标,接口平均响应时间达标,错误率达标之后。
 我们还需要在服务器端用top和iostat和dstat命令去监控它的cpu和内存,如果CPU和内存的使用率都能低于70%的话那就说明没问题,我会去输出性能测试报告,然后再发送报告给到我整个项目组。
八、性能的预期指标:
 
 九、压测实际结果
 
 7.1接口调用统计信息
 7.1.1用户激活状态接口:200线程并发执行,Tps为570,响应时间为218ms
 7.1.2通用对外白名单查询接口:200线程并发执行,TPS为450,响应时间为6ms
 7.1.3提现申请20线程并发执行,Tps为224,响应时间为66ms
 7.1.4通用对外福贷主状态查询:200线程并发执行,Tps为485左右,响应时间为345ms
 7.1.5信贷系统查重接口200线程并发执行,Tps为1293左右,响应时间平均11ms
 7.1.6在途申请查询接口:200线程并发执行,Tps为960左右,响应时间平均143ms
 7.1.7额度查询接口:200线程并发执行,Tps为960左右,响应时间平均130ms
 7.1.8日利率查询:200线程并发执行,Tps为1008左右,响应时间平均38ms
 7.1.9账单查询接口:50线程并发执行,Tps在570左右,响应时间平均97ms
十、性能测试报告包含哪些内容?
 1.测试背景、
 2、测试目的
 3、测试范围
 4、测试环境
 5、测试系统调用链路
 6、压测指标
 7、测试结果
 8、问题列表
 9、性能总结
===============================
面试题:
1、你会性能测试吗?
 2、你是如何做性能测试的?(性能测试流程)
 3、性能测试你关注性能哪些性能指标?
 4、性能测试中遇到什么问题?什么原因引起?如何解决?
 5、性能测试报告包含哪些内容?
 6、结合你的项目中一个接口或一个场景讲下你做过的性能测试的具体数据?
 
1、你做过性能测试吗?
 2、你用什么做性能测试?
 3、具体讲下你如何进行性能测试?
 4、性能测试在什么阶段开始做的?
 5、性能测试有遇到什么问题
 6、你关注的性能指标有那些?
 7、性能测试有那些类型?
 8、为什么要做性能测试?
 9、性能测试的流程?
 10、性能调优有做过吗?
 11、如何识别性能的瓶颈?
 12、性能测试报告包含那些内容
 13、性能测试数据?
 14 、性能是在什么环境测试?如何模拟用户数嗯?
 15、什么叫吞吐量?吞吐量如何计算?
 16、性能测试需求哪里来的?
 17、中间件?
 18、LaodRunner 有用过吗?
 19、什么叫tps,如何计算?
 20、性能测试有遇到报错的语句?
 21、你如何去排查性能问题?
 22、线程和进程有了解吗?他们之间的关系和区别?
 23、性能测试压力上不去的原因有那些
 24、性能的硬件指标如何测试?
 25、分布式性能测试有了解吗?
===================================================



















