温馨提示×

如何利用JMeter在CentOS上进行接口测试

小樊
39
2025-12-23 17:03:35
栏目: 智能运维

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

一 环境准备

  • 安装 Java 8(JMeter 5.x 建议使用 Java 8):
    • 安装命令:sudo yum install -y java-1.8.0-openjdk-devel
    • 验证:java -version
  • 安装 JMeter(推荐二进制包方式,便于多版本管理):
    • 下载并解压:wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz && tar -xzf apache-jmeter-5.4.3.tgz -C /usr/local/
    • 建议创建软链:ln -s /usr/local/apache-jmeter-5.4.3 /usr/local/jmeter
    • 可选环境变量(便于直接执行 jmeter 命令):
      • /etc/profile 末尾添加:
        • export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
        • export PATH=$JMETER_HOME/bin:$PATH
      • 使配置生效:source /etc/profile
    • 验证:jmeter -v
  • 说明:也可使用 Docker 运行 JMeter,适合隔离环境或快速试用。

二 编写测试脚本

  • 方式 A(推荐):在本地 GUI 创建并调试脚本(如 Windows 或带桌面环境的 Linux),保存为 .jmx,再上传到 CentOS 执行。
  • 方式 B:在 CentOS 使用命令行工具生成基础脚本(适合简单场景):
    • 生成测试计划:/usr/local/jmeter/bin/jmeter -n -t /dev/null -l /tmp/test.jtl -e -o /tmp/report
    • 将生成的 /tmp/test.jmx 下载到本地,用 GUI 完善(添加 线程组、HTTP 请求、断言、监听器 等),再上传回 CentOS。
  • 脚本关键要素(建议结构):
    • 线程组:设置 线程数Ramp-Up Period循环次数/持续时间
    • HTTP 请求:配置 协议、服务器名或 IP、端口、方法、路径、参数/Body、编码
    • HTTP 信息头管理:如 Content-Type: application/json(JSON 接口)。
    • 断言:如 响应断言(状态码、包含文本)、JSON 断言(JSON Path 校验)。
    • 监听器:如 查看结果树(调试用)、聚合报告(吞吐、响应时间、错误率等)。

三 在 CentOS 非 GUI 模式执行与报告

  • 基本执行(最小化输出):
    • 命令:/usr/local/jmeter/bin/jmeter.sh -n -t /path/to/test.jmx -l /path/to/result.jtl -j /path/to/run.log
    • 参数说明:
      • -n 非 GUI 模式
      • -t 指定测试脚本
      • -l 保存结果(JTL/CSV)
      • -j 保存 JMeter 运行日志
  • 生成 HTML 报告(需 JMeter 3.0+):
    • 命令:/usr/local/jmeter/bin/jmeter.sh -n -t /path/to/test.jmx -l /path/to/result.jtl -e -o /path/to/html-report
    • 报告目录需为空,执行后可在浏览器打开 index.html 查看图表与指标。
  • 结果分析要点(聚合报告):
    • #Samples(请求总数)、Average/Median/90% Line/Min/Max(响应时间分布)
    • Error%(错误率)、Throughput(吞吐量,每秒完成请求数)。

四 参数化与关联

  • 参数化常用方式:
    • 用户定义的变量:管理不变参数(如域名、端口)。
    • 函数助手:如 __Random__time__UUID,生成动态数据。
    • CSV Data Set Config:从 CSV 文件批量读取参数(适合账号、手机号等)。
  • 关联(提取前置接口返回值供后续使用):
    • 常用 正则表达式提取器JSON Extractor,将提取结果保存为变量(如 ${token}),在后续请求中引用。
  • 断言与验证:
    • 响应断言:校验状态码、响应文本、响应头、响应时间等。
    • JSON 断言:通过 JSON Path 精确校验返回结构或字段值。

五 持续集成与扩展

  • Jenkins 集成(示例 Pipeline):
    • 执行与报告:
      • sh 'jmeter -n -t /usr/local/jmeter/script/test.jmx -l test.jtl -j /usr/local/jmeter/log/test.log'
    • 可视化报告:安装 Performance Plugin,在“构建后操作”中 Publish Performance Test Result Report,指定 test.jtl
  • 分布式压测(多台压力机):
    • 在各压力机启动 jmeter-server(Linux:/usr/local/jmeter/bin/jmeter-server)。
    • 在控制机 jmeter.properties 中配置 remote_hosts=IP1:1099,IP2:1099,重启 JMeter 后即可远程启动全部压力机。
  • 监控可视化(可选):
    • 集成 InfluxDB + Grafana 存储与展示压测指标(JMeter Backend Listener 写入 InfluxDB,Grafana 展示面板)。

0