首页主机资讯如何在Ubuntu上使用JMeter进行接口测试

如何在Ubuntu上使用JMeter进行接口测试

时间2025-12-22 23:16:03发布访客分类主机资讯浏览1145
导读:在 Ubuntu 上使用 JMeter 进行接口测试 一 环境准备 安装 Java(JMeter 需要 Java 8 及以上)。在 Ubuntu 上推荐使用 OpenJDK: 安装命令:sudo apt update &&...

在 Ubuntu 上使用 JMeter 进行接口测试

一 环境准备

  • 安装 Java(JMeter 需要 Java 8 及以上)。在 Ubuntu 上推荐使用 OpenJDK:
    • 安装命令:sudo apt update & & sudo apt install openjdk-11-jdk -y
    • 验证版本:java -version
  • 下载并安装 JMeter(无需编译,解压即用):
    • 下载地址:https://jmeter.apache.org/download_jmeter.cgi
    • 解压示例:tar -xzf apache-jmeter-5.4.3.tgz -C /opt
    • 配置环境变量(写入 /etc/profile~/.bashrc):
      • export JMETER_HOME=/opt/apache-jmeter-5.4.3
      • export PATH=$JMETER_HOME/bin:$PATH
    • 使配置生效:source /etc/profile
    • 验证安装:jmeter -v(应输出版本号)

二 创建第一个 HTTP 接口测试

  • 启动 GUI:在 JMeter 目录执行 ./bin/jmeter(或直接在任意目录执行 jmeter)。
  • 新建测试计划,按下列顺序添加元件(右键“测试计划”→“添加”):
    • 线程组(Threads/Users → Thread Group)
      • 关键参数:Number of Threads(并发数)Ramp-Up Period(秒)Loop Count(循环次数)
    • HTTP 请求默认值(Config Element → HTTP Request Defaults)
      • 作用域内的 HTTP 请求可继承:协议、服务器名或IP、端口、路径、编码、参数
    • HTTP 请求(Sampler → HTTP Request)
      • 设置 Method(GET/POST/PUT/DELETE)PathParameters/Body DataHeaders
    • HTTP 头管理器(可选,Config Element → HTTP Header Manager)
      • 例如添加 Content-Type: application/json
    • 断言(Assertions)
      • 响应断言:校验 响应码、响应头、响应体
      • JSON 断言:用 JSON Path 校验返回结构或值
    • 后置处理器(Post Processors → JSON Extractor,按需)
      • 从 JSON 响应提取变量,供后续请求使用
    • 监听器(Listeners)
      • 查看结果树:调试用,查看请求/响应/断言详情
      • 聚合报告/Summary Report:统计 样本数、平均响应时间、95% Line、错误率、吞吐量
  • 运行与调试
    • GUI 中点击绿色启动按钮;先保存 .jmx 脚本再执行
    • 通过“查看结果树”排查请求与断言问题,再切换到聚合报告查看整体指标

三 命令行运行与生成报告

  • 非 GUI 模式(推荐用于压测/CI):
    • 基本命令:jmeter -n -t < test-plan.jmx> -l < result.jtl>
    • 生成 HTML 报告:jmeter -n -t < test-plan.jmx> -l < result.jtl> -e -o
  • 示例(在同目录执行):
    • jmeter -n -t demo.jmx -l result.txt -e -o webreport
  • 说明
    • -n 非 GUI;-t 指定脚本;-l 保存结果日志(如 .jtl/.csv);-e -o 生成 HTML 报告目录
    • 报告目录必须为空;如需多次执行,请更换报告目录或使用不同结果文件

四 参数化与关联示例

  • 参数化(CSV 数据文件)
    • 添加配置元件:CSV Data Set Config
    • 指定 Filename(CSV 路径)、Variable Names(如 username,password)、Delimiter(如 ,)、Recycle on EOF(是否循环)、Stop thread on EOF(是否停止)
    • 在 HTTP 请求中使用 ${ username} ${ password} 引用变量
  • 关联(提取并传递数据)
    • 在请求上添加 JSON Extractor
      • Names of created variables:变量名(如 token
      • JSON Path Expressions:如 $.data.token
      • Match No.:取第几个匹配(0 随机,-1 全部,1 第一个)
    • 后续请求在 Header/Cookie/Body 中使用 ${ token}
  • 变量与属性
    • 命令行传参:-JthreadNum=200;在 JMeter 中用 ${ __P(threadNum,100)} 读取(默认 100
    • 适合批量跑不同并发/场景而无需改 .jmx

五 常见问题与最佳实践

  • 常见问题
    • 运行报错 NoClassDefFoundError: org/eclipse/jetty/util/ssl/SslContextFactory
      • 原因:使用 WebSocket 等插件时缺少 Jetty/WebSocket 相关依赖
      • 解决:将依赖 jetty-http-.jar、jetty-util-.jar、jetty-io-.jar、websocket-.jar 放入 $JMETER_HOME/lib/ext,重启 JMeter
    • GUI 卡顿或资源占用高
      • 建议:仅在本地用 GUI 编写/调试脚本;压测一律用 CLI 模式
  • 最佳实践
    • 并发与机器规格:单机并发不宜过高,建议先从 ≤50 线程 验证脚本与稳定性,再逐步放大;压测时关注 CPU、内存、网络、连接数 等指标
    • 结果分析:结合 聚合报告/HTML 报告.jtl 原始数据,关注 错误率、P95/P99、吞吐量 的变化趋势,必要时分场景/分接口对比
    • 测试数据:使用 CSV 参数化唯一数据策略(如时间戳/UUID),避免缓存或唯一性冲突
    • 稳定性:设置 合理的超时重试策略思考时间(定时器),贴近真实用户行为

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在Ubuntu上使用JMeter进行接口测试
本文地址: https://pptw.com/jishu/777903.html
JMeter在Ubuntu上的并发测试如何设置 JMeter在Ubuntu上的日志管理如何操作

游客 回复需填写必要信息