温馨提示×

CentOS下JMeter如何进行Web测试

小樊
35
2025-12-07 21:45:29
栏目: 智能运维

CentOS下使用JMeter进行Web测试

一 环境准备

  • 安装 Java(JMeter 基于 Java,推荐 OpenJDK 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
      • 移动到目录:sudo mv apache-jmeter-5.4.3 /opt/jmeter
      • 配置环境变量(写入 ~/.bashrc/etc/profile):
        • export JMETER_HOME=/opt/jmeter
        • export PATH=$PATH:$JMETER_HOME/bin
      • 使生效:source ~/.bashrc
      • 验证:jmeter -v
    • 方式二 YUM 安装(版本可能滞后)
      • 新建 repo:sudo vi /etc/yum.repos.d/jmeter.repo
      • 写入:
        [jmeter]
        name=JMeter Repository
        baseurl=https://dl.bintray.com/apache//jmeter/binaries/
        enabled=1
        gpgcheck=0
        
      • 安装与验证:sudo yum install -y jmeter && jmeter -v
  • 可选 Docker 方式(便于隔离环境)
    • 安装 Docker:sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker
    • 运行容器:sudo docker run -it --rm -v /path/to/scripts:/scripts jmeter:latest 说明:JMeter 在 GUI 模式资源占用较高,压测建议在 非 GUI 模式执行;若需图形界面,可在本地机器运行 GUI 并将脚本与结果目录挂载到服务器执行。

二 编写Web测试计划

  • 线程组(模拟并发用户)
    • 添加路径:测试计划 → 右键 添加 → Threads(Users) → 线程组
    • 关键参数:线程数(并发用户数)Ramp-Up Period(启动时间)循环次数/调度器(持续时间)
  • HTTP 请求默认值(减少重复配置)
    • 添加路径:线程组 → 添加 → 配置元件 → HTTP Request Defaults
    • 配置:协议(http/https)服务器名称或IP端口编码
  • HTTP 请求(Sampler)
    • 添加路径:线程组 → 添加 → Sampler → HTTP Request
    • 配置:方法(GET/POST)路径参数/Body文件上传重定向/超时
  • HTTP 信息头管理器(可选)
    • 添加路径:线程组 → 添加 → 配置元件 → HTTP Header Manager
    • 常用头:Content-TypeUser-AgentAuthorization
  • 断言(校验结果有效性)
    • 添加路径:HTTP 请求 → 添加 → 断言
    • 常用:响应代码断言(200/302)响应文本/JSON Path 断言响应时间断言
  • 监听器(收集与分析结果)
    • 常用:查看结果树(调试用)、聚合报告/Summary Report(统计指标)、图形结果
  • 参数化与数据驱动
    • 添加路径:线程组 → 添加 → 配置元件 → CSV Data Set Config
    • 用途:从 CSV 文件读取多组 账号/搜索词/表单数据,实现数据与脚本分离
  • 定时器(思考时间/节奏控制)
    • 添加路径:线程组 → 添加 → 定时器
    • 常用:固定定时器/高斯随机定时器,模拟用户操作间隔,避免不真实并发 提示:脚本结构建议遵循“一个测试计划至少一个线程组取样器不可少每个取样器配断言至少一种监听器”的规范,便于复用与维护。

三 执行与报告

  • 非 GUI 命令行执行(压测推荐)
    • 基本执行:jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl
    • 生成 HTML 报告:jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl -e -o /path/to/report
    • 仅从既有结果生成报告:jmeter -g /path/to/results.jtl -o /path/to/report
    • 常用参数:
      • -n 非 GUI 模式
      • -t 指定测试计划 .jmx
      • -l 指定结果文件 .jtl
      • -e 测试结束后生成报表
      • -o 报表输出目录(必须为空)
  • 查看报告
    • 将生成的 report/index.html 下载到本地,用浏览器打开即可查看 吞吐量、响应时间、错误率 等指标
  • 运行规范
    • 压测时建议**禁用“查看结果树”**等占用较高的监听器,避免压测机成为瓶颈
    • 分布式压测(可选):在 jmeter.properties 配置 remote_hosts=IP:1099,在 Master 执行 jmeter -n -t plan.jmx -R IP1:1099,IP2:1099;各 Slave 启动 jmeter-server

四 常见问题与排查

  • 无法启动或命令找不到
    • 检查 JAVA_HOME/PATH 是否正确,执行 java -versionjmeter -v 验证
  • 连接目标站点失败
    • 确认被测服务在目标 IP/端口 可达,必要时在服务器放行防火墙端口(如 firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload
  • 响应码 4xx/5xx 或业务失败
    • 使用 查看结果树断言 定位问题;检查 请求头/参数/认证/Cookie
  • 报表为空或字段缺失
    • 确保使用 -l 指定 .jtl 结果文件,且测试计划中包含 监听器;生成报告前确认 输出目录为空
  • CSV 参数化不生效
    • 检查 CSV Data Set Config文件名、编码、分隔符、是否循环/共享 等配置,确保与数据文件一致。

0