JMeter保险报价冒烟测试脚本在生产代码下线后仍通过问题排查
这问题我之前帮好几个同行排查过,大概率是脚本的校验逻辑没跟上生产变化,或者本身依赖的资源没触碰到下线的核心服务,给你列几个最容易踩的坑:
断言逻辑太宽松甚至缺失
很多人写冒烟测试图省事,只校验HTTP响应码是200就判定通过。但生产服务下线后,后端可能返回的是200状态码的“服务已下线”提示页,或者空响应体——脚本看不到页面内容,只会认状态码,自然显示通过,但你手动操作能直观看到异常。建议检查脚本里的断言:有没有校验返回内容里的业务关键字(比如“报价生成成功”)?如果是接口请求,有没有校验JSON响应里的特定字段(比如code是否为预期值、msg是否符合业务逻辑)?脚本没调用到真正下线的核心接口
生产下线核心业务代码,但可能某些静态页面、跳转用的空接口还没清理。比如你的脚本可能只是请求了报价页面的跳转接口,而非实际触发报价计算的核心接口;或者核心接口被临时替换成了返回默认值的 stub,但手动操作时会进入完整业务流程触发下线提示。建议对比脚本的请求路径和你手动操作时浏览器开发者工具里的请求记录,确认脚本是否真的调用了那些已经下线的核心接口。缓存或离线资源干扰
如果JMeter勾选了Use Cache/Control选项,可能会复用之前请求的缓存结果——就算服务已经下线,脚本还是读取本地缓存的成功响应,导致假通过。另外,如果脚本依赖的本地测试数据文件对应的旧资源还在缓存里,也会出现这种情况。可以尝试关闭HTTP请求的缓存选项,或者清空JMeter的临时缓存目录后重新运行脚本。环境配置没切对
会不会脚本里的目标环境配置(服务器地址、域名、端口)还停留在测试/预发布环境?这些环境的服务可能还没下线,所以脚本跑通,但你手动操作的是真正的生产环境。赶紧检查脚本里的HTTP请求默认值、用户定义变量,确认目标地址和你手动访问的生产地址完全一致。跳过了前端交互的关键触发步骤
手动操作时可能需要完成前端的必填交互(比如勾选协议、选择保险类型),这些步骤可能会触发前端的校验或后端状态更新,但脚本里可能直接跳过了这些,用固定参数直接调用后端接口——如果生产下线的是前端路由,后端接口暂时还没关闭,脚本就能成功,但手动进不去页面完成操作。对比手动操作的完整流程和脚本的请求顺序,看看是不是少了关键的前置交互请求。
内容的提问来源于stack exchange,提问作者user9552213

