小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • 网络协议精华文章

    • 网络协议精华文章
    • 1. HTTP 协议面试怎么讲
    • 2. HTTPS 和 HTTP 有什么区别
    • 3. GET 和 POST 区别怎么回答
    • 4. 状态码 200 302 400 401 403 404 500 怎么理解
    • 5. Cookie Session Token 怎么区分
    • 6. TCP 三次握手四次挥手怎么讲
    • 7. 抓包分析接口问题怎么做
    • 8. 网络超时和连接失败怎么排查
    • 9. 接口测试中的请求头和响应头怎么看
    • 10. 网络协议题怎么结合项目回答
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

4. 状态码 200 302 400 401 403 404 500 怎么理解

HTTP 状态码是接口测试和抓包定位中最常见的判断依据。很多测试同学看到接口返回 200 就认为成功,看到 500 就认为后端 Bug,看到 404 就说接口不存在。这样的理解太粗。状态码只能说明 HTTP 层面的结果,真正定位问题还要结合请求参数、响应体业务 code、Header、日志、网关和数据库状态。

面试中问 200、302、400、401、403、404、500,面试官想看你是否能把状态码和项目排查结合起来。你要能解释每个状态码大致含义,更要能说明在测试中遇到这些状态码怎么定位。尤其是 401 和 403 的区别、HTTP 200 和业务成功的区别、404 是前端路径还是后端路由问题、500 如何结合日志排查,这些都是高频追问。

一、状态码在测试中的作用

HTTP 状态码是服务端对请求处理结果的一个标准化反馈。它可以帮助测试快速判断问题方向:

  • 请求是否成功到达服务端;
  • 是否发生重定向;
  • 请求参数是否有问题;
  • 是否未登录或无权限;
  • 接口路径是否不存在;
  • 服务端是否异常。

但状态码不是最终结论。很多系统会统一返回 200,再用响应体中的 code 表示业务成功或失败。所以测试不能只看状态码。

二、200 怎么理解

200 OK 表示 HTTP 请求成功。服务端正常返回了响应。

但要注意:HTTP 200 不代表业务成功。

例如:

{
  "code": 4001,
  "message": "库存不足",
  "data": null
}

HTTP 状态码是 200,但业务是失败的。

测试中遇到 200,要继续看:

  • 业务 code 是否成功;
  • message 是否符合预期;
  • data 字段是否正确;
  • 数据库状态是否变化;
  • 页面展示是否和响应一致。

面试可以说:200 是 HTTP 层成功,业务是否成功要看响应体和业务规则。

三、302 怎么理解

302 Found 表示临时重定向。浏览器会根据响应头中的 Location 跳转到另一个地址。

常见场景:

  • 未登录访问页面,被重定向到登录页;
  • HTTP 跳转 HTTPS;
  • 旧地址跳转新地址;
  • OAuth 或第三方登录跳转;
  • 网关或 Nginx 配置跳转。

测试中如果接口请求返回 302,要看 Location 指向哪里。比如接口自动化访问某个需要登录的接口,结果返回 302 到登录页,说明登录态可能失效。

常见误区是把 302 当成接口成功。实际上业务接口返回 302,往往说明请求被重定向,不一定拿到了预期数据。

四、400 怎么理解

400 Bad Request 表示客户端请求有问题,常见原因是参数格式错误、必填参数缺失、JSON 格式不合法、字段类型不匹配。

测试排查 400 时重点看:

  • 请求参数是否符合接口文档;
  • JSON 是否合法;
  • Content-Type 是否正确;
  • 必填字段是否缺失;
  • 字段类型是否正确;
  • URL 参数是否编码正确。

例如接口要求:

{
  "quantity": 2
}

前端传成:

{
  "quantity": "abc"
}

就可能返回 400。

五、401 怎么理解

401 Unauthorized 表示未认证。简单说,就是系统不知道你是谁,或者登录态无效。

常见原因:

  • 未登录;
  • Token 缺失;
  • Token 过期;
  • Token 格式错误;
  • Cookie 丢失;
  • Authorization Header 没带;
  • 登录态被清除。

测试排查 401 时要看请求 Header:

Authorization: Bearer xxx
Cookie: JSESSIONID=xxx

如果 Header 没带,可能是前端问题、接口工具未配置、自动化脚本没有传 Token。如果带了但仍 401,可能是 Token 过期或服务端鉴权失败。

