JMeter 面试题及详细答案(实战完整版)_第1页
JMeter 面试题及详细答案(实战完整版)_第2页
JMeter 面试题及详细答案(实战完整版)_第3页
JMeter 面试题及详细答案(实战完整版)_第4页
JMeter 面试题及详细答案(实战完整版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JMeter面试题及详细答案(实战完整版)本次面试题分为基础认知、核心组件、脚本实战、性能压测、问题排查、高级场景六大板块,全部为互联网、软件测试、性能测试岗位高频真题,答案贴合项目实战,无书面化套话。一、基础认知类(初级必问)1、简单说下你对JMeter的理解,它的作用是什么?JMeter是一款开源的压力测试、性能测试工具,纯Java开发,跨平台、轻量、免费。主要用于对接口、服务器、数据库做压力测试、负载测试、并发测试和稳定性测试。工作中核心用途就是模拟大量用户并发请求,测试系统在不同压力下的响应速度、吞吐量、错误率,找出系统瓶颈,比如接口超时、数据库卡顿、服务器CPU负载过高等问题。2、JMeter支持哪些协议?日常工作中常用的有哪些?JMeter支持绝大多数主流测试协议,不止是接口测试。日常高频使用的:HTTP/HTTPS接口、TCP、JDBC数据库请求。其他支持的:FTP、WebSocket、SOAP、MQ、Redis、JMS等,基本能覆盖后端大部分服务的性能测试场景。3、JMeter和LoadRunner相比,优势和劣势是什么?JMeter优势:开源免费、无需付费授权、上手简单、轻量不占资源、支持插件扩展、适配自动化和持续集成,现在企业主流首选。JMeter劣势:高并发场景下单机性能有限,超大并发需要分布式压测;图形化报表的精细化分析不如LoadRunner全面。LoadRunner优势是老牌专业、高并发稳定性强、分析报表更专业;缺点是收费昂贵、部署复杂、学习成本高,现在中小企业基本很少用。4、JMeter的工作原理是什么?核心是多线程模拟用户并发请求。通过线程组设置虚拟用户数,每个线程对应一个独立用户,按照脚本中的取样器、控制器、定时器、断言等组件,依次发送请求、接收响应、校验结果,最后统计汇总各项性能指标,生成测试报告。整个过程完全模拟真实用户操作链路。二、核心组件类(面试高频)1、说说JMeter常用的核心组件及各自作用?我日常工作中最常用的组件主要有这些:1.测试计划:所有脚本的根节点,所有组件、线程组都在其下,是脚本的总容器。2.线程组:核心组件,用来设置并发用户数、执行时长、循环次数,控制压测的并发规则。3.取样器:真正发送请求的组件,比如HTTP请求、JDBC请求,是脚本的核心执行单元。4.控制器:控制请求执行逻辑,比如循环控制器、if控制器、事务控制器,用来梳理业务流程。5.定时器:模拟用户操作间隔,避免请求瞬时扎堆,常用固定定时器、高斯随机定时器,贴近真实用户行为。6.断言:自动校验响应结果,判断请求是否成功,比如响应断言、JSON断言。7.监听器:查看请求结果和性能数据,常用察看结果树、聚合报告、SummaryReport。8.前置/后置处理器:前置处理器用于请求前处理参数,后置处理器用于提取响应数据、关联参数。2、线程组里的三个核心参数:线程数、Ramp-Up时间、循环次数,分别是什么意思?线程数:模拟的虚拟用户并发数量,1个线程代表1个用户。Ramp-Up时间(秒):所有线程启动完成的总时长。比如线程数100、Ramp-Up10秒,就是10秒内匀速启动完100个线程,每秒启动10个,避免瞬间超大并发压垮服务器。循环次数:每个线程执行请求的次数。选择永久循环就是一直执行,直到手动停止或设置的测试时长结束。3、事务控制器的作用是什么?工作中怎么用?事务控制器可以把多个接口请求合并成一个完整业务事务,统一统计整个业务的响应时间、成功率。比如登录、获取信息、提交订单是一个完整下单流程,把这三个请求放在同一个事务控制器下,就能统计整个下单业务的性能指标,而不是单个接口的指标,更贴合真实业务场景。日常压测核心业务链路都会用事务控制器,方便分析整体业务性能瓶颈。4、定时器有哪些类型?为什么压测必须加定时器?常用定时器:固定定时器、高斯随机定时器、均匀随机定时器、常数偏移定时器。必须加定时器的原因:真实用户操作不会无间隔连续点击,不加定时器会出现瞬时高频请求,属于极端压测场景,数据失真。添加定时器可以模拟用户操作间隔,让压测结果更贴近线上真实场景。一般优先用高斯随机定时器,更贴合用户随机操作的特性。三、脚本实战与参数化、关联(必考)1、JMeter怎么实现接口参数化?有几种方式?工作中常用三种参数化方式,根据场景选择:1.用户自定义变量:适合固定全局参数,比如接口域名、端口,一处修改全局生效,方便环境切换。2.CSV数据文件设置:最常用,适合批量动态参数,比如批量账号密码、批量订单号,读取本地txt、csv文件数据,逐行调用,支持多线程并发取值。3.函数助手:用_Random随机数、_time时间戳、_UUID唯一ID函数,生成动态随机参数,适合手机号、订单编号这类可变参数。2、接口关联怎么做?常用的后置处理器有哪些?接口关联就是把上一个接口的响应数据提取出来,作为下一个接口的请求参数,比如登录获取token,传给后续业务接口。常用三种后置处理器:1.JSON提取器:工作中最常用,针对JSON格式响应,通过JSONPath表达式提取字段,简单精准。2.正则表达式提取器:通用性强,适配文本、HTML、非标准JSON响应,适用范围广,但写法相对复杂。3.边界提取器:通过左右边界截取数据,适合简单固定格式的文本提取,上手快。3、CSV参数化过程中,多线程并发出现参数重复、取值错乱怎么解决?核心是修改CSV数据文件设置的两个参数:1、将「共享模式」改为当前线程独有,每个线程独立读取参数,避免多线程争抢同一行数据;2、勾选「遇到文件结束符再次循环」根据需求调整,避免参数读取完毕后空值报错。改完之后多线程并发就不会出现参数重复、错乱的问题。4、断言的使用场景?怎么区分请求失败和业务失败?断言的作用是自动校验接口响应结果,区分正常响应和异常响应,避免只看HTTP状态码判断结果。请求失败:HTTP状态码非200、请求超时、连接失败、参数错误导致接口无响应。业务失败:HTTP状态码200,但是返回的业务码异常,比如code=500、code=1001,提示参数错误、权限不足、数据不存在,这时候需要通过JSON断言、响应断言捕获业务异常。压测脚本必须加业务断言,否则会出现“请求成功但业务报错”的无效数据。四、性能压测核心指标(重中之重)1、压测核心指标有哪些?分别代表什么含义?1.并发用户数:同时发起请求的虚拟用户数量,模拟线上同时访问系统的用户量。2.TPS(吞吐量):每秒系统处理的请求数,核心性能指标,TPS越高,系统处理能力越强。3.RT(响应时间):从请求发起至接收完响应的总耗时,包含平均响应时间、90%响应时间、95%响应时间,日常优先看90/95分位值,更贴合用户真实体验。4.错误率:失败请求数占总请求数的比例,压测中错误率必须趋近于0,超过1%基本判定系统异常。5.吞吐率:每秒传输的数据量,单位KB/s、MB/s,反映服务器数据传输能力。2、平均响应时间和90%响应时间,为什么优先看90分位?平均响应时间容易被极值掩盖问题。比如大部分请求耗时100ms,少量请求耗时1000ms,平均值会被拉低,看不出卡顿问题。90%响应时间代表90%的用户请求耗时都低于该数值,能真实反映绝大多数用户的访问体验,是企业性能验收的核心标准,比平均值更精准。3、压测中TPS上不去、响应时间变长,一般是什么原因?常见瓶颈分为四大类:1.服务器瓶颈:CPU、内存、磁盘IO、网络带宽占用过高,资源打满导致处理能力下降。2.数据库瓶颈:SQL未优化、索引失效、慢查询过多、数据库连接池耗尽、锁等待超时。3.服务端代码瓶颈:接口逻辑冗余、循环嵌套、缓存未命中、接口重复查询数据。4.压测客户端瓶颈:单机JMeter线程数过多,客户端CPU、内存占满,导致发压能力不足,TPS卡住。4、负载测试、压力测试、稳定性测试的区别?负载测试:逐步增加并发用户,测出系统最优负载、最佳TPS和响应时间,找到系统正常承载上限。压力测试:不断加大并发,超出系统正常负载,直到系统出现超时、报错、宕机,测出系统极限承载能力和崩溃临界点。稳定性测试(耐久测试):在合理并发压力下,长时间持续压测(几小时甚至几天),检测系统是否存在内存泄漏、连接池不释放、服务卡顿等隐性问题。五、分布式压测(中高级必问)1、为什么需要分布式压测?JMeter单机发压能力有限,单机线程数过高时,客户端自身CPU、内存、网络会先打满,出现卡顿、请求阻塞,无法真实压测服务器性能。当需要高并发压测(上千、上万并发)时,就需要搭建分布式压测,用一台主控机控制多台从机,联合发压,突破单机性能限制。2、JMeter分布式压测的原理?采用主从模式:1、主控机(Master):负责分发脚本、控制执行、汇总所有从机的测试数据、生成最终报告,不参与发压。2、从机(Slave):接收主控机的脚本指令,负责执行压测、发送请求、返回数据,承担核心发压任务。所有从机同步执行,最终数据统一汇总,实现大并发压测。3、分布式压测常见问题及解决办法?1、主从连接失败:关闭服务器防火墙、保证主从机端口互通、JMeter版本一致、配置远程主机地址正确。2、脚本执行报错:从机必须和主机保持一致的插件、jar包、参数文件路径,避免环境不一致导致报错。3、数据汇总错乱:统一所有机器的时间,避免日志时间错位,执行结束后统一汇总报告。六、实战问题排查与高级场景1、压测过程中出现大量超时,怎么排查?按从易到难的顺序排查:1、先检查脚本:接口地址、参数、请求头是否正确,是否存在参数缺失、token过期问题;2、查看服务器资源:CPU、内存、带宽是否打满,服务器是否过载;3、排查数据库:是否有慢查询、索引失效、数据库连接数耗尽;4、排查服务日志:查看后端报错、接口阻塞、线程死锁等问题;5、排查客户端:是否是本机资源不足导致发压卡顿。2、JMeter压测时,如何避免token过期问题?工作中常用两种方案:1、前置处理器自动刷新token:单独设置登录接口,通过后置处理器提取token,设置为全局变量,所有业务接口引用,token过期后自动重新调用登录接口刷新;2、设置token有效期适配压测时长:测试环境临时延长token过期时间,适配稳定性压测时长,避免中途过期。3、怎么实现JMeter持续集成,对接Jenkins自动化压测?1、先调试好JMeter脚本,保证本地可正常运行;2、使用JMeter命令行模式执行压测,关闭图形化界面,节省资源;3、在Jenkins中配置构建任务,调用JMeter命令执行脚本,生成jtl结果文件;4、安装JMeter插件,自动解析结果文件,生成可视化压测报告;5、配置阈值判断,若错误率、TPS不达标,自动构建失败并发送邮件通知,实现版本迭代自动性能回归测试。4、压测结果中,线程阻塞时间高是什么原因?线程阻塞时间高,说明请求不是被服务器卡住,而是客户端发不出去请求。常见原因:JMeter线程数过多、客户端内存CPU不足、定时器设置不合理、接口请求排队阻塞,优先优化客户端发压配置,或搭建分布式压测解决。七、面试收尾实操题(口述高频)1、说一次你完整的性能测试流程?1、需求梳理:确认压测接口、核心业务、预期TPS、响应时间、并发数、测试场景;2、脚本编写:录制或手动编写脚本,完成参数化、接口关联、断言、定时器配置,调试脚本通跑;3、单接口调试:单线程验证接口可用性,确保业务正常、数据准确;4、梯度压测:逐步增加并发,做负载测试,找到系统承载上限;5、压力测试:超并发压测,确认系统极限值和容错能力;6、稳定性测试:标准

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论