Ubuntu中JMeter如何进行接口测试
小樊
33
2025-11-28 22:52:40
Ubuntu 下使用 JMeter 进行接口测试
一 环境准备
安装 Java 8 或更高版本 (JMeter 为纯 Java 应用)。例如在 Ubuntu 上可执行:sudo apt install openjdk-11-jdk。安装后执行 java -version 验证。
下载并解压 Apache JMeter 二进制包 (apache-jmeter-*.tgz),建议放到 /opt/jmeter 等固定目录。
配置环境变量(示例):
export JMETER_HOME=/opt/jmeter
export PATH=$JMETER_HOME/bin:$PATH
执行 source /etc/profile 使其生效,使用 jmeter -v 验证安装。
二 快速上手一个 HTTP 接口
启动 GUI:在 JMETER_HOME/bin 下执行 ./jmeter(仅用于编写与调试脚本)。
新建测试计划 → 添加线程组(Thread Group):设置线程数(并发用户)、Ramp-Up 时间(启动所有线程的秒数)、循环次数。
添加配置元件:
HTTP 请求默认值:填写协议(http/https)、服务器名称或 IP、端口,供同作用域内采样器继承。
HTTP 信息头管理器:如接口为 JSON,添加头 Content-Type: application/json 。
添加取样器:HTTP 请求(HTTP Request),设置方法(GET/POST 等)、路径、请求参数或请求体(Body Data)。
添加监听器:查看结果树(View Results Tree)用于调试,聚合报告(Summary Report)用于查看统计指标。
运行与查看:在 GUI 中点击启动,先通过“查看结果树”确认请求与响应,再在“聚合报告”中查看 样本数、平均响应时间、95% 百分位、错误率 等。
三 常用增强与参数化
后置处理器与提取:使用 JSON Extractor 从响应中提取字段(如 token),保存到变量(如 ${token}),供后续请求引用;常用配置包括 Variable names、JSON Path expressions、Match Numbers、Default Value 。
断言:
JSON Assertion:校验 JSON 路径与值(如 $.success 为 true)。
响应断言:校验响应码、响应文本、响应时间等。
参数化与数据驱动:
用户定义的变量:定义公共变量(如 host、port),用 ${变量名} 引用。
CSV Data Set Config:从 CSV 文件读取多组参数(如账号、密码),实现批量数据驱动测试。
定时器:如 Constant Timer / Gaussian Random Timer ,控制请求间隔,模拟更真实的用户行为。
四 命令行运行与 HTML 报告
非 GUI 执行(推荐用于执行与压测):
jmeter -n -t <test-plan.jmx> -l <result.jtl> -e -o
说明:-n 非 GUI,-t 指定脚本,-l 保存结果日志,-e -o 生成 HTML 报告。
批量与参数化执行示例:
多次执行取平均:
for i in {1…10}; do
jmeter -n -t test.jmx -l testcsv/test-$i.csv -e -o testReport/test-$i/;
done
线程数外置传参(在 JMX 中用 ${__P(threadNum)}):
for threadCount in $(seq 100 100 1000); do
for i in {1…10}; do
jmeter -n -t test.jmx -J threadNum=$threadCount -l testcsv/test$threadCount-$i.csv -e -o testReport/test$threadCount-$i/;
sleep 1;
done;
done
结果分析:HTML 报告位于 目录;若需程序化读取,可在统计文件 statistics.json 的 Total 对象中查看 throughput(吞吐量) 等指标。
五 分布式接口测试简述
适用场景:单机能承载的线程/压力有限时,使用 分布式测试 (Controller/Worker 架构)。
基本步骤:
在所有节点安装相同版本的 JMeter。
先启动 Workers(服务器模式):
JMETER_HOME/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=<Worker_IP>
注意必须显式设置 java.rmi.server.hostname ,否则可能报 “Cannot start… loopback address”。
Controller 节点执行脚本(Worker 无需脚本):
jmeter -n -t performance-test.jmx -R <Worker_IP1,Worker_IP2,…> -l result.jtl -e -o report/
提示:分布式能扩展压力,但网络与配置复杂度更高,建议先在单机验证脚本与场景,再扩展至多机。