Jmeter使用教程(以登录后获取token进行测试为例)

Apache JMeter 是一款由 Apache 软件基金会开发的开源工具,主要用于负载测试和性能测试。它能够模拟多种场景下的用户行为,评估系统的性能表现。以下是 JMeter 的使用教程,帮助您从零开始掌握这款工具。

一、JMeter 简介

JMeter 最初被设计用于测试 Web 应用,但现已扩展到其他测试领域,包括数据库、FTP 服务器、Web 服务等。它支持多种协议,如 HTTP、HTTPS、FTP、SMTP 等,能够在不同平台(如 Windows、Linux、macOS)上运行。

二、安装 JMeter

1. 安装 Java 环境

JMeter 是基于 Java 的应用程序,因此需要先安装 Java 运行环境(JDK)。

  • 下载 JDK: 访问 Oracle 官方网站OpenJDK 下载适用于您操作系统的 JDK。
  • 安装 JDK: 按照安装向导完成 JDK 的安装。
  • 配置环境变量: 将 JDK 的 bin 目录添加到系统的 PATH 环境变量中,以便在命令行中使用 Java 命令。

2. 下载并安装 JMeter

  • 下载 JMeter: 前往 Apache JMeter 官方下载页面,选择最新版本的二进制文件(.zip 或 .tgz 格式)下载。
  • 解压文件: 将下载的压缩文件解压到指定目录。
  • 启动 JMeter:
    • Windows: 进入解压目录的 bin 文件夹,双击 jmeter.bat 启动 JMeter。
    • macOS/Linux: 在终端中导航到 bin 目录,运行 ./jmeter 命令启动 JMeter。

三、创建测试计划

测试计划是 JMeter 中的核心概念,定义了测试的所有步骤和配置。

1. 添加线程组

线程组用于模拟用户请求。

  • 操作步骤: 右键点击“测试计划” > “添加” > “Threads (Users)” > “线程组”。
  • 配置参数:
    • 线程数(用户数): 模拟的虚拟用户数量。
    • Ramp-Up 时间: 所有线程启动所需的时间。
    • 循环次数: 每个线程执行的次数。

2. 添加 HTTP 请求

用于定义具体的请求信息。

  • 操作步骤: 右键点击“线程组” > “添加” > “Sampler” > “HTTP 请求”。
  • 配置参数:
    • 协议: 如 http 或 https。
    • 服务器名称或 IP: 目标服务器地址。
    • 端口号: 默认 HTTP 为 80,HTTPS 为 443。
    • 路径: 请求的具体路径。
    • 方法: GET、POST 等。
    • 参数: 如果有请求参数,可在“参数”部分添加。

3. 添加监听器

用于查看测试结果。

  • 操作步骤: 右键点击“线程组” > “添加” > “监听器” > 选择所需的监听器类型,如“察看结果树”、“聚合报告”等。

四、以登录接口获取token为例实操

1.配置默认http请求配置,实现一配置多使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.添加登录请求

在这里插入图片描述

3.配置 Content-Type 为 application/json

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.配置Json Extractor抓取Token,注意搭配response返回格式书写表达式。

提示: JSON 格式的提取路径应根据响应的层级结构来设定,例如,如果 Token 位于 response.token 中,表达式应为 $.token
在这里插入图片描述
在这里插入图片描述

5.配置全局http header manager

在这里插入图片描述

6.添加公告列举接口,用与测试token抓取是否有效

在这里插入图片描述

7.添加view result tree查看是否成功,运行绿色的run按钮

在这里插入图片描述

在这里插入图片描述

### JMeterToken 的概念 在性能测试工具 JMeter 中,Token 是一种用于身份验证的重要机制。通常情况下,在 Web 应用程序或 API 接口中,服务器会向客户端返回一个唯一的字符串作为令牌 (Token),这个令牌可以在后续请求中被用来识别特定用户的会话。 对于自动化测试而言,捕获并重用这些 Tokens 对于模拟真实用户行为至关重要。通过这种方式可以确保每次 HTTP 请求都携带有效的认证信息,从而实现对受保护资源的安全访问[^1]。 ### 设置全局变量存储 Token 为了使获取到的 Token 能够在整个测试计划中被不同线程组所共享,可以通过 `__setProperty` 函数将其转换成属性形式来创建全局可用的变量。如: ```jmeter ${__setProperty(user_token,${token})} ``` 上述表达式的含义是在成功获得 token 后立即将其赋值给名为 user_token 的全局变量。这样做的好处是可以让所有后续执行的操作都能方便地引用该值而无需再次发起登录请求去重新获取新的 token[^2]。 另外还有一种方法是针对多用户并发场景下动态分配不同的 tokens 给各个虚拟用户使用。此时可以根据当前迭代次数或其他唯一标识符来自动生成一系列带有编号前缀的名字如 login_token_1、login_token_2 等,并利用如下语法完成相应设定: ```jmeter ${__setProperty(login_token_${number},${login_token})} ``` 这里 `${number}` 可以是从文件读取或者是通过计数器组件产生的序号,以此保证每个线程都有自己专属的一份 token 副本[^3]。 ### 使用 BeanShell 处理跨线程组间的数据交换 当涉及到多个相互独立工作的线程组时,则需要借助额外的技术手段来进行数据同步工作。其中比较常用的一种做法就是在其中一个负责处理登录逻辑的地方加入 BeanShell PostProcessor 来显式调用 setProperty 方法把目标参数提升至全局作用域;而在接收方则采用 getProperty 进行检索操作即可达成目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值