软件测试面试题 - 性能测试
性能测试
什么是性能测试
性能测试是指被测系统,在一定的负载下运行,监控系统的各项指标,是否符合需求(指标,指的CPU,内存,事务响应时间,等)如果不符合,就发现了系统的性能瓶颈
为什么做性能测试
1、能力验证:验证压力测试下系统是否满足预期目标;
2、性能调优:可以发现系统存在的瓶颈,为调优指明方向;
3、瓶颈分析:可以察看系统承受的最大压力以及最佳压力;
4、系统在长时间的规定压力下是否能正常处理各种请求,考察系统的稳定性;
5、容星规划:要考虑到未来的用户慢慢增加后系统是否能满足要求。
一句话:识别系统的弱点,评估系统能力,发现系统性能瓶颈,提高系统可靠性能和稳定性
什么样的接口要进行性能测试
测试点的提取,常放在客户常用的、重点的模块和功能上:
1、用户常用功能,比如登录;
2、数据流转向复杂或频繁的地方;
3、发生频率高的地方,比如搜索,提交订单,下单结账;
4、关键程度高的(比如产品经理认为绝对不能出现问题的地方,登录、下单等);
5、资源占用非常严重的;关键的接口。
你们系统哪些地方做了性能测试
你们系统哪些功能做了性能测试:
我们选取了用户使用最频繁的场景来做性能测试,比如:我最近做的电商系统的登陆,搜索,加入购物车,提交订单,支付等功能
简述性能测试流程
你是怎么做性能测试的?你如何利用jmeter做性能测试的?
1.分析性能需求:首先要和开发、产品经理一起开会,确认性能需求,我们是挑选用户使用最频繁的功能来做测试,比如登陆,搜索,加入购物车,提交订单,支付这些功能
2.确定性能指标:接下来是确定性能指标,一般是事务通过率为100%;90%的事务响应时间不超过5秒;并发用户为200人时CPU和内存的使用率在70%以下
3.编写性能测试计划,明确测试时间(功能测试之后,系统比较稳定的时候开展)和测试环境和测试工具
4.搭建性能测试环境(测试环境要与真实环境一样,或等比例缩小)
5.通过性能测试用例,编写性能测试脚本
6.对性能测试脚本进行调优,进行参数化、关联,添加事务、思考时间等(怎么参数化,怎么关联)
7.用jmeter的NON GUI模式进行阶梯式压测(添加一个插件,设置线程调度参数:先设置总并发数,然后先加多少并发,然后每隔多少秒在多少秒内增加多少个并发,最后达到最高并发后持续多少时间,最后每多少秒关闭多少个并发),压测过程中要在服务器上用top、vmstat命令对cpu和内存进行实时监控,一边压测一边要去操作系统网页,看看响应如何,有没有奔溃
8.压测结束后会生成html格式的报告,分析性能测试结果,在html报告中查看响应时间和tps符不符合需求,定位问题,然后反馈给开发(时间比较长的话,可以运用JMeter+Granfana+InfluxDb+telegraf进行实时化监控,随时查看压测的情况,不用等到压测完成才能看到)
9.优化之后,再回归性能测试
10.最后要编写性能测试报告
性能测试报告怎么写
1、系统概述
2、测试目的
3、测试对象范围
4、测试指标范围
5、测试工具及环境
6、测试记录及结果分析
7、测试结论
如何确定系统的最大负载用户数
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。
怎么分析性能测试结果
1、首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试
2、在确定性能测试结果可信后,如果发现以下问题,按下面提供的思路来定位问题
1、响应时间不达标
查看事务所消耗的时间主要在网络传输还是服务器,如果是网络,就结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,如果存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;如果不存在瓶颈,那么,可能是网路不稳定导致。如果主要时间是消耗在服务器上,就要分别查看web服务器和数据库服务器的CPU,内存的使用率是否过高,因为过高的CPU,内存必定会造成响应时间过长,如果是web服务器的问题,就把web服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。
2、us cpu高
可以使用top命令查看是哪个进程消耗的CPU高,然后再找出消耗cpu高的线程,使用top-H-p进程号,找到之后反馈给开发。
3、sy cpu高
一般是磁盘和系统内核的问题。
4、内存泄漏
主要原因是处理静态资源过多,和数据的批量处理,比如批量上传下载
可以通过减少堆内存或线程数星来解决
如果线程数量不能减少,则减少每个线程的堆栈大小。
5、tps上不去
网络带宽存在瓶颈,可以增大带宽;硬件资源的问题,比如CPU、内存、磁盘,换成硬件配置更好的服务器;数据库连接数太少,可以增加数据库连接数;单机负载有限,可以增加压力机。
思考时间think_time的作用是什么
模拟真实生产用户操作,考察对服务器所造成的影响。
你们如何确定并发用户数
1.参考上一个版本,比如上个版本是200并发,那迭代的时候就从200开始慢慢加,通过性能曲线确定最大并发数;
2.如果没有上一个版本,那就先从50开始,慢慢加,通过性能曲线图确定最佳并发;
3.会先上线一段时间,根据线上收集到的用户访问数据进行预估,大概10%;
4.根据业务需求确定。
你们的性能测试在什么环境开展
搭建一套独立的性能测试环境进行测试,硬件设施尽量和线上环境保持一致
什么时候做性能测试
功能测试之后,系统比较稳定的时候再做
如何实现200用户的并发
用jimeter的NON GUI模式进行阶梯式压测,有快增长和慢增长模式,增加到200并发,然后运行10-20分钟。
有验证的功能怎么测
1)将验证码暂时屏蔽,完成性能测试后,再恢复。
2)使用万能验证码
性能测试做多长时间
两三天测完,然后分析,开发优化,回归性能测试,大概要一个星期
支付接口怎么做性能测试
mock
如何测试系统支持8000并发,允许100万用户同时在线的测试?
首先要确认是否需求真的需要8000的并发。因为有些性能需求是由于需求人员或者会开发人员不清楚而随手拍脑袋写的。
拿支持8000并发来说,到底是什么样的业务场景?是否包含思考时间?这些都需要具体细化,需要我们测试人员和相关人员进一步确认。
100万用户同时在线也需要进一步细化,这100万是登录后什么都不做?还是部分产生压力?
很多性能测试需求是需要进一步确认和细化的。