# 1. JMeter 的线程组、Ramp-up、循环次数如何组合模拟目标并发模型? A Ramp-up 时间越长,越接近瞬时全量并发 B 循环次数越多,并发数越高 C 线程数代表虚拟用户数,Ramp-up 控制加压速度,循环次数与时长决定负载曲线 ✓ 正确答案 D Ramp-up 与并发模型无关,可任意设置
# 2. JMeter 的参数化(CSV/函数)、关联(正则/JSON 提取器)与断言设计要点? A 参数化保证数据动态,关联提取动态值供后续请求,断言校验结果正确性 ✓ 正确答案 B 关联用 CSV 读取外部数据,参数化从响应提取动态值 C 断言用于生成动态数据,无需校验请求结果 D 参数化与关联功能相同,可相互替代
# 3. 压测中 TPS 上不去、响应时间飙升时的瓶颈定位方法论(应用/数据库/中间件/带宽逐层排查)? A 逐层排查应用、数据库、中间件与带宽,结合资源利用率定位瓶颈层 ✓ 正确答案 B TPS 上不去可直接断定是应用层问题,无需排查其他层 C 数据库慢查询与 TPS 上不去无关,无需排查 D 带宽占满不会影响 TPS,只影响响应时间
# 4. JMeter 分布式压测中 Master-Slave 的同步误差如何控制,结果如何合并? A 各 Slave 时钟无需同步,启动时间差异不影响并发模型 B 分布式压测只由 Master 加压,Slave 不参与 C Master 与 Slave 结果需分别展示,不能合并 D 通过 NTP 时钟同步、同时启动与稳态平台期控制同步误差,结果汇总合并统计 ✓ 正确答案
# 5. k6/Locust 以代码方式编写压测脚本相对 JMeter GUI 的优势与适用场景? A JMeter GUI 脚本可维护性高于代码化脚本 B k6/Locust 代码化脚本可维护、可版本管理、易接入 CI,适合工程化场景 ✓ 正确答案 C 代码化脚本无法编程构造复杂场景,只能简单请求 D 代码化脚本无法对接时序库,可观测性差
# 6. 如何用 Grafana + Prometheus 把压测过程中的服务指标与 JMeter 报告对齐? A 压测指标与服务指标需分开看,无法对齐 B 压测时间与服务指标变化无需对齐,独立分析即可 C Prometheus 只采集服务指标,无法采集压测指标 D JMeter 指标上报 Prometheus,通过统一时间戳与标签在 Grafana 中与服务指标对齐分析 ✓ 正确答案
# 7. Locust 的协程模型相比 JMeter 线程模型在高并发模拟上的优势与陷阱? A 协程模型每用户一个线程,单机并发数受限 B Locust 只能用同步阻塞 IO,无法支持高并发 C 协程模型与线程模型并发能力完全相同 D 协程单机可模拟高并发且开销低,但 CPU 密集操作会阻塞协程影响加压 ✓ 正确答案
# 8. 压测结果与业务指标的关联分析,TPS/RT 与订单量、错误率、营收等业务指标如何对照解读? A TPS 只反映技术能力,与订单量等业务量无关 B RT 与转化率、营收无关,无需关联 C TPS 可折算为业务量,RT 影响用户体验,错误率影响业务成功率,需对照业务解读 ✓ 正确答案 D 压测只需看技术指标,业务指标由运营关注
# 9. JMeter 逻辑控制器与场景建模,IF、While、随机与交替控制器如何组合出真实用户路径,偏差如何评估? A IF 控制器按概率随机选择请求,模拟用户多样性 B 逻辑控制器只能线性执行,无法模拟分支与循环 C 用 IF/While/随机/交替控制器组合建模真实用户路径,并用生产流量比例评估偏差 ✓ 正确答案 D 场景偏差无需评估,脚本结构即可保证真实
# 10. JMeter 变量作用域与脚本可维护性,用户定义变量、属性与 CSV 数据集的优先级如何影响复用,跨线程组共享如何实现? A 用户定义变量作用于当前线程组,CSV 变量作用于全局 B 属性只能在线程组内使用,无法跨线程组 C 公共配置用用户定义变量与属性,线程数据用 CSV,跨线程组共享用属性 ✓ 正确答案 D 变量作用域不影响脚本复用与维护
# 11. 压测前的环境预热与数据铺底为什么重要?不做会导致什么误判? A 预热消除冷启动造成的 TPS 偏低,数据铺底避免数据量不足导致 TPS 虚高 ✓ 正确答案 B 预热与铺底无关紧要,可直接压测 C 数据铺底只影响测试环境,不影响压测结论 D 冷启动的 TPS 偏低是真实性能,无需预热
# 12. 压测脚本中的思考时间(Think Time)与并发模型如何还原真实用户行为? A 思考时间用于让虚拟用户持续快速发请求,提高 TPS B 思考时间只影响测试时长,不影响并发负载 C 思考时间决定用户操作间隔,影响用户数到请求负载的换算,能还原真实用户行为 ✓ 正确答案 D 思考时间应设为 0,以最快速度压测
# 13. 压测报告的解读,聚合与图表? A 只需看平均响应时间即可评估性能,无需看分位 B 错误率与 TPS 无关,无需解读 C 聚合报告与图表数据矛盾时以平均值为准 D 结合 TPS/RT 曲线看拐点,结合资源利用率与分位判断瓶颈与稳定 ✓ 正确答案
# 14. JMeter 插件生态,WebSocket/gRPC/HTTP2 采样器如何扩展协议覆盖? A JMeter 原生支持所有协议,无需插件 B HTTP/2 与 HTTP/1、WebSocket 采样器功能相同 C gRPC 插件基于 JSON 构造请求,无需 proto 文件 D 通过插件管理器安装 WebSocket、gRPC、HTTP2 等采样器扩展协议覆盖 ✓ 正确答案
# 15. 压测脚本的版本管理与团队协作,JMX/代码化脚本的评审、参数化规范与仓库管理? A 压测脚本一次性使用,无需版本管理与评审 B 脚本纳入 Git 仓库、评审与参数化规范管理,保证可维护可追溯 ✓ 正确答案 C JMX 脚本无法纳入版本管理,只能本地保存 D 参数化规范与仓库管理无关,无需统一
# 16. JMeter CSV 参数化与分布式数据分配,多 Slave 间如何避免参数重复与冲突? A 各 Slave 从同一 CSV 从头读取,数据重复无影响 B CSV 数据量越小越好,便于分配 C 分布式压测无需担心数据重复,参数天然唯一 D 通过 CSV 共享模式、数据分片或分布式数据源,确保各 Slave 数据不重叠避免冲突 ✓ 正确答案
# 17. 压测工具的选型矩阵,JMeter/Locust/k6/Gatling 在协议支持、脚本语言与可观测性上的取舍? A 所有压测工具协议支持、脚本语言与可观测性完全相同 B k6 使用 JMX 脚本,可观测性差 C JMeter 协议广、k6 可观测性强且适合 CI、Locust 用 Python 协程、Gatling 用 Scala 高性能,按场景取舍 ✓ 正确答案 D Gatling 用 Python 编写脚本,适合高并发
# 18. JMeter 结果文件与报告生成,结果写入、HTML 报告生成与 CI 归档如何配置,结果文件过大如何处理? A 通过命令行生成 HTML 报告并在 CI 归档;结果文件过大时可只存聚合或降低采样频率 ✓ 正确答案 B 结果文件只能保存原始样本,无法生成聚合报告 C HTML 报告无法在 CI 中生成,只能手动打开 D 结果文件越大越好,可完整记录所有数据