JMeter录制Web Tours航班预订脚本无实际预订,请求状态异常排查
问题排查与解决建议
一、行程无实际预订记录的问题
- 关联参数遗漏:Web Tours的航班预订流程里,除了会话ID,可能还有其他动态参数需要关联,比如从航班选择页面返回的
flightId、departureDate这类隐藏字段,或者表单提交时的校验令牌。如果录制时没提取这些参数就直接用静态值回放,服务器会判定请求无效,不会生成实际订单。可以检查预订提交请求的参数,对比录制时和回放时的参数差异,用正则表达式提取器或CSS选择器提取器补上缺失的动态参数。 - 请求参数不完整:录制时的表单可能包含隐藏字段(比如
confirm标识、乘客信息关联ID),回放时如果没带上这些参数,服务器只会返回成功页面,但不会写入订单数据。查看录制的HTTP请求详情,把所有表单参数都复制到JMeter的请求里,确保参数完全一致。 - 会话状态异常:虽然添加用户正常,但预订流程可能需要额外的会话状态(比如航班选择后的临时缓存)。检查JMeter的Cookie管理器是否正确配置,确保所有Cookie都被自动管理,同时对比回放时的Cookie值和手动操作时的是否一致。
二、故障模拟时脚本返回200的问题
- 请求头不一致:Web Tours可能会根据请求头判断请求来源,JMeter录制的请求头可能缺少浏览器特有的字段(比如
User-Agent、Accept、Referer),导致服务器不对自动化请求触发故障逻辑。添加HTTP请求头管理器,把手动浏览器请求的所有头信息复制进去,和手动请求完全匹配。 - 请求未触发故障分支:手动测试时触发503的是特定请求(比如提交预订的POST请求),但脚本里可能没正确调用这个请求,或者请求路径、参数有误,导致服务器没进入故障处理流程。对比手动请求和脚本请求的URL、参数、请求方法,确保完全一致。
- 故障模拟范围限制:Web Tours的故障设置可能只针对某些核心服务(比如航班预订的后端接口),如果脚本里的请求只是访问前端页面,没有调用到这些核心接口,就不会返回503。用浏览器开发者工具查看手动操作时的所有请求,把这些请求都加到JMeter脚本里,确保覆盖到触发故障的步骤。
内容的提问来源于stack exchange,提问作者Timo
相关产品推荐
相关产品推荐

