浏览 AI 知识库

单元测试和接口测试有什么区别:各自应该覆盖什么

单元测试擅长验证局部规则,接口测试负责穿过路由、认证和真实边界。两者覆盖的问题不同,不能用测试数量代替分层设计。

先比较关键条件,再作选择

把自己的条件代入判断项;没有证据的维度保留未知,不用印象替代结论。

先别急着选

800 个单元测试都通过,为什么权限漏洞还在

项目有 800 个单元测试却没发现鉴权接口把别人的订单返回给当前用户;因为所有测试都 mock 了数据层,从未经过真实路由和权限组合。

  • 每类风险有对应测试层
  • 权限和失败路径未只靠 mock
  • 失败时能快速定位到层级
测试分层案例

同一个结算 Bug,分别放到能最快定位的层

失败首选层测试输入为什么
折扣边界算错单元订单 99/100 元、不同折扣快速定位规则和边界
API 返回错误字段接口真实 JSON、认证和数据库夹具验证服务契约和序列化
用户点击确认后状态没更新浏览器测试账号、表单和可见状态覆盖导航、请求和 UI 反馈
首次使用流程难以理解人工探索新用户路径和不同屏幕补自动化难以预设的体验问题

用例和金额为演示;真实分层按风险、稳定性和定位成本决定。

本例材料

先把本例的条件、限制和目标摆出来

需要确认本例内容
现有材料订单服务包含金额计算、权限中间件和 REST 接口;主要风险为计算边界、角色访问和数据库约束。
不能越过的边界按风险分层,不追求单一测试数量;单元测试验证纯逻辑,接口测试覆盖组件协作和契约。
要交付的结果分层测试计划
决定依据

单元测试和接口测试区别,哪些条件会改变最后选择

判断条件本例怎么核对本例归类
单元测试纯函数、业务规则、边界计算和错误分支,依赖尽量可控。快速定位逻辑
接口测试路由、认证、校验、数据库、序列化和错误契约,可使用隔离测试数据。验证服务协作
浏览器测试登录、表单、导航、支付前确认等关键用户流程和可见状态。验证真实体验
人工探索视觉、易用性、新功能和难以预设的组合问题。补自动化盲区
回归分配每个已发现 Bug 放到最便宜且能稳定复现它的层级。防止同类问题复发
代入本例

单元测试和接口测试区别:按本例条件得到的结论

可以确认

分层测试计划

计划把金额舍入放单元测试;成员/管理员访问、404/403 区分和事务回滚放接口测试;一条购买主流程进入浏览器测试。每个风险只在最合适层重点覆盖,避免相同 happy path 重复十次。

仍需确认

边界变化后需要重新判断

外部支付沙盒不稳定时需要契约测试和有限集成测试结合,不能用全 mock 宣称真实接口通过。

常见失败

为什么“测试层次齐全,执行仍很慢”还不能交付

测试层次齐全,执行仍很慢

原因
大量低价值场景重复跨层运行
怎么改
按风险与失败定位价值删重,保留少量端到端关键路径
验收方式

分层测试计划通过哪些检查才算完成

进一步核对

调试与测试:参考资料与核对入口