Jmeter中json数据参数化,实现多用户同时登录压测

第一步

光标定位到测试计划上,右键菜单"添加" -> Threads(users) -> 线程组,如下图
在这里插入图片描述

第二步

光标定位到线程组,右键菜单选择 “添加” -> Sampler -> HTTP请求,填写IP和端口、路径,协议填写http,方法POST,content encoding填写utf-8,Body Data填写json格式内容(关于 json 串的提取,可以使用 Badboy 自己录制的,也可以使用 Chrome 浏览器自带工具 “JavaScript 控制台 - Network” 进行捕捉,或是开发人员提供接口文档里复制粘贴),最后调整 json 数据的展现格式如下图所示:
在这里插入图片描述

第三步

第三步, 光标定位到该HTTP请求上,右键菜单选择 “添加” -> 配置元件 -> HTTP 信息头管理器,然后信息头添加一条名称为 Content-Type,值为 application/json 即可:
在这里插入图片描述

第四步

添加相应断言
在这里插入图片描述

第五步

使用 CSV Data Set Config 将 json 数据参数化

光标定位到线程组,右键菜单选择 “添加” -> 配置元件-> CSV Data Set Config,filename输入‪C:\Users\zhengxl\Desktop\新建 XLS 工作表.csv, Variable Names 输入 userName,password,编辑DeviceUID.csv填写内容如下图所示:
在这里插入图片描述

在这里插入图片描述

第六步

返回到HTTP请求,编辑 消息体数据 里的 json 串里需要参数化的地方,使用 ${UID} 等参数覆盖需要参数化的部分:
在这里插入图片描述

第七步

光标定位到线程组,右键菜单选择 “添加” -> 监听器->查看结果树和聚合报告,如下所示

在这里插入图片描述

第八步

这时候你就可以使用参数化的 json 串进行压力测试啦
比如在CSV文件中增加多少个userName,password,在线程组就设置多少个线程数,如下图所示:
在这里插入图片描述

第九步

点击运行按钮执行,结果如下,可分析结果

在这里插入图片描述

可能会遇到的问题

CSV文件无法解析,报错如下所示

