记录下使用Jmeter进行登陆,查询,提交压测

本文详细记录了使用Jmeter进行登录、查询和提交操作的性能测试过程,包括设置CSV数据文件、线程组、HTTP信息管理头、Cookie管理器、集合点、HTTP请求等步骤,并介绍了如何通过正则表达式匹配数据进行线程间的数据传递。

搞了几天Jmeter终于调试好脚本了记录下这几天的心得重点感谢下小间谍大佬的指导~

1.登陆测试
1.1 用CSV数据文件创建好登陆的数据,记得文件后缀名为.csv,数据如下图A为账号,B为密码
在这里插入图片描述
1.2 添加一个线程组,设置好线程数
在这里插入图片描述
1.3 设置CSV的数据
在这里插入图片描述
1.4设置HTTP信息管理头
在这里插入图片描述
1.5 添加HTTP Cookie管理器(需要再jmeter.p’ropeties修改一个数据把false改为true,这样才能获取到请求头)
在这里插入图片描述
在这里插入图片描述
1.6 添加集合点

<think>我们正在讨论如何使用JMeter对导入接口进行压力测试。根据引用内容,特别是引用[1]和引用[3],我们知道导入接口通常涉及文件上传。在引用[1]中,我们看到导出接口的处理(通过后置处理器保存文件),而导入接口则是上传文件。因此,我们需要模拟文件上传的请求。步骤:1.添加线程组:设置并发用户数、循环次数等。2.添加HTTP请求:配置导入接口的HTTP请求。-方法选择POST(通常导入是上传文件,所以用POST)。-路径填写导入接口的URL。-在“文件上传”选项卡中,添加要上传的文件。-参数名称:根据接口定义,通常是表单中文件字段的名称(如file)。-文件路径:选择本地文件路径(可以使用绝对路径,也可以使用相对路径,但注意在分布式试时文件需存在于所有机器上)。-MIME类型:根据文件类型填写,如application/vnd.ms-excel(xls)或application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(xlsx)。3.如果需要,添加HTTP信息头管理器:设置Content-Type为multipart/form-data(通常上传文件时会自动设置,但如果有特殊要求可以手动设置)。4.添加监听器:如查看结果树、聚合报告等,用于查看请求结果和性能指标。注意:导入接口可能需要先登录获取token,因此需要先进行登录操作并提取token,然后在导入请求中加入token(如放在请求头中)。根据引用[2],我们可以先批量获取用户token,然后在压力测试使用不同的用户token来模拟多用户操作。具体步骤:1.首先,准备用户数据(如手机号列表)和对应的文件(如果需要不同用户上传不同文件,则需要准备多个文件)。2.使用CSVDataSetConfig来读取用户数据(包括手机号、token等,或者先通过一个前置请求获取token并保存到文件,然后在导入请求中读取)。3.在导入请求中,设置HTTP信息头管理器,添加Authorization头,值为Bearer{token}(具体根据接口要求)。如果接口需要其他参数,可以在HTTP请求中添加参数(在Parameters选项卡中添加,注意如果是文件上传,其他参数也可以一起以表单形式提交)。示例步骤:步骤1:创建线程组步骤2:添加登录请求(如果需要)-使用CSV文件读取用户名和密码-从登录响应中提取token(使用JSONExtractor或正则表达式提取器)-将token保存到变量中,比如${token}步骤3:添加导入请求-在同一个线程组下,添加一个HTTP请求-配置导入接口的URL和方法-在“文件上传”选项卡中,添加要上传的文件(注意:如果要模拟不同用户上传不同文件,可以在文件名中使用变量,并在CSV文件中指定文件路径)-在HTTP信息头管理器中添加:Authorization:Bearer${token}(如果接口需要)-如果有其他参数,在Parameters选项卡中添加步骤4:添加断言来验证导入是否成功(可选)步骤5:添加监听器注意:如果导入接口是上传文件,那么JMeter会自动设置Content-Type为multipart/form-data,并生成boundary,所以通常不需要手动设置Content-Type头。引用[1]中提到了导出接口的处理(使用后置处理器保存文件),但导入接口不需要保存文件,而是需要上传文件。因此,总结如下:关键点:1.使用HTTP请求的文件上传功能。2.处理认证(如token)。3.使用CSV文件参数化用户和文件。相关问题:1.如何设置JMeter的文件上传?2.在压力测试中如何模拟不同用户上传不同文件?3.如何验证导入操作是否成功?根据以上思路,我们给出详细的步骤。</think>### 如何使用JMeter对导入接口进行压力测试 导入接口通常涉及文件上传操作(如Excel/CSV数据导入),以下是详细步骤: #### **1. 准备试环境** - **安装JMeter**:确保已安装[Java环境](https://jdk.java.net/)和[JMeter](https://jmeter.apache.org/) - **准备试文件**:生成不同大小的试文件(如1MB/10MB/100MB的Excel或CSV) - **获取认证信息**:若接口需认证,先通过登录接口获取token(参考引用[2]的token批量获取方法) #### **2. 配置线程组** ```java 线程组设置: 线程数(用户数):50 Ramp-up时间:10秒 循环次数:永久(通过调度器控制时长) ``` > 模拟50个用户10秒内逐步启动并发请求 #### **3. 添加HTTP请求** - **方法**:`POST` - **路径**:导入接口URL(如`/api/data/import`) - **参数设置**: ```java 在"文件上传"选项卡添加: 文件路径:D:/test_data.xlsx // 可参数化路径 参数名称:file // 根据接口定义填写 MIME类型:application/vnd.ms-excel ``` #### **4. 处理认证(需token时)** - **添加HTTP信息头管理器**: ```java Authorization: Bearer ${token} // 引用[2]的token获取方法 Content-Type: multipart/form-data ``` #### **5. 参数化文件上传(进阶)** ```java 1. 创建CSV文件(file_list.csv): file_path D:/data/user1.xlsx D:/data/user2.xlsx 2. 添加CSV Data Set Config: 文件名:file_list.csv 变量名:file_path 3. HTTP请求中文件路径设置为:${file_path} ``` #### **6. 添加性能监听器** - **必需组件**: - 查看结果树(调试用) - 聚合报告(TPS/响应时间) - 响应时间图 - 后端监听器(对接InfluxDB+Grafana) #### **7. 验证导入结果(可选)** ```java // 添加BeanShell后置处理器 import org.apache.jmeter.samplers.SampleResult; if (ResponseCode.equals("200")) { log.info("导入成功,文件大小:" + prev.getResponseData().length + " bytes"); } else { FailureMessage = "导入失败:" + ResponseMessage; } ``` #### **8. 执行与优化** - **梯度加**:从10用户开始,逐步增加至目标并发 - **监控瓶颈**: - 服务器CPU/内存(如超过80%需扩容) - 网络带宽(大文件上传时易成瓶颈) - **常见优化**: - 使用`jmeter -n -t test.jmx -l result.jtl`命令行模式 - 分布式试(多台JMeter机器) > ⚠️ **注意事项** > 1. 大文件试前确认服务器`maxHttpHeaderSize`配置 > 2. 生产环境试需在隔离区域进行 > 3. 接口响应超时阈值建议设为实际业务容忍时间的2倍 [^1]: 文件处理参考JMeter后置处理器 [^2]: 用户认证方案参考黑马点评实践 --- ### 相关问题 1. **如何模拟不同大小的文件上传?** > 可通过JMeter的`__FileToString()`函数动态生成文件内容,或使用CSV参数化不同文件路径 2. **导入接口试需要关注哪些性能指标?** > 关键指标包括:TPS(每秒事务数)、90%响应时间、错误率、网络吞吐量、服务器资源利用率 3. **如何验证导入数据的正确性?** > 可添加数据库查询断言,比较导入记录数与文件数据行数,或使用JDBC后置处理器校验数据完整性 4. **高并发下如何避免文件覆盖问题?** > 方案1:为每个线程生成唯一文件名(使用`${__threadNum}`) > 方案2:接口设计支持批次ID参数化
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值