本文详细介绍了如何在JMeter中进行token传递的项目实战,包括获取token、将token添加到HTTP请求中以及使用JMeter变量存储token的全过程。通过步骤详细说明和代码示例,帮助读者理解和实现JMeter传递token项目的具体操作,确保token传递的正确性和性能。
JMeter基础入门 1.1 什么是JMeterApache JMeter 是一个完全开源的 Java 应用程序,主要用于 Web 应用程序的性能测试,它可以通过模拟多种负载情况来测试系统的性能,例如,不同的并发用户尝试同时访问一个网站。JMeter 可以测试静态和动态资源,网页后端的控制器,数据库服务器,FTP 服务器,甚至简单的 TCP 连接。
1.2 JMeter的下载与安装JMeter 可以从其官方网站下载最新版本。以下是下载与安装步骤:
- 访问 JMeter 的官方网站,选择下载链接,下载最新的稳定版本。
- 解压缩下载下来的文件。
- 设置环境变量(可选)。将 JMeter 的 bin 目录添加到系统的 PATH 变量中,以便可以通过命令行直接运行 JMeter。
- 运行 JMeter。双击
jmeter.bat
(Windows)或jmeter.sh
(Linux 和 macOS)文件启动 JMeter。
JMeter 由多个组件构成,这些组件可以组合在一起创建测试计划,以下是常用的基本组件:
- 线程组(Thread Groups):定义测试用户数量和测试循环次数。
- Sampler(采样器):模拟客户端发送请求,如 HTTP 请求、JDBC 请求等。
- Listeners(监听器):接收 Sampler 的结果,并以图表或数据的形式展示。
- Timers(定时器):控制请求之间的延迟时间,模拟真实用户的访问间隔。
- Assertions(断言):验证响应是否符合预期,确保系统功能的正确性。
- Config Elements(配置元素):定义变量、参数化等。
- Logic Controllers(逻辑控制器):控制逻辑流程,如循环、开关等。
在计算机科学中,Token(令牌)是一种安全机制,用于验证用户的身份。当用户成功登录后,系统会生成一个唯一的 Token,用户可以使用这个 Token 代替用户名和密码进行后续的认证。Token 通常包含用户身份信息、过期时间和加密签名等部分。
2.2 token的作用及优点- 安全性:Token 传递时通常加密,安全性较高。
- 无状态性:服务器端不需要存储 Token,减轻了服务器的负担。
- 方便客户端存储:客户端(如浏览器)可以很方便地存储 Token,实现无状态会话。
- 灵活性:Token 可以封装更多的信息,如过期时间、权限等。
在需要频繁验证用户身份的场景中使用 Token,例如,Web 应用中的 RESTful API 接口,移动端应用等。
使用JMeter发送HTTP请求 3.1 创建线程组线程组用于定义测试用户数量和测试循环次数。在 JMeter 中,可以通过图形界面来创建线程组:
- 在主菜单
Test Plan
下,右键点击Test Plan
,选择添加 -> Threads (Users) -> 线程组
。 - 在线程组设置中,设置线程数(模拟用户数)、Ramp-Up 时间(启动时间)和循环次数。
线程组配置示例:
- 线程数:10
- Ramp-Up 时间:1
- 循环次数:1
3.2 添加HTTP请求默认值
HTTP 请求默认值用于设置基本的全局配置,以便在后续的 HTTP 请求中可以使用这些默认值。可以通过图形界面来配置这些默认值:
- 右键点击线程组,选择
添加 -> 配置元件 -> HTTP请求默认值
。 - 在 HTTP 请求默认值中设置服务器名称或 IP 和端口号。
HTTP 请求默认值配置示例:
- 服务器名称或 IP:127.0.0.1
- 端口号:8080
3.3 添加HTTP请求采样器
HTTP 请求采样器用于模拟发送 HTTP 请求。可以通过图形界面来创建和配置 HTTP 请求采样器:
- 右键点击线程组,选择
添加 -> 取样器 -> HTTP请求
。 - 在 HTTP 请求中设置协议、服务器名称或 IP、端口号、路径等。
HTTP 请求采样器配置示例:
- 协议:http
- 服务器名称或 IP:127.0.0.1
- 端口号:8080
- 路径:/login
在JMeter中传递token
4.1 获取token
首先,你需要通过登录 API 获取 token。这里假设我们使用 POST 请求来获取 token,请求体中包含用户名和密码。
1. 右键线程组 -> 添加 -> 取样器 -> HTTP请求
2. 设置协议、服务器名称或 IP、端口号、路径。
3. 在消息体中输入以下 JSON:
{
"username": "user1",
"password": "password123"
}
4. 设置请求方法为 POST。
4.2 如何将token添加到HTTP请求中
假设你已经成功获取了 token,现在需要将其添加到后续的 HTTP 请求中。可以在请求头中添加一个名为 Authorization
的键值对,值为 Bearer {token}
。
1. 右键线程组 -> 添加 -> 取样器 -> HTTP请求
2. 设置协议、服务器名称或 IP、端口号、路径。
3. 在“HTTP 请求”中,点击“添加” -> “添加元素到 HTTP 请求” -> 头部管理器。
4. 在头部管理器中,添加名称 `Authorization`,值 `Bearer {token}`。
4.3 使用JMeter变量存储token
为了方便传递 token,可以将 token 存储为 JMeter 变量。
1. 在获取 token 的 HTTP 请求后,添加一个后置处理器 -> BeanShell 后置处理器。
2. 在 BeanShell 后置处理器中,输入脚本:
String token = response.getBodyAsString();
vars.put("token", token);
3. 确保在后续的请求中使用 `${token}` 来引用此变量。
JMeter测试结果分析
5.1 查看请求响应数据
查看请求响应数据可以在每个 HTTP 请求采样器中查看响应内容。
1. 右键 HTTP 请求采样器 -> 添加 -> 监听器 -> 查看结果树
5.2 使用监听器监控测试结果
监听器用于监控测试结果,常见的监听器包括:
- 查看结果树:查看详细的测试数据。
- 图形结果:展示结果的图形化视图。
- 聚合报告:统计每个请求的响应时间、吞吐量等信息。
1. 右键线程组 -> 添加 -> 监听器 -> 图形结果
2. 右键线程组 -> 添加 -> 监听器 -> 聚合报告
5.3 导出测试报告
测试结束后,可以将测试结果导出为各种格式。
1. 右键线程组 -> 添加 -> 后置处理器 -> 导出报告
2. 导出格式可以是 JTL、HTML、CSV 等。
实战案例:完整token传递流程
6.1 准备工作
假设我们需要测试一个简单的登录接口,该接口返回一个 JSON 格式的 token。我们需要通过这个 token 访问其他受保护的资源。
6.2 步骤详细说明6.2.1 创建测试计划
1. 在 JMeter 中创建一个新的 Test Plan。
2. 右键 Test Plan -> 添加 -> Threads (Users) -> 线程组。
3. 在线程组设置中,设置线程数为 1,Ramp-Up 时间为 1,循环次数为 1。
6.2.2 获取 token
1. 右键线程组 -> 添加 -> 取样器 -> HTTP请求
2. 设置协议为 http,服务器名称或 IP 为 127.0.0.1,端口号为 8080,路径为 /login。
3. 在消息体中输入以下 JSON:
{
"username": "user1",
"password": "password123"
}
4. 设置请求方法为 POST。
6.2.3 存储 token
1. 在获取 token 的 HTTP 请求后,添加一个后置处理器 -> BeanShell 后置处理器。
2. 在 BeanShell 后置处理器中,输入脚本:
String token = response.getBodyAsString();
vars.put("token", token);
6.2.4 使用 token 访问受保护资源
1. 右键线程组 -> 添加 -> 取样器 -> HTTP请求
2. 设置协议为 http,服务器名称或 IP 为 127.0.0.1,端口号为 8080,路径为 /protected。
3. 在头部管理器中,添加名称 `Authorization`,值 `Bearer ${token}`。
4. 设置请求方法为 GET。
6.2.5 查看测试结果
1. 右键线程组 -> 添加 -> 监听器 -> 查看结果树
2. 右键线程组 -> 添加 -> 监听器 -> 聚合报告
6.3 测试结果验证
在查看结果树中,可以查看每个 HTTP 请求的响应数据,确保 token 被正确传递,且请求成功。在聚合报告中,可以查看测试的总体性能指标,如响应时间、吞吐量等。
测试完成后,导出报告以供进一步分析。
1. 右键线程组 -> 添加 -> 后置处理器 -> 导出报告
2. 导出格式可以是 JTL、HTML、CSV 等。
以上步骤和代码示例详细介绍了如何在 JMeter 中实现 token 的传递和测试,通过这些步骤可以验证 token 传递过程中的正确性和性能。
共同学习,写下你的评论
评论加载中...
作者其他优质文章