如果你最近面试过程中被卡在了性能面试题上,那么意味着你需要多刷刷面试题了。当然有认真学过,能够充分理解就更好啦~
1、简述性能测试的步骤/流程?
①分析需求
②制定测试计划和方案(时间,人力)
③设计性能测试场景和用例(并发,负载,压力,稳定性等)
④搭建环境
⑤准备用户数据(如何确定用户并发数)
线上的注册用户数的10%做测试环境的在线用户
根据高峰时间段和业务量,计算平均并发和峰值并发
⑥设计性能测试脚本(jmeter)
线程、请求数、关联、断言、参数化、报告
不同的线程组设计不同的测试类型
⑦运行、监控测试数据
⑧分析性能瓶颈:吞吐量,响应时间,资源利用率
⑨性能调优 :吞吐量调优,网卡宽带、硬件调优、Cpu,磁盘
⑩出具性能测试报告
2、CPU资源利用率很高如何排查?
①CPU资源利用率很高的话,需要看CPU消耗User、Sys、Wait哪种状态。
②如果CPU User非常高,需要查看消耗在哪个进程,可以用top(linux)命令看出,接着用top –H –p看哪个线程消耗资源高。如果是Java应用,就可以用jstack看出此线程正在执行的堆栈,看资源消耗在哪个方法上,查看源代码就知道问题所在;如果是c++应用,可以用gprof性能工具进行分析。
③如果CPU Sys非常高,可以用strace(linux)看系统调用的资源消耗及时间。如果CPUWait非常高,考虑磁盘读写了,可以通过减少日志输出、异步或换速度快的硬盘。
3、一个web系统,用户从打开浏览器输入网址页面显示在浏览器中,这个过程当中,页面给用户总的响应时间通常可以细分为哪些?
从客户端到服务端的请求时间(请求网络传输时间request),从服务端返回数据到客户端的时间(响应网络传输时间response),页面渲染时间(客户端浏览器加载页面的时间),处理器的处理时间(应用服务器+数据库服务器处理时间)。
4、响应时间和吞吐量直接的关系是什么?
吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现。
5、怎么根据线下环境评估线上环境的性能?
首先线下必须要有专门的性能测试环境
线下环境单台机器配置和线上不能相差很大,可以通过单台的机器性能推算出多台机器性能(需考虑一定的性能损耗)
如果线下机器配置很差,只能测试出程序有无性能问题,这样线下测试出来的数据对线上没有太大参考意义
如果想获取比较准确的线上性能情况,建议最好做线上的性能测试
6、应用服务器cpu高和数据库服务器cpu高的分析思路是什么?
应用服务器的cpu高,先要看tps和响应时间,如果tps比较高,我们认为是正常的cpu消耗;如果tps比较低,那么往往某些代码过于消耗cpu,可以考虑使用jprofiler分析下 数据库服务器cpu高,往往是因为sql语句执行效率比较低,可以通过对数据库慢查询是监控,结合执行计划进行分析,是否是相关表没有索引或索引未生效
7、出现内存泄露的根本原因是什么?你是怎么定位内存泄露原因的?
内存泄露的根本原因是Jvm中老年代中存在着大量存活的对象,这些对象不能被GC回收掉,从而占满了整个老年代,造成Jvm一直处于FGC的状态,程序没有响应,服务器报OOM错误 内存泄露主要通过分析老年代中占用空间最大的类都有哪些,然后去代码中找对应的类的创建。通常可以使用jdk提供的jvisualvm和jmap进行堆内存的分析
8、tps压不上去,可能有哪些方面的原因?
压力机本身性能瓶颈
网络IO瓶颈
中间件(tomcat/nginx/mysql)连接数限制
Java线程的阻塞、等待
本系统资源的瓶颈(cpu、内存、磁盘、网络等)
其他外部系统响应时间过长,造成本系统的time-wait
9、什么是集合点,什么场景下需要用集合点?
集合点是测试脚本中的一个标记,当每个虚拟用户执行到标记处时,会停留在标记处等待其他的虚拟用户,当达到预期设置的并发数时,标记处的所有用户同时启动执行后续的请求 集合点会产生瞬间高并发,但是也会降低平均压力。所以在压测过程中,如果有要求瞬间高并发的业务,就需要使用集合点,比如抢购,秒杀之类的业务。没有类似业务则不需要加集合点
10、服务器的cpu使用率和load是什么关系?
通常情况下,cpu使用率和load值是正比关系,即cpu使用率越高,load值越高。但是在一些特殊情况下,也会出现cpu使用率不高,但是load值较高的情况 比如某系统只能使用CPU中的单核运行,它可以占用单核cpu100%,但从整体cpu使用率来看,只是使用了一小部分。而随着并发的增大,单核CPU的任务队列会越来越长,造成了load值较高
上面就是一些常见的性能测试面试题,速刷一下,为面试做准备吧!
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。