六、403 怎么理解

403 Forbidden 表示已认证但无权限。也就是说,系统知道你是谁,但你没有权限访问这个资源。

常见场景:

  • 普通用户访问管理员接口;
  • 用户 A 查询用户 B 的订单;
  • 没有菜单权限;
  • 没有操作权限;
  • IP 白名单限制;
  • 角色权限配置错误。

401 和 403 的区别是面试重点:

  • 401:未登录或认证失败;
  • 403:已登录但权限不足。

测试权限时,要分别覆盖未登录、普通用户、管理员、越权访问等场景。

七、404 怎么理解

404 Not Found 表示资源不存在。接口测试中常见原因:

  • URL 路径写错;
  • 接口未发布;
  • 网关路由未配置;
  • 服务版本不对;
  • 请求方法不匹配;
  • 前端调用旧接口;
  • Nginx 转发路径错误。

注意,404 不一定是后端代码没有接口,也可能是网关或前端路径问题。

排查时可以看:

  • 请求 URL 是否正确;
  • 请求方法是否正确;
  • 接口文档是否一致;
  • 服务是否部署新版本;
  • 网关是否转发到正确服务;
  • 后端日志是否收到请求。

如果后端日志完全没有请求,可能请求没到服务。

八、500 怎么理解

500 Internal Server Error 表示服务端内部错误。

常见原因:

  • 空指针异常;
  • 数据库异常;
  • SQL 错误;
  • 第三方接口超时;
  • 配置错误;
  • Redis/MQ 连接失败;
  • 文件权限问题;
  • 代码逻辑异常。

测试遇到 500 时不能只提“接口 500”。要记录:

  • 请求时间;
  • 请求 URL;
  • 请求参数;
  • 请求 Header;
  • 响应体;
  • 业务 ID;
  • 后端日志关键异常。

这样开发才能快速定位。

九、状态码和业务 code 的关系

很多公司接口返回:

{
  "code": 0,
  "message": "success",
  "data": {}
}

这里 HTTP 状态码和业务 code 是两层含义。

HTTP 状态码表示请求层结果;业务 code 表示业务处理结果。

例如:

  • HTTP 200 + code 0:业务成功;
  • HTTP 200 + code 4001:业务失败;
  • HTTP 401:认证失败;
  • HTTP 500:服务异常。

测试断言时,不能只断言 HTTP 状态码,还要断言业务 code 和关键字段。

十、面试回答模板

如果面试官问这些状态码怎么理解,可以这样回答:

我会把状态码当成 HTTP 层面的判断依据,但不会只看状态码。200 表示请求成功到达并返回,但业务是否成功还要看响应体 code;302 是重定向,要看 Location;400 多是请求参数、格式或 Content-Type 问题;401 是未认证,比如 Token 缺失或过期;403 是已认证但无权限;404 是资源不存在,可能是路径、方法、路由或版本问题;500 是服务端异常,需要结合请求参数和后端日志定位。测试中我会通过状态码先判断方向,再结合业务 code、响应体、Header、日志和数据库确认根因。

十一、常见追问

追问:401 和 403 区别?

401 是未认证或登录态无效;403 是已认证但权限不足。

追问:HTTP 200 是否代表接口成功?

不一定。还要看业务 code、message、data 和业务数据是否正确。

追问:404 一定是后端没有接口吗?

不一定。可能是前端路径错、请求方法错、网关路由错、服务版本不对或 Nginx 转发错。

追问:500 怎么提 Bug?

附上请求 URL、方法、参数、Header、响应、时间点、业务 ID 和关键日志异常。

十二、练习清单

  1. 用 Postman 观察 200 响应;
  2. 模拟未登录接口 401;
  3. 模拟无权限接口 403;
  4. 请求错误路径观察 404;
  5. 构造错误参数观察 400;
  6. 观察登录失效是否 302;
  7. 区分 HTTP 状态码和业务 code;
  8. 为接口自动化添加状态码断言;
  9. 为接口自动化添加业务 code 断言;
  10. 准备状态码面试回答。

状态码是定位方向,不是最终结论。优秀测试工程师会用状态码快速缩小范围,再结合请求、响应、日志和业务数据完成定位。

配套刷题:

  • 网络协议测试面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
3. GET 和 POST 区别怎么回答
Next
5. Cookie Session Token 怎么区分