如何在Ubuntu上使用JMeter进行接口测试
导读:在 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)、Path、Parameters/Body Data、Headers 等
- HTTP 头管理器(可选,Config Element → HTTP Header Manager)
- 例如添加 Content-Type: application/json
- 断言(Assertions)
- 响应断言:校验 响应码、响应头、响应体 等
- JSON 断言:用 JSON Path 校验返回结构或值
- 后置处理器(Post Processors → JSON Extractor,按需)
- 从 JSON 响应提取变量,供后续请求使用
- 监听器(Listeners)
- 查看结果树:调试用,查看请求/响应/断言详情
- 聚合报告/Summary Report:统计 样本数、平均响应时间、95% Line、错误率、吞吐量 等
- 线程组(Threads/Users → Thread Group)
- 运行与调试
- 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}
- 在请求上添加 JSON Extractor
- 变量与属性
- 命令行传参:-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 模式
- 运行报错 NoClassDefFoundError: org/eclipse/jetty/util/ssl/SslContextFactory
- 最佳实践
- 并发与机器规格:单机并发不宜过高,建议先从 ≤50 线程 验证脚本与稳定性,再逐步放大;压测时关注 CPU、内存、网络、连接数 等指标
- 结果分析:结合 聚合报告/HTML 报告 与 .jtl 原始数据,关注 错误率、P95/P99、吞吐量 的变化趋势,必要时分场景/分接口对比
- 测试数据:使用 CSV 参数化 与 唯一数据策略(如时间戳/UUID),避免缓存或唯一性冲突
- 稳定性:设置 合理的超时、重试策略 与 思考时间(定时器),贴近真实用户行为
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上使用JMeter进行接口测试
本文地址: https://pptw.com/jishu/777903.html
