CentOS下JMeter如何进行API测试
导读:在 CentOS 上使用 JMeter 进行 API 测试 一 环境准备 安装 Java 8+(JMeter 5.x 推荐),并配置环境变量(示例为 OpenJDK 8): 安装:sudo yum install -y java-1.8...
在 CentOS 上使用 JMeter 进行 API 测试
一 环境准备
- 安装 Java 8+(JMeter 5.x 推荐),并配置环境变量(示例为 OpenJDK 8):
- 安装:
sudo yum install -y java-1.8.0-openjdk-devel - 配置:
/etc/profile中添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport PATH=$PATH:$JAVA_HOME/bin
- 验证:
java -version与javac -version
- 安装:
- 安装 JMeter(建议二进制包方式,便于多版本管理):
- 下载并解压:
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz & & tar -xzf apache-jmeter-5.4.3.tgz -C /opt/ - 软链或加入 PATH:
ln -s /opt/apache-jmeter-5.4.3 /usr/local/jmeter或export PATH=$PATH:/opt/apache-jmeter-5.4.3/bin - 验证:
jmeter -v
- 下载并解压:
- 如需图形界面,可本机安装 GUI 后用 X11 转发;在服务器上建议直接使用非 GUI 模式执行测试。
二 编写测试计划
- 规划用例与数据:从 API 文档梳理接口清单、请求方式、入参/出参、鉴权方式;设计覆盖 必填项、边界值、异常值、错误码 等的用例,测试数据放入 CSV 以便参数化。
- 核心元件与顺序(自顶向下):
- 线程组:并发用户数、Ramp-Up、循环次数
- HTTP 请求默认值:统一配置协议、服务器/IP、端口、编码
- HTTP Header Manager:如
Content-Type: application/json、Authorization: Bearer < token> - CSV Data Set Config:读取 CSV,变量化如
${ uid} 、${ token} - HTTP 请求:GET/POST/PUT/DELETE,Body(JSON/Form)、参数、文件上传
- 前置处理器:如 JSON Extractor/正则提取器,从上个响应提取
token、userId等供后续使用 - 断言:响应断言(状态码、包含文本、JSON Path)、持续时间断言
- 后置处理器/监听器:JSON Extractor、BeanShell PostProcessor、查看结果树(仅调试)、聚合报告、Summary Report
- 调试与稳定性建议:
- 先用小并发验证脚本,再逐步加压
- 统一 Header、合理超时、禁用无关监听器以减少内存占用
- 使用 HTTP Cookie 管理器处理会话;对需要登录的接口,先登录并提取 token 再串联请求。
三 在 CentOS 上执行与报告
- 非 GUI 执行与 HTML 报告(推荐):
- 命令:
jmeter -n -t /path/test.jmx -l /path/result.jtl -e -o /path/html-report - 说明:
-n非 GUI;-t指定脚本;-l结果文件(JTL/CSV);-e -o结束后生成 HTML 报告(目录需为空)- 若提示找不到命令,使用绝对路径:
/opt/apache-jmeter-5.4.3/bin/jmeter ...
- 命令:
- 常用参数与技巧:
- 日志与控制台输出:
-j /path/run.log - 分布式/远程执行:
-R host1:1099,host2:1099;需在各节点启动jmeter-server并开放 1099 端口 - 结果格式:如需在第三方工具中解析,可在
jmeter.properties设置jmeter.save.saveservice.output_format=xml
- 日志与控制台输出:
- 报告查看与对比:
- HTML 报告位于
-o指定目录,包含 APDEX、响应时间分布、吞吐量、错误率 等关键指标 - 历史对比建议保留每次的 JTL/HTML,或使用 Jenkins Performance Plugin 归档与对比趋势。
- HTML 报告位于
四 常见问题与排错
- 接口访问不通或端口未放行:
- 检查目标服务是否监听正确端口(如 8080/80/443),以及 firewalld:
firewall-cmd --list-ports;放行示例:firewall-cmd --permanent --add-port=8080/tcp & & firewall-cmd --reload - 先用
curl http://IP:PORT/health验证连通性,再执行 JMeter
- 检查目标服务是否监听正确端口(如 8080/80/443),以及 firewalld:
- 中文乱码与编码:
- 在
jmeter.properties设置sampleresult.default.encoding=UTF-8,并在 HTTP Header 明确Content-Type: application/json; charset=UTF-8
- 在
- 认证与关联失败:
- 登录后使用 JSON Extractor/正则 提取
access_token,存入变量并在后续请求的 Header 中使用${ token}
- 登录后使用 JSON Extractor/正则 提取
- 内存不足或 GC 频繁:
- 编辑
bin/jmeter(或jmeter脚本)中的HEAP参数,例如:HEAP="-Xms1g -Xmx2g"(根据机器内存调整)
- 编辑
- 报告目录非空或文件已存在:
- 执行前确保
-o目录为空;-l指定的 JTL 文件不存在,否则会报错(可先备份或删除旧文件)。
- 执行前确保
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS下JMeter如何进行API测试
本文地址: https://pptw.com/jishu/788359.html
