论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Oracle
›
性能测试--大厂面试题目剖析
性能测试--大厂面试题目剖析
前进之路
金牌会员
|
2025-3-7 17:22:56
|
显示全部楼层
|
阅读模式
楼主
主题
954
|
帖子
954
|
积分
2862
性能测试作为软件开发中的关键环节,确保系统在高负载下仍能高效运行。面试中,相干题目常被问及,包罗界说、类型、工具选择、规划与执行方法、常见瓶颈、敏捷环境下的处理、监控作用、假造用户数目确定、功能测试的区别、JMeter工作原理、HTTP与HTTPS的差别、测试数据处理、性能指标监控、优化方法、微服务性能测试方法以及CI/CD管道集成。本文将详细分析这些题目,提供答案,并团坚固际案例和最佳实践,为面试准备提供全面引导。
本文基于多个权威来源整理了相干信息,包罗Performance Testing、Stress Testing、Load Testing、JMeter、LoadRunner、Gatling、iperf、netperf、stress、sysbench等,团结面试常见题目,探讨性能测试的核心领域。内容包罗题目分类、详细答案、案例分析和最佳实践,旨在为读者提供一个完整的面试准备框架。
性能测试的界说与类型
什么是性能测试?
性能测试是一种软件测试,测量系统在差别负载下的相应时间、吞吐量和资源使用率,确保在正常和高峰场景下体现良好。其目标是验证系统是否满足性能要求,防止因性能题目导致用户流失或业务中断。例如,测试一个电商网站,确保在双十一秒杀高峰期能处理百万并发请求。
性能测试有哪些类型?
性能测试包罗以下类型:
负载测试
:模仿正常或预期负载,检查系统在日常使用下的性能。例如,测试网站在500个并发用户时的相应时间是否符合SLA。
压力测试
:超出系统容量,测试极限和故障点,关注系统在非常情况下的举动。例如,测试网站在2000个并发用户时的体现,观察是否崩溃。
历久测试(或浸泡测试)
:测试系统在长时负载下的体现,检查性能退化或失败。例如,24小时运行500用户,观察内存泄漏。
尖峰测试
:测试系统对突发流量增加的相应,例如模仿秒杀活动开始时的流量激增。
可扩展性测试
:测试系统随负载增加的性能,确定是否能高效扩展。例如,增加服务器后,相应时间是否线性改善。
类型
目标
示例场景
负载测试验证正常负载下的性能500用户浏览网站,测相应时间压力测试找系统极限和故障点2000用户访问,测崩溃点历久测试检查长时负载下的稳定性24小时运行,观察内存使用尖峰测试模仿突发流量,测相应秒杀开始,流量刹时翻倍可扩展性测试评估系统扩展能力增加服务器后,性能是否提拔 这些类型在面试中常被问及,需清楚区分,团结项目场景表明。
工具与技能
常见性能测试工具有哪些?
常用工具包罗:
JMeter
:开源工具,得当负载和性能测试,支持HTTP、JDBC等协议,社区活跃。
LoadRunner
:商业工具,支持多种协议,得当企业级测试,功能强盛。
Gatling
:开源工具,使用DSL界说测试场景,性能高,得当Web应用。
WebLoad
:支持HTTP/HTTPS,得当Web应用测试,易于集成CI/CD。
NeoLoad
:商业工具,提供负载测试和性能监控,得当复杂系统。
例如,JMeter常用于中小型项目,LoadRunner得当银行系统的高并发测试。
JMeter是如何工作的?
JMeter通过模仿用户发送请求,使用测试操持界说测试流程,包含采样器(发送请求)、监听器(显示效果)、断言(验证相应)和计时器(控制隔断)。例如,测试一个网站,设置100用户并发访问,JMeter记录相应时间和错误率。
HTTP和HTTPS在性能测试中有何差别?
HTTP不加密,传输快但不安全;HTTPS用SSL/TLS加密,安全但因加密开销大概增加延迟。测试时需思量生产环境,如电商网站通常用HTTPS,需评估加密对性能的影响。
规划与执行
如何规划性能测试?
规划步骤包罗:
确定目标
:明白测试目标,如测相应时间或系统容量。
相识系统
:分析系统架构、组件和预期举动。
界说场景
:模仿真实用户交互,如登录、浏览、购买。
准备数据
:确保测试数据真实,覆盖边沿案例。
设置指标
:界说KPI,如相应时间<2秒,吞吐量>1000请求/秒。
选工具
:根据需求选JMeter或LoadRunner。
配置环境
:模仿生产环境,设置服务器和网络。
执行测试
:按操持运行,监控系统体现。
分析效果
:对比指标,找瓶颈。
陈诉发现
:文档化效果,建议优化。
例如,测试电商网站,先模仿500用户正常浏览,再增加到2000用户找极限。
如何确定负载测试的假造用户数目?
确定假造用户数需:
相识业务需求,如预期并发用户数。
分析历史数据,估算高峰期流量。
界说测试阶段,如渐进加载。
思量用户举动,如部分用户重操作。
试点测试,从小规模开始,逐步增加。
咨询长处相干者,确保符合预期。
例如,电商双十一预计1万用户,试点500用户后,逐步增至1万。
性能瓶颈与优化
应用中常见的性能瓶颈有哪些?
常见瓶颈包罗:
数据库查询慢
:SQL未优化,索引缺失。
网络延迟
:带宽不足或远程服务慢。
服务器资源不足
:CPU、内存或磁盘瓶颈。
代码优化差
:算法低效,循环冗余。
并发题目
:多用户访问时锁竞争。
外部依靠慢
:第三方API相应慢。
例如,测试发现相应时间长,分析后优化数据库索引,性能提拔50%。
基于性能测试效果如何优化系统?
优化步骤:
分析效果
:辨认慢组件,如数据库查询。
找根因
:用监控工具分析CPU使用率,确定瓶颈。
优先优化
:按影响排序,先修高优先级题目。
实行更改
:如加索引、升级服务器或优化代码。
重新测试
:验证优化效果,测新指标。
迭代优化
:连续改进,直到达标。
例如,优化后相应时间从5秒降到2秒,满足SLA。
监控与指标
监控在性能测试中起什么作用?
监控及时收集数据,如CPU使用率、内存、相应时间,辨认瓶颈,确保测试有效,分析效果优化系统。例如,监控发现CPU100%,需加服务器。
性能测试中监控哪些常见指标?
包罗相应时间、吞吐量、错误率、资源使用率(如CPU、内存)、变乱率和延迟。例如,相应时间>5秒,需优化。
1、性能测试怎么测试?
性能测试实在就是通过自动化工具模仿多种正常、峰值以及非常负载来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,二者可团结使用。
性能指标主要有平均相应时间、90%相应时间、吞吐量、吞吐率,每秒变乱数,以及服务器的资源使用率(CPU 占比,mem 内存占比等)等。当并发用户数超过 300 时,为了让测试数据更正确,可以思量分布式压测,通过 jmeter 客户端控制几台 jmeter 服务器进行测试。
性能测试要先调试好脚本,主要思量对脚本的数据参数化和添加断言。由于有些接口必要对业务逻辑或参数格式进行校验,为了能让全部线程数跑起来,必要将数据参数化。
数据参数化有这几种做法:
1、可以将一些固定值改成随机函数;
2、使用 JDBC 从数据库读取数据并关联变量;
3、Excel 数据参数化,
4、动态关联参数化,断言是为了判断用例是否
执行成功,并验证服务器的相应错误率。相应断言常用 json 断言,xml 断言用的最少,
性能测试的目的是为了检验系统能否满足客户的性能需求,若性能需求无法满足时,则要思量对系统进行性能调优,一样平常用清除法:
1、首先思量网络方面题目:使用 ping 命令查看与目标服务器的连接是否正常、传输速度的快慢。通过提拔服务器的带宽,看相应时间是否相应低落。
2、思量数据库的题目,可以单独去压测数据库,查看数据库的最大连接数和 SQL 语句的执行时间,索引命中率和 sleep 等待时间等
3、思量 Apache/Nginx 等中间件的题目,查看中间件设置的最大连接数是否公道,假如设置的连接数太小,会话数超过设定的最大连接数时会导致等待时间变长,出现相应超时情况
4、思量服务器的硬件配置,如内存、CPU、磁盘读写速度等,可以用 top 命令来监控,也可以使用nmom 工具来监控,nmom 会把监控的数据形成表格情势,方便我们查看。
5、末了思量开发代码写的好不好,处理时间长不长的题目。
举例:
在我之前的公司,我们主要是会思量用户操作使用比力频繁的模块,好比借贷,充值,投资模块,我们一样平常会通过增加并发数来压测,观察 CPU、mem、磁盘读写、吞吐量和每秒变乱数等性能指标,以前我老大要求我并发 100 个用户,我用 jmeter 把线程数设为 100,永久循环,连续时间半个小时,设置启动延退 55,在 Linux 启用 nmom 工具监控服务器。
当我运行脚本的时候我看聚合陈诉 90%的平均相应时间达到了 6s,吞吐量也比力小,用 top 命令监控资源发现 CPU 差不多到了 100%。于是我用 Navicat 工具通过 SQL 命令 show full processlist 取当前运行的 SQL 语句,发现有许多语句用的是左关联,在查看了这条 SQL 语句的执行操持发现没有用索引,再查看了索引的命中率,命中率倒是还行看了下 nmom 天生的陈诉,发现 CPU 不停是处于爆满状态,其中主要是 mysql 的占比很大,这个时候我基本上判断数据库的题目。
于是我就照着前面的步骤再次压测,同样还是用 nmom 工具去监控 CPU,mem 网络等状态,这次我是主要在 Navicat 上用命令去抓取 SQL 语句,还是一样有许多语句都是左关联,并发现许多空连接(sleep),我就用 show global variable like"wait_time"命令查看了设置的休眠时间(等待时间)发现时间很长 28800s,然后我就把这个休眠时间改成了 20s,由于 SQL 语句使用了许多左连接,我就用show variables like"tables_size"查看了临时表的空间巨细、发现临时表只有 16m,我将空间改成了 1G再去压测了下,发现 CPU 只是降了 10%左右,nmom 陈诉上还是显示 mysql 占的 CPU 很大,然后运行的时候,用 top 命令监控,发现有的时候有许多 mysq 进程同时运行(由于没有设置连接池),我就用命令查看了下 mysql 的最大连接数,由于 SQL 语句的执行速度还是挺快的,所以就把 mysql 的连接数调小到 50,再去跑了一遍发现 CPU 降到了 40%左右,并且其他的性能指标也都还不错。末了把聚合陈诉的数据以及 nmom 的数据整理成性能陈诉给老大,实在做接口性能主要就是用清除法个一个去清除,发现性能题目就要先解决了性能题目再压测,否则其他的题目也有大概是这个性能题目导致的所以接口性能基本上就是观察,各个性能指标都在范围之内就差不多了。
2、性能测试流程是怎么样的?
别的一种问法:简单介绍下你们公司的性能测试流程是怎么样的?
我们谁人项目的性能做得不多,公司要求也不严格。
对于流程这块,首先就要对整个系统进行详细的分析,确定基本的测试范围,看下系统的哪些业务是必要做性能测试的,还有就是做那方面的性能测试,对于我们谁人项目,当时就做了几个业务做了些简单的并发压测(稳定性)这块,像登录的,搜索查询,下单,还有就是购物车内里的几个接口都有做过,然后就是对各个业务场景进行详细的场景分析与设计,确定每个业务场景的并发数,是否必要设置集合点啊,压测时间是多长,还有各个业务场景的性能指标等等,场景设计这块基本上都是老大跟产品哪个一起弄的,我参与的不是太多。
上面把个场景设置好了之后,提交给我们,我们就是根据老大设置好的那些场景编写了基本的性能测试用例,实在做性能测试,我觉得前期最关键的还是业务场景肯定要设计好,后期我们主要的任务就是准备各自任务必要用到的一些测试数据,搭建好测试环境,还有就是测试脚本设计与开发,执行,并生出测试陈诉,对于测试效果我们一样平常会简单的做个分析,假如没有什么题目,基本后期就写一个性能测试陈诉。流程大概就是这样的。
3、你们性能观察哪些指标,大概指标范围是怎么样的?
对于指标这块,业务方面的指标主要有:并发数,90%用户的平均相应时间
错误率,吞吐量/吞吐率这些,破例还必要关注服务器资源的使用情况,像:CPU 的使用率、内存的占有率,磁盘 IO,网络。
我们谁人项目当时只针对,登录,搜索查询,下订单,购物车相干接口,支付等业务做了些简单的并发,压测这块,指标大概是这样的:
单基准业务并发测试登录,注册,查询 1s 以内,下订单,购物车相干接口,支付 2s 以内,混合业务性能:5s 以内
相应时间:登录,注册业务<2s 之内查询,下订单,购物车,支付业务<3s
充值,提现,查看充值日志,查看提现日志业务查询标的,<3s
投标,申请借款<5s
错误率:0
吞吐量/吞吐率:200 左右请求/sec
CPU:80%以内
内存:80%以内
I/O: %util<=80%,%nowait<=20%
%util: 磁盘一秒中有百分之多少的时间用于 I/O 操作,
% nowait:磁盘等待处理时间占比
带宽:<=系统带宽的 30%,无丢包,无延迟,无壅闭
4、这个测试的环境配置,如转速度?
租用的服务器,一台数据库服务器,一台后端服务器
8 核 16G 网络带宽 1000M,2.5GHZ 磁盘 15000pm 转数
5、性能测试操持有哪些内容?
主要是时间进度安排与工作安排,主要是环境,测试任务,测试需求,测试方法与策略,测试环境准备,测试通过的标准。
好比说原来我们一个项目性能测试时做了 5 天,那我们操持是,测试策略与用例编写一天,测试准备必要 1 天,测试执行 2 天,陈诉总结 1 天。
6、有没有写过性能测试陈诉,详细包罗哪些内容?
性能测试陈诉,必要每次 Jmeter 压测完成的 html 陈诉的数据跟 nmon 工具监控的数据,整理出一份性能测试陈诉,性能测试陈诉,主要包含:
1,测试资源(环境,测试数据,表内里必要多少数据,测试工具)
2,测试设计(测试业务,测试类型,测试时间,并发用户数)
3,测试分析(每一个场景都必要分析)
4,测试结论(能不能上线,不上线的原因)
5,优化和建议
6,测试通过的标准,平均相应时间<5s,资源使用率<75%,变乱失败率<5%
7、什么是内存泄漏,什么是内存溢出?
内存泄漏:
是指步伐在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存并且分配给其他进程使用。通常少次数的内存无法及时回收并不会到步伐造成什么影响,但是假如在内存本身就比力少获取多次导致内存无法正常回收时,就会导致内存不够用,终极导致内存溢出。
内存溢出:OOM
1. 指步伐申请内存时,没有足够的内存供申请者使用 1M 实际要占用 2M 内存,
就说分配的内存不够,导致内存溢出
2. 给了你一块存储 int 类型数据的存储空间,但是你却存储 long 类型的数据
3. 长期出现内存泄漏,导致系统内存越用越少,终极导致内存不够用,导致系统崩溃,出现 OOM
8、吞吐量,吞吐率?
吞吐量:KB
指在一次性能测试过程中网络上传输的数据量的总和(单位应该 KB),也可以这样说,在单次业务中,客户端与服务器端进行的数据交互总量;对交互式应用来说,吞吐量指标反映服务器承受的压力。
并不是吞吐量越高越高,一个服务器的性能,要从多个方面去思量:
90%用户的平均相应时间、错误率、吞吐量/吞吐量、CPU、内存、磁盘 I/O、网络的占用情况,还有服务器的配置。
吞吐率:
吞吐量/传输时间,即单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数目,它是衡量网络性能的紧张指标。
12s 800M 数
800 * 1024 / 12 = 66666 KB/sec
通常情况下,吞吐率用“字节数秒”来衡量,当然,也可以用“请求数/秒”来衡量;
9、吞吐量与吞吐率跟负载有什么关系?
吞吐量/率和负载之间的关系:
1、上升阶段:吞吐量随着负载的增加而增加,吞吐量和负载成正比;
2、安稳阶段:吞吐量随着负载的增加而保持稳定,无太大变革或波动;
3、下降阶段:吞吐量随着负载的增加而下降,吞吐量和负载成反比;
总结:吞吐量/率干不外负载!
10、当服务器满了之后,吞吐量和相应时间怎么变革的?
吞吐量会全部下降,相应时间会变长
11、20 并发 40 次循环怎么做?
线程数设置 20 个,循环次数 40
12、必要插入 500 条数据,怎么插入?
1、使用存储过程来实现
2、可以通过 JMeter 来实现,调用注册接口,线程数设置为 500,账号,密码可以通过 JMeter 中的随机函数 randomString(),random()函数团结计数器来实现。
13、相应超时,你是怎么定位的?
这里一样平常我会采用排查法,首先思量软件优化题目,之后思量硬件题目,思路大概是这样的
1、首先思量中间件(tomcat,Apache 的连接数的题目),可以尝试增加连接数,看是否变革。
2、还有就是数据库的连接数问可题,也可以尝试增加,看是否有变革。
3、要不就是看数据库的访问效率题目,这里要思量数据库的操作是否添加索引,假如没有添加索引,可以让开发优化下数据库的访问速度,添加索引,大概优化 sql 语句。
4、再一个就可以尝试思量后台代码的架构设计是否公道,代码算法是否足够优化。
5、假如以上题目都不能解决,那么只能思量增加服务器的 CPU 内存,大概增加网络带宽,看相应时间是否可以得到优化。
总结
在软件测试领域,
性能测试
是衡量系统稳定性、相应速度和可扩展性的关键环节。面试中,面试官往往会针对
底子概念、工具使用、实际案例分析、性能调优策略
等方面进行考察。以下整理了一些
常见的性能测试面试题目及答案
,助你轻松应对面试!
把握性能测试的核心概念、工具使用、题目排查思路,能资助你在面试中脱颖而出。希望这份
性能测试面试题目及答案
对你有所资助
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
前进之路
金牌会员
这个人很懒什么都没写!
楼主热帖
UWP/WinUI3 Win2D PixelShaderEffec ...
后台性能测试规范
低代码平台 - 危险的赌注
Docker 基础 - 1
小小项目-博客系统 - 服务器版本 - jav ...
Python3程序捕获Ctrl+C终止信号 ...
实用五步法教会你指标体系的设计与加工 ...
Redis常见使用场景
端午假期整理了仿天猫H5 APP项目vue.js ...
Fastjson反序列化
标签云
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表