{“errors”:{“userName”:[“After parsing a value an unexpected character was encountered: $. Path ‘userName’, line 2, position 99.”]},“type”:“https://tools.ietf.org/html/rfc7231#section-6.5.1”,“title”:“One or more validation errors occurred.”,“status”:400,“traceId”:“00-33946101131b4a960a75445a2f204e8c-3e40d0abcfcbf923-00”}
在这里插入图片描述

处理方式:另存文件格式,然后打开
在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何在JMeter中使用JSON进行。用户之前询问过关于“erorcd 535”的问题,现在转到了JMeterJSON,这可能是一个试相关的工作场景。用户可能是试工程师或者开发人员,需要做接口试,特别是处理JSON格式的请求和响应。 首先,用户可能已经知道JMeter的基本用法,但需要具体指导如何操作JSON。他们可能遇到的问题包括构造JSON请求体、处理动态参数、提取JSON响应中的数据等。需要详细说明步骤,可能还要示例配置,比如HTTP请求的配置、参数化的方法、后置处理器的使用等。 考虑到用户之前遇到了SMTP错误,可能对错误排查有一定经验,所以解释时可能需要包括常见的JSON中的问题,比如编码问题、数据关联、断言设置等。此外,用户可能需要知道如何分析结果,比如查看响应时间、错误率,以及使用监听器来可视化数据。 另外,用户可能需要示例,比如具体的JSON负载和配置步骤,以便跟着操作。同时,要提醒他们注意HTTP信息头中的Content-Type设置为application/json,否则服务器可能无法正确解析请求。还要提到可能需要用正则表达式或JSON提取器来处理动态数据,比如token或会话ID,这在试中尤为重要,因为每个线程可能需要不同的数据。 最后,要总结关键点,确保用户理解整个流程,并给出优化建议,比如参数化数据、分布式试和结果分析。可能需要检查用户是否有进一步的问题,比如如何处理复杂的JSON结构或高并发下的问题,但目前用户的问题集中在基础使用上,所以先覆盖基本内容。</think>好的!在 **JMeter** 中使用 **JSON 数据进行试**是常见的接口场景,通常涉及构造 JSON 请求、参数化数据、提取响应结果等操作。以下是详细的步骤和关键点: --- ### **1. 准备工作** - **安装 JMeter**:从 [官网](https://jmeter.apache.org/) 下载并配置 JMeter。 - **接口文档**:明确待的接口地址、请求方法(POST/GET)、请求头(如 `Content-Type: application/json`)、请求体结构等。 --- ### **2. 创建试计划** #### **步骤 1:添加线程组** 右键试计划 → 添加 → 线程(用户)→ 线程组,设置并发用户数(线程数)、循环次数等。 #### **步骤 2:添加 HTTP 请求** 右键线程组 → 添加 → 取样器 → HTTP 请求,配置以下内容: - **协议**:`http` 或 `https` - **服务器名称/IP**:目标接口域名或 IP - **端口号**:接口端口(如 80、443) - **HTTP 方法**:POST 或 PUT(根据接口要求) - **路径**:接口路径(如 `/api/login`) --- ### **3. 构造 JSON 请求体** 在 **HTTP 请求**中配置 JSON 数据: 1. **添加请求头**: 右键 HTTP 请求 → 添加 → 配置元件 → HTTP 信息头管理器,添加: ``` Content-Type: application/json ``` 2. **填写 JSON Body**: 在 HTTP 请求的 **Body Data** 标签页中,输入 JSON 内容。 **示例**: ```json { "username": "test_user", "password": "123456" } ``` --- ### **4. 参数化 JSON 数据** 若需模拟不同用户或动态数据,需对 JSON 中的字段进行参数化。 #### **方法 1:使用 CSV 文件** 1. 创建 CSV 文件(如 `users.csv`),内容示例: ``` username,password user1,pass1 user2,pass2 ``` 2. **添加 CSV 数据文件配置**: 右键线程组 → 添加 → 配置元件 → CSV 数据文件设置,配置: - 文件名:`users.csv` 的路径 - 变量名称:`username,password`(与 CSV 表头一致) 3. **修改 JSON Body**: 将静态值替换为变量 `${username}` 和 `${password}`: ```json { "username": "${username}", "password": "${password}" } ``` #### **方法 2:使用 JMeter 函数** 在 JSON 中直接生成随机值: ```json { "username": "${__RandomString(10,abcdefghijk)}", "password": "${__Random(1000,9999)}" } ``` --- ### **5. 处理 JSON 响应** #### **提取响应中的 JSON 数据** 若需从响应中提取字段(如 `token`),使用 **JSON 提取器**: 1. 右键 HTTP 请求 → 添加 → 后置处理器 → **JSON 提取器** 2. 配置: - 变量名称:`token` - JSON 路径表达式:`$.token`(根据实际 JSON 结构填写) 3. 后续请求中通过 `${token}` 引用该值。 #### **断言 JSON 响应** 右键 HTTP 请求 → 添加 → 断言 → **JSON 断言**: - 配置 JSON 路径表达式和预期值,验证接口返回是否符合预期。 --- ### **6. 执行与监控** 1. **添加监听器**: 右键线程组 → 添加 → 监听器 → 查看结果树、聚合报告、响应时间图等。 - **查看结果树**:调试阶段检查请求与响应详情。 - **聚合报告**:结束后查看 TPS、平均响应时间、错误率等关键指标。 2. **启动**: 点击工具栏的“启动”按钮(绿色三角形),观察实时结果。 --- ### **7. 常见问题** - **JSON 格式错误**:确保 Body Data 中的 JSON 语法正确(可使用在线工具校验)。 - **编码问题**:如果接口需要 UTF-8 编码,在 HTTP 请求中勾选 **Use multipart/form-data**(即使未传文件)。 - **动态依赖**:若接口依赖 Cookie 或 Token,需通过 **HTTP Cookie 管理器** 或 **Header 管理器** 传递。 --- ### **优化建议** - **分布式**:单机资源不足时,使用多台机器启动 JMeter Slave 进行分布式。 - **参数化数据量**:确保 CSV 文件中的数据足够覆盖循环次数。 - **合理设置断言**:避免因断言过于严格导致误判(如时间戳动态变化)。 如果需要更具体的配置示例或问题排查,可以进一步说明场景!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图的动耳神功

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值