JMeter多用户测试未执行完整业务路径的问题排查求助
兄弟,我之前踩过几乎一模一样的坑,给你梳理几个大概率的排查方向,你挨个验证下:
会话管理配置缺失:很多系统靠Cookie维持登录状态,要是你的测试计划里没加
HTTP Cookie管理器,或者把它放在了错误的位置(比如嵌套在某个请求下面),多用户并发时会话很容易丢失或串线,导致后续子页面请求被服务器拦截,直接触发登出逻辑。一定要把HTTP Cookie管理器放在线程组的最顶层,确保所有请求都能共享会话。动态参数未做关联:如果后续子页面的请求依赖第一个页面返回的动态值(比如csrf_token、sessionId、页面隐藏字段),录制脚本时JMeter/BlazeMeter大概率不会自动帮你关联这些参数,硬编码的旧值会导致后续请求被服务器拒绝,看起来就像没执行后续步骤。你可以打开
查看结果树,对比第一个页面的响应和后续请求的参数,找出那些动态变化的值,用正则表达式提取器或JSON提取器把值抓出来,替换后续请求里的硬编码内容。控制器逻辑设置错误:检查下测试计划里的控制器,比如是不是误加了
仅一次控制器并把后续子页面请求都放进去了?或者If控制器加了错误的条件表达式,导致后续请求被直接跳过。另外,确认所有请求都是按顺序放在线程组下,没有被错误的控制器嵌套逻辑阻断。请求前置条件未满足:看看
查看结果树里第一个子页面请求的响应状态码,如果是4xx/5xx,说明这个请求本身就失败了,后续请求因为依赖这个页面的状态,自然不会执行。可能是请求里的参数错误,或者服务器返回的内容和录制时不一样,导致后续请求的触发条件不成立。录制时的上下文硬编码:录制脚本是单用户场景,有些请求里的路径、参数是和当前测试用户绑定的(比如用户ID、订单ID),回放多用户时这些硬编码的值没有动态替换,导致后续请求访问的页面不存在。你可以用
CSV数据集配置加载多用户的参数,把所有硬编码的动态值换成变量。
你先从会话管理和参数关联这两点开始排查,这俩是最常见的原因。要是还解决不了,把查看结果树里的请求日志截个图或者贴出来具体内容,我再帮你分析。
备注:内容来源于stack exchange,提问作者irryb

