You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JMeter模拟浏览器缓存及会话过期测试场景?

JMeter实现该场景的步骤

1. 基础线程组配置

  • 创建线程组,设置线程数=10(对应10个并发用户),循环次数选「永远」,勾选「调度器」并设置持续时间=3600秒(控制总测试时长1小时)。

2. 处理会话30分钟过期逻辑

每个用户每30分钟需要重新登录,更新会话凭证:

  • 在组内最顶部添加登录HTTP请求,配置账号、密码等参数,用正则表达式/JSON提取器把登录返回的会话凭证(如Token、Cookie)保存到JMeter变量。
  • 给登录请求添加固定定时器,设置延迟为1800000毫秒(30分钟),勾选「仅在采样器之前」,确保每30分钟自动触发一次登录,覆盖旧的会话凭证。
  • 在登录请求的后置处理器中添加代码,清空缓存标记(比如用JSR223后置处理器执行vars.put("api1_cache_exists", "0"); vars.put("api1_cache", "");),保证新会话下首次调用API1会走服务器。

3. 模拟浏览器本地存储缓存

JMeter没有原生缓存机制,手动实现首次请求缓存、后续复用逻辑:

  • 添加If控制器,条件设为${__jexl3(${api1_cache_exists} == 0,)},判断是否未缓存API1响应。
  • 在If控制器内添加API1的HTTP请求:
    • 请求成功后,用后置处理器把响应体保存到变量api1_cache,同时设置api1_cache_exists=1标记缓存已存在。
  • 在If控制器外添加JSR223取样器,直接返回缓存内容:
    • 取样器内代码:SampleResult.setResponseData(vars.get("api1_cache"), "UTF-8"); SampleResult.setResponseCode("200"); SampleResult.setSuccessful(true);,模拟从浏览器缓存获取数据,不发起服务器请求。

4. 控制API1连续调用频率

给API1的调用逻辑(If控制器+JSR223取样器)添加固定定时器,设置每次调用的间隔(比如1秒,根据实际用户操作频率调整),实现连续调用效果。

5. 验证与监控

  • 添加「查看结果树」「聚合报告」监听器,检查:
    • 登录请求每30分钟执行一次;
    • 每次会话内首次API1请求走服务器,后续请求返回缓存内容;
    • 会话过期后,缓存标记被清空,重新触发首次服务器请求。

内容的提问来源于stack exchange,提问作者Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:55:27