JMeter性能测试工具核心面试复习指南


JMeter性能测试工具核心面试复习指南

一、JMeter 简介与环境搭建

1. 是什么?

Apache JMeter 是一个基于 Java 的开源压力测试工具,主要用于对软件进行性能测试。

2. 环境要求

  • Java 8 或更高版本

3. 安装与启动

  • 安装:直接下载压缩包(tar/zip),解压即可。

  • 启动(两种方式)

    1. 直接运行 :双击 bin目录下的 jmeter.bat(Windows) 或 jmeter(Unix/Linux)。

    2. 命令行启动(推荐) :将 JMeter 的 bin目录添加到系统环境变量 PATH中,然后在命令行直接输入 jmeter

4. 中文配置

  • 修改 bin/jmeter.properties文件,找到 language配置项,改为 language=zh_CN,重启 JMeter。

二、JMeter 核心概念与基本使用流程

1. 核心元件作用域与执行顺序

  • 核心原则 :元件对其子节点生效。

  • 执行顺序

    1. 配置元件(Configuration Elements)

    2. 前置处理器(Pre-Processors)

    3. 定时器(Timers)

    4. 取样器(Sampler)

    5. 后置处理器(Post-Processors)

    6. 断言(Assertions)

    7. 监听器(Listeners)

  • 注意:同一层级元件的执行顺序按其在测试计划中的先后顺序执行。

2. 基本测试流程

  1. 创建测试计划

  2. 添加线程组:定义并发用户数、启动时间、循环次数等。

  3. 添加取样器(如 HTTP 请求):配置接口的协议、地址、端口、路径、参数等。

  4. 添加监听器(如查看结果树):用于查看请求和响应的详细信息,调试用。

  5. 点击运行

三、重点组件详解(面试高频考点)

1. 线程组

  • 作用:模拟并发用户。

  • 关键参数

    • 线程数(用户数):模拟的虚拟用户数量。

    • Ramp-Up 时间(秒):所有线程启动完毕所需的时间。例如,线程数=10,Ramp-Up=5,表示在5秒内启动10个线程,每秒启动2个。

    • 循环次数:每个线程执行测试脚本的次数。

    • 调度器:可设置测试的持续时间和延迟启动时间。

2. HTTP 请求取样器

  • 核心配置:协议、服务器名称/IP、端口号、HTTP 方法(GET/POST等)、路径、参数(Parameters 或 Body Data)。

3. 逻辑控制器与配置元件

  • HTTP 请求默认值

    • 作用:将多个 HTTP 请求共有的部分(如协议、服务器、端口)提取出来,避免重复配置。

    • 面试点:提高脚本的可维护性。

  • 用户定义的变量

    • 作用 :定义全局变量,可在多个线程组和请求中通过 ${变量名}引用。

    • 面试点:适用于需要统一管理和修改的常量。

  • CSV 数据文件设置

    • 作用 :实现参数化。从外部文件(如 CSV)中读取数据,分配给不同的虚拟用户。

    • 关键配置

      • 文件名:文件路径。

      • 变量名称:定义变量名(多个用逗号分隔)。

      • 分隔符:与文件中的分隔符一致。

      • 遇到文件结束符再次循环?:数据用完是否从头开始。

    • 面试点:用于模拟真实场景下的不同用户登录、不同数据查询等。

  • 同步定时器

    • 作用 :实现集合点。阻塞线程,直到达到指定的线程数量,然后同时释放,模拟瞬间高并发。

    • 面试点:用于测试系统在突发流量下的表现。类比:红灯时行人聚集,绿灯时同时过马路。

  • 事务控制器

    • 作用 :将其下的多个取样器(接口请求)合并为一个事务,统计其整体的响应时间。

    • 面试点:用于衡量一个完整业务流程(如:登录->浏览商品->下单)的性能。

