Jmeter带cookie请求

本文介绍使用JMeter进行性能测试的具体步骤,包括利用Cookie管理器避免重复登录,以及配置线程组、HTTP请求、响应断言和聚合报告等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试场景:确认平台登录后首页的并发能力

问题:每次都登录的话会对响应时间造成一定影响:

解决方案:登录平台后通过chrome插件获取cookie,通过jmeter的cookie管理器跳过登录步骤

压测方案:本机项服务器发起不同并发数量,持续压测5分钟,根据聚合报告确认系统的qps,响应时间,对服务器内存及CPU的影响(如何通过插件监控服务器CPU后续会介绍)


步骤一:创建线程组,设置起始并发数量(起始数量可以自己估算,多次尝试来确认)



步骤二:添加cookie管理器,将cookie添加至管理器中,安全复选框一定不要勾选,否则cookie不会生效(可以使用chrome的editthiscookie插件,安装插件以后登录测试平台,在菜单栏能看到一个小饼干的图片,点开可以看到每个cookie变量及对应的值)




步骤三:添加http请求,可以使用域名或者IP地址访问,使用域名不用填写端口,使用IP要填写端口;路径填写页面或者接口的路径


步骤四:添加响应断言,根据自己需要添加断言,接口的话一般是返回码


步骤五:添加聚合报告

步骤六:点击菜单栏的绿色运营按钮,执行压测脚本


### 实现遍历 Cookie 进行多次请求 为了在 JMeter 中实现遍历 Cookie 并针对每个 Cookie 发起多次 HTTP 请求,可以采用如下最佳实践方案: #### 使用 CSV Data Set Config 或者自定义 BeanShell PreProcessor 提取 Cookies 当需要遍历一组预设的 Cookies 时,可以通过 `CSV Data Set Config` 组件来读取存储于文件内的 Cookie 数据。对于动态获取的 Cookies,则适合利用 `BeanShell PreProcessor` 结合 vars 对象操作线程中的局部变量容器[^1]。 ```properties cookieFile=cookies.csv variableNames=COOKIE_NAME,COOKIE_VALUE delimiter=, recycle=false stopThread=false shareMode=all_threads ``` 上述配置展示了如何通过 `CSV Data Set Config` 加载外部 CSV 文件作为 Cookie 的输入源。每列分别对应不同的属性名称和对应的值。 #### 动态构建 HTTP Header Manager 添加 Cookie 参数 一旦获得了单个或多个 Cookies 后,在每次迭代之前都需要更新即将发出的 HTTP 请求头信息里的 Cookie 字段。这一步骤可通过 `User Defined Variables` 和 `${__V}` 函数配合完成,也可以直接编写脚本逻辑放在 `BeanShell PreProcessor` 内部执行。 ```java // 获取当前线程上下文中保存的所有Cookies String cookies = vars.get("ALL_COOKIES"); if (cookies != null && !"".equals(cookies.trim())) { // 将字符串形式的Cookies转换成数组并循环处理每一个Cookie项 String[] cookieArray = cookies.split("; "); StringBuilder sb = new StringBuilder(); for(String c : cookieArray){ if(sb.length()>0)sb.append("; "); sb.append(c); } // 更新HTTP Header Manager中的Cookie字段 sampler.getHeaderManager().add(new Header("Cookie",sb.toString())); } ``` 这段代码片段说明了怎样借助 `BeanShell PreProcessor` 修改即将发送出去的 HTTP 请求头部携特定格式化的 Cookie 串。 #### 设置合适的控制器以支持多轮次调用 为了让整个流程能够按照预期顺序工作,还需要合理安排好各个组件之间的层次关系及其内部参数设定。特别是要关注 `Loop Controller` 及其子节点下的采样器数量、计数方式等细节之处[^2]。 ```xml <elementProp name="loop_control" elementType="LoopController"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">${__P(loopsCount,5)}</stringProp> </elementProp> ``` 此 XML 片段描述了一个简单的 Loop 控制策略,默认情况下会重复五次;当然也允许用户通过命令行传递参数来自定义次数。 #### 注意事项与调试技巧 考虑到实际场景复杂度较高,建议开启 Debug Sampler 来捕获中间状态变化情况以便后续分析排查问题所在。另外需要注意的是某些特殊字符可能会引起解析错误因此务必遵循正确的语法规范[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值