当前位置: 首页 > article >正文

4.3 使用 JMeter 发起请求详解

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅!

文章目录

  • 前言
  • 1 环境准备
  • 2 创建 GET 请求测试计划
  • 3 运行测试计划
  • 4 创建 POST 测试计划
  • 5 请求体与请求参数
  • 6 Http请求默认值
    • 6.1 主要配置项
    • 6.2 配置方法


前言

JMeter 是 Apache 提供的一款强大的开源性能测试工具,主要用于负载测试和性能评估。本文将通过一个具体示例,详细讲解如何在 JMeter 中发起 GET 请求以及 POST 请求,包括环境配置、请求参数设置以及结果分析。


1 环境准备

在开始之前,请确保已完成以下环境配置:
①安装 JMeter
从 Apache JMeter 官网 下载最新版本,并解压安装。

②配置 JDK
确保系统已安装 JDK,并正确配置 JAVA_HOME 环境变量。

③启动 JMeter
进入 JMeter 的安装目录,双击 ApacheJMeter.jar文件启动 JMeter 的图形界面:
在这里插入图片描述


2 创建 GET 请求测试计划

①创建测试计划

  • 打开 JMeter,默认会显示一个空白的 测试计划(Test Plan)
  • 右键点击 测试计划,依次选择:
    添加 > 线程 (用户) > 线程组,为测试添加一个线程组

在这里插入图片描述

②配置线程组
线程组 中,可以设置用户线程数和请求执行的方式:

  • 线程数(Number of Threads):表示虚拟用户数。
  • Ramp-Up 时间(Ramp-Up Period):表示启动所有线程所需的时间(秒)。
  • 循环次数(Loop Count):表示每个线程的请求执行次数。

【示例】

  • 线程数:10
  • Ramp-Up 时间:5 秒
  • 循环次数:1

表示在 5 秒内逐渐启动 10 个线程,每个线程只执行一次请求。

③添加 HTTP 请求

  • 右键点击线程组,依次选择:
    添加 > 取样器 > HTTP 请求
  • 配置 HTTP 请求的基本信息:
    • 协议(Protocol):如 httphttps
    • 服务器名称或 IP:目标服务器地址,例如 example.com
    • 端口号(Port Number):目标端口,默认 HTTP 为 80,HTTPS 为 443。
    • 路径(Path):具体请求路径,例如 /api/v1/resource
    • 方法(Method):选择 GET

在这里插入图片描述
【示例】
在聚合数据API 服务的开放平台中随机选取一个API ,查看该 API 的详细文档,包括请求方式、参数说明和返回格式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

④添加结果查看器
右键点击线程组,依次选择: 添加 > 监听器 > 查看结果树

在这里插入图片描述


3 运行测试计划

配置完成后,点击工具栏中的 启动 按钮运行测试计划。JMeter 将开始发起 GET 请求,并将响应结果显示在结果树中。
在这里插入图片描述

查看结果树 中,可以查看以下内容:

  • 请求数据:发出的完整 HTTP 请求。
  • 响应数据:服务器返回的 HTTP 响应,包括状态码、响应体等。
  • 响应时间:每个请求的耗时。
    在这里插入图片描述

4 创建 POST 测试计划

步骤与 GET 请求相同,将 HTTP 请求改成 POST 即可:
在这里插入图片描述
运行结果:
在这里插入图片描述


5 请求体与请求参数

①GET 请求
GET 请求的参数通常通过 URL 查询字符串(Query String)传递,参数和地址是在一起的。

【示例】

GET /search?q=example HTTP/1.1
Host: example.com

  • 参数 q=example 被直接附加到 URL 后
  • 没有请求体,数据全部包含在 URL 中

在这里插入图片描述

②POST 请求
POST 请求的参数一般放在请求体中,地址和数据分开。

【示例】

POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 19

name=example&age=25

请求体中包含实际的数据,例如 name=example&age=25。

在这里插入图片描述


6 Http请求默认值

在 Apache JMeter 中,HTTP 请求默认值(HTTP Request Defaults)是一个非常有用的配置元件,用于设置 HTTP 请求的默认参数值。这些默认值会被应用到同一线程组中包含的所有 HTTP 请求采样器,从而减少重复配置,提高测试脚本的可维护性。

6.1 主要配置项

①服务器名称或 IP

  • 字段名称: Server Name or IP
  • 作用: 设置目标服务器的主机名或 IP 地址。例如,www.example.com192.168.1.1
  • 应用场景: 如果所有的 HTTP 请求都指向同一个服务器,可以在这里统一配置,而不需要每个 HTTP 请求采样器都填写。

②端口号

  • 字段名称: Port Number
  • 作用: 设置目标服务器的端口号。通常,HTTP 使用端口 80,HTTPS 使用端口 443
  • 应用场景: 当目标服务器使用非标准端口时(如 8080),可以在这里统一配置

