接口测试面试:返回 200 为什么还不能算测完
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- HTTP 状态码返回 200,是不是就算这个接口测完了?
- 你判断业务做对了的成功标准,是从哪里来的?
- 以创建订单为例,看到返回了订单号,还要核对什么?
- 系统采用异步处理时,怎么区分「请求已受理」和「最终处理成功」?
- 异常请求除了返回预期错误,还要检查什么?
- 同一个请求重复发两遍,怎么判断接口是否幂等?网络超时后能不能重试?
- 面试时怎么拿一条自己执行过的用例,把测试过程讲清楚?
- 写好的断言怎么自查它真的会失败?
《参考解析》
成功标准来自接口约定,不是 200
状态码要按每个接口自己的约定来判,创建、异步受理、无响应体等场景可能约定成 201 / 202 / 204,把所有接口都断言成「等于 200」是最常见的减分点。状态码符合预期也不代表业务字段和后续处理正确:业务码、必填字段、字段类型、关键值都要对着接口文档或已确认的需求核。规则本身不清楚时先记录待确认,不要凭感觉写断言——把不确定的地方写成断言,等于给自己埋一个假红或假绿。
正常返回之外,核对「实际发生了什么」
以创建订单为例,返回订单号之后还要按需求核对商品、数量、金额、订单所属用户和初始状态;能用查询接口核验,就拿订单号再查一次,获准访问测试库时也可以对记录做抽查。但不要每条用例都无条件查库,更不能把生产库当练习环境。异步链路要按约定轮询或查询到终态并设置超时:刚提交完查不到是正常的,不应直接判失败,也不能无上限地一直等到它成功才算通过——超时本身就是需要覆盖的用例。
异常场景重点看有没有留下脏数据
必填项缺失、金额格式错误、资源不存在这类请求,除了看返回的错误码和提示,还要确认没有创建半条订单、错误扣减库存或修改原数据。权限场景要用授权测试环境里的不同角色账号,既要看提示「无权限」,也要核对操作确实没有生效——只看提示是典型的假通过。校验项取决于具体业务,不要拿一张通用清单当成完整覆盖。
重复请求与幂等
同一请求发两遍是否只产生一笔结果,取决于这个接口有没有幂等约定。存在幂等键时,至少要覆盖「同一键同一请求」「不同键」「同一键但参数变化」三类;没有明确约定时先澄清,不要直接把「出现两条记录」判成 bug。网络超时后也一样:先查服务端处理状态,再判断能不能重试,盲目重试在写接口上很容易造出重复数据。
面试时讲一条自己真跑过的记录
按「前置数据 → 请求输入 → 预期依据 → 实际响应 → 结果核验 → 问题定位」串起来讲:具体说自己检查了哪个字段、通过什么查询确认状态、错误输入出现后有没有副作用。哪一步真做过就讲哪一步,没查过日志或数据库就不要补成自己排查过,面试官顺着问一句细节就会露。最后补一个容易被忽略的自查习惯:在本地把字段值故意改错,确认断言真的会失败——脚本全绿可能是系统正确,也可能只是断言没有检查关键结果。