温馨提示×

Ubuntu中如何使用JMeter进行API测试

小樊
34
2025-12-20 15:11:28
栏目: 智能运维

在 Ubuntu 上使用 JMeter 进行 API 测试

一 环境准备

  • 安装 Java(JMeter 为 Java 应用,建议 Java 8/11/17/21)。例如在 Ubuntu 上安装 OpenJDK 11:
    • 命令:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 下载并安装 Apache JMeter(以 5.6.3 为例):
    • 下载:wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.3.tgz
    • 解压:tar zxvf apache-jmeter-5.6.3.tgz
    • 配置环境变量(示例放入 /opt):
      • sudo mv apache-jmeter-5.6.3 /opt/jmeter
      • ~/.bashrc/etc/profile 中添加:
        • export JMETER_HOME=/opt/jmeter
        • export PATH=$JMETER_HOME/bin:$PATH
      • 使配置生效:source ~/.bashrc
    • 验证:jmeter -v(应输出版本号)

二 创建第一个 API 测试计划

  • 启动 GUI(仅用于编写/调试脚本):jmeter
  • 在 GUI 中构建测试计划:
    • 添加线程组:右键测试计划 → 添加 → 线程(用户)→ 线程组
      • 关键参数:线程数(并发用户)、Ramp-Up 时间(秒)(启动全部线程的时长)、循环次数
    • 添加 HTTP 请求采样器:线程组 → 添加 → 取样器 → HTTP 请求
      • 配置:协议 http/https服务器名称或 IP端口方法 GET/POST/PUT/DELETE路径
      • 在 Body Data 中填入 JSON 请求体(如需要)
    • 添加 HTTP 信息头管理器:线程组 → 添加 → 配置元件 → HTTP Header Manager
      • 常用头:Content-Type: application/jsonAuthorization: Bearer <token>
    • 添加断言:HTTP 请求 → 添加 → 断言
      • 常用:响应断言JSON Assertion(验证 JSON 路径与值)
    • 添加监听器:线程组 → 添加 → 监听器
      • 常用:查看结果树(单请求详情)、汇总报告/聚合报告(总体统计)
  • 保存为 .jmx 文件,后续可在无头环境复用

三 在无头环境运行与生成报告

  • 非 GUI 执行并生成 HTML 报告(推荐在 CI/服务器使用):
    • 命令:jmeter -n -t test_plan.jmx -l result_file.jtl -e -o test_result_folder
    • 参数说明:
      • -n 非 GUI 模式
      • -t 指定测试计划 .jmx
      • -l 保存结果到 .jtl
      • -e 测试完成后生成报告
      • -o 指定 HTML 报告输出目录(必须为空或不存在)
  • 仅保存日志/结果(不生成 HTML):jmeter -n -t test_plan.jmx -l result_file.jtl
  • 在 GUI 中查看 .jtl:打开 JMeter → 监听器 → 聚合报告/查看结果树 → 点击“浏览”加载 .jtl 文件进行分析

四 参数化与批量接口测试

  • 使用 CSV Data Set Config 批量驱动用例:
    • 线程组 → 添加 → 配置元件 → CSV Data Set Config
      • 设置 Filename(CSV 路径)、Variable Names(如 username,password,api,body,exp)
      • 常用:忽略首行 True遇到文件结束符停止线程 True
    • 在 HTTP 请求中引用变量:${api}${body}${exp}
    • 在 JSON Assertion 中使用变量:${exp} 验证响应
  • 典型 CSV 列:用例编号、功能序号、接口地址、请求方法、请求体参数、预期结果等,便于覆盖大量接口与数据组合

五 常见问题与进阶

  • 分布式压测(多机施压):
    • 在所有 Worker 节点启动服务:jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=<Worker_IP>
    • 在 Controller 节点执行:jmeter -n -t plan.jmx -l out.csv -e -o report -R <Worker_IP1>,<Worker_IP2>
    • 注意正确设置 RMI 主机名,避免回环地址导致无法连接
  • WebSocket 等特殊协议:
    • 需安装对应插件与依赖(如 WebSocket Sampler 及 Jetty/WebSocket 相关 JAR),放入 lib/ext 目录后重启 JMeter
  • 中文界面:编辑 jmeter.properties,将 language=en 改为 language=zh_CN 并重启
  • 无头执行权限与路径:确保 JMETER_HOME/binPATH,且报告输出目录可写

0