4. 后处理与断言

  • JSON 提取器

    • 作用:从 JSON 格式的响应中提取数据,并存入变量供后续请求使用。

    • 面试点 :常用于处理接口依赖,如从登录接口响应中提取 token,用于后续接口的认证。

    • JSONPath 语法示例$..blogId(提取所有 blogId)。

  • JSON 断言

    • 作用:验证接口响应内容是否符合预期。

    • 面试点 :判断接口是否真正成功,而不仅仅是返回 HTTP 200。

5. 监听器与性能指标

  • 聚合报告

    • 核心指标(必须掌握)

      • Samples:总请求数。

      • Average:平均响应时间。

      • Median:响应时间中位数(50% Line)。

      • 90% Line / 95% Line / 99% Line :90%/95%/99%的请求响应时间小于等于这个值。(重要)

      • Min/Max:最小/最大响应时间。

      • Error %:错误率。

      • Throughput :吞吐量(TPS/QPS)。(核心指标)

      • Received KB/sec:网络吞吐量。

  • jp@gc - Response Times Over Time

    • 作用 :以曲线图展示响应时间随时间的变化趋势
  • jp@gc - Transactions per Second

    • 作用 :以曲线图展示TPS(每秒事务数)随时间的变化趋势

四、高级功能与测试报告

1. JMeter 插件

  • Plugins Manager:用于安装和管理插件。

  • 常用插件线程组 :如 Stepping Thread Group ,可以更灵活地设置梯度加压场景(如:每隔30秒增加10个用户)。

2. 生成 HTML 测试报告

  • 命令行命令

    复制代码
    jmeter -n -t <脚本文件名.jmx> -l <结果日志文件.jtl> -e -o <报告输出目录>
    • -n:非GUI模式运行。

    • -t:指定测试脚本。

    • -l:指定结果日志文件。

    • -e:生成报告。

    • -o:指定报告输出目录。

  • 注意:输出目录必须为空。

五、性能结果分析思路(面试核心)

分析性能测试结果,主要关注三大指标的关系和变化:

  1. 响应时间

    • 问题:响应时间是否超过预期/阈值?

    • 分析:是在多少并发用户下超标的?是突然变长还是随并发增加逐渐变长?

  2. 错误率/可靠性

    • 问题:错误率是否过高?

    • 可能原因

      • 接口本身有Bug。

      • 系统达到性能瓶颈(代码问题、内存泄漏、资源耗尽)。

      • 触发了系统的限流、熔断、降级机制。

        • 熔断:防止故障扩散,暂时停止调用问题服务。(如:支付渠道不可用)

        • 降级:保障核心功能,暂时关闭非核心功能。(如:评论功能不可用,显示默认头像)

  3. 吞吐量

    • 黄金标准:吞吐量越高,系统性能越好。

    • 变化规律分析

      • 吞吐量随并发增加而增加,最终趋于平稳 :这是正常现象,平稳点即性能拐点

      • 吞吐量达到拐点后开始下降:系统已过载,处理能力下降。

      • 吞吐量波动很大:系统性能不稳定。

总结:一个健康的系统,在并发增加时,响应时间应缓慢上升,错误率保持极低,吞吐量逐渐增加并最终稳定。当响应时间急剧增加或错误率飙升时,对应的并发用户数和吞吐量就是系统的性能极限。


相关推荐
测试老哥9 小时前
软件测试之功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
a程序小傲10 小时前
得物Java面试被问:RocketMQ的消息轨迹追踪实现
java·linux·spring·面试·职场和发展·rocketmq·java-rocketmq
小π军12 小时前
腾讯微信后台开发一面面经
面试
安然无虞13 小时前
「深入理解多线程编程」再谈线程
爬虫·python·测试工具
a程序小傲17 小时前
米哈游Java面试被问:gRPC的HTTP/2流控制和消息分帧
java·开发语言·tcp/ip·http·面试·职场和发展·php
@zulnger18 小时前
selenium 自动化测试工具实战项目(客户)
selenium·测试工具·自动化
努力学算法的蒟蒻19 小时前
day68(1.27)——leetcode面试经典150
面试·职场和发展
奇遇0.0048719 小时前
tryhackme-Wireshark:基础知识
网络·测试工具·wireshark