③协议

  • 字段名称: Protocol
  • 作用: 指定请求使用的协议(HTTP 或 HTTPS)。
  • 应用场景: 如果所有请求都使用 HTTPS,可以在这里统一设置

④路径

  • 字段名称: Path
  • 作用: 设置请求的资源路径。例如:/api/v1/resource/login
  • 默认值: / 表示请求服务器的根路径。
  • 应用场景: 如果测试的资源路径大部分相同,可以设置为默认路径。

⑤URL 编码

  • 字段名称: URL Rewriting
  • 作用: 指定是否对路径和参数进行 URL 编码。
  • 应用场景: 如果路径或参数中包含特殊字符(如空格或非 ASCII 字符),需要进行编码。

⑥参数

  • 字段名称: Parameters
  • 作用: 设置默认的 URL 参数。
  • 应用场景: 当大部分请求共享相同的参数时(如 API 的公共参数),可以在此统一配置

⑦Content Encoding

  • 字段名称: Content Encoding
  • 作用: 指定请求数据的编码格式,例如 UTF-8
  • 应用场景: 当请求的内容需要特定的编码格式时使用。

⑧Base URL

  • 作用: HTTP 请求默认值中的服务器名称端口号协议组成了基础 URL(Base URL)。HTTP 请求采样器会继承这些值,从而减少冗余配置。

【注意事项】

  1. 继承原则: 如果 HTTP 请求采样器单独配置了这些字段,则会覆盖 HTTP 请求默认值中的设置。
  2. 适用范围: HTTP 请求默认值只会影响在同一线程组中定义的 HTTP 请求采样器,且需要放置在它们的前面。
  3. 可扩展性: 可以设置多个 HTTP 请求默认值,用于不同的服务器或环境(如开发、测试、生产环境)。

6.2 配置方法

鼠标右键线程组 → 添加 → 配置元件 → HTTP请求默认值:
在这里插入图片描述

【示例】
假设测试需要向 https://api.example.com 发送多次请求:

①配置 HTTP 请求默认值

  • 服务器名称或 IP: api.example.com
  • 协议: https
  • 端口号: 443
  • 路径: /api/v1

②HTTP 请求采样器 1

  • 路径: /users (继承服务器名称、协议和端口号)

③HTTP 请求采样器 2

  • 路径: /orders(同样继承默认值)

④运行结果
最终请求分别为:

  1. https://api.example.com/api/v1/users
  2. https://api.example.com/api/v1/orders

【实例】
假设以下四个 http 请求只有 date 参数的日期不同:
在这里插入图片描述
可以配置HTTP 请求默认值中的服务器名称端口号协议路径以及相同的 key 参数。HTTP 请求采样器会继承这些值,从而减少冗余配置。
在这里插入图片描述
配置的HTTP 请求默认值:
在这里插入图片描述
1、2、3、4的Http请求可以删除服务器名称端口号协议路径以及相同 key 参数的信息:
H
运行结果:
在这里插入图片描述


http://www.kler.cn/a/410628.html

相关文章:

  • 枚举类在数据库的存储方式类型对应的是什么
  • Redis常见面试题总结(上)
  • PyTorch2
  • (三)手势识别——动作识别应用【代码+数据集+python环境(免安装)+GUI系统】
  • 【vue】vue中插槽slot的用法详解
  • uni-app 发布媒介功能(自由选择媒介类型的内容) 设计
  • 【人工智能】基于PyTorch的深度强化学习入门:从DQN到PPO的实现与解析
  • python VS c++
  • 室内定位论文速递(11.18-11.22)
  • Visual Studio下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_visual studio安装教程
  • 鸿蒙征文|鸿蒙心路旅程:从零到一的探索与成长——我的HarmonyOS
  • 如何定制谷歌浏览器的外观主题
  • 基于IPMI的服务器硬件监控指标解读
  • CSS笔记(一)炉石传说卡牌设计1
  • 周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
  • android 音效可视化--Visualizer
  • 工欲善其事,必先利其器;爬虫路上,我用抓包
  • 003 STM32基础、架构以及资料介绍——常识
  • 【Vue3 for beginner】普通插槽、具名插槽、作用域插槽
  • TM1可视化解决方案:企业增效降本的智控大脑
  • Linux 从 apt / yum 更新、升级中排除 / 保留 / 阻止特定软件包
  • 算法日记 33 day 动态规划(打家劫舍,股票买卖)
  • LeetCode—704. 二分查找(简单)
  • 用el-scrollbar实现滚动条,拖动滚动条可以滚动,但是通过鼠标滑轮却无效
  • Python绘制太极八卦
  • 无人机+无人车+机器狗+自组网:城市一空地体化指挥系统技术详解