全链路测试

一、全链路示意图(文本版)

复制代码
[用户操作] 
    │
    ▼
┌─────────────┐
│   客户端     │  (App/Web/小程序)
│  - 发起请求  │
│  - 接收响应  │
└──────┬──────┘
       │ HTTP/HTTPS
       ▼
┌─────────────┐
│   网关/入口   │  (Nginx/API Gateway)
│  - 鉴权      │
│  - 限流      │
│  - 路由      │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  业务服务A   │  (订单服务)
│  - 业务逻辑  │
└──────┬──────┘
       │ 调用
       ▼
┌─────────────┐
│  业务服务B   │  (库存服务)
│  - 核心逻辑  │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  数据库/缓存  │ (MySQL/Redis)
└─────────────┘
       │
       ▼
┌─────────────┐
│  第三方依赖   │ (支付/短信)
└─────────────┘

二、不同测试覆盖的"段"

1️⃣ 客户端接口测试(Mock 服务端)

复制代码
[客户端] ──请求──→ [Mock服务端]  ← 只测这里,后面的全部假的
  • 覆盖:客户端发请求、处理响应(成功/失败/超时/数据解析)
  • 不覆盖:任何真实的后端逻辑、数据库、第三方

2️⃣ 服务端接口测试(直接调接口)

复制代码
[Mock客户端] ──请求──→ [网关] → [服务A] → [服务B] → [数据库]
  • 覆盖:服务端内部链路(网关 → 微服务 → DB)
  • 不覆盖:客户端真实交互(网络波动、UI、本地缓存等)

3️⃣ 客户端 E2E 测试(Client-side E2E 真实服务端)

复制代码
[客户端] ──→ [网关] → [服务A] → [服务B] → [数据库]
  • 覆盖:从用户操作到数据落库的完整路径(但不一定覆盖所有下游,比如第三方可能用挡板)
  • 仍可能缺:第三方真实响应、复杂的跨服务事务、全量压测场景

4️⃣ 全链路测试(End-to-End 真实链路)

复制代码
[客户端] ──→ [网关] → [服务A] → [服务B] → [数据库] → [第三方真实]
  • 覆盖:从头到尾,包括真实第三方、生产级数据量、网络延迟、限流熔断等
  • 强调链路不断,所有节点都是真实的或高仿真的(除非第三方不可控,则用模拟挡板但仍会验证交互协议)

三、用泳道图(mermaid)展示分工

全链路测试范围
服务端接口测试范围
客户端接口测试范围
HTTP
用户操作
客户端
网关
业务服务A
业务服务B
数据库
第三方支付


四、一句话总结

  • 客户端测试:只测"门里"(自己的代码),门外(服务端)用假人代替。
  • 服务端测试:只测"屋里"(后端服务),敲门的人(客户端)用假人代替。
  • 全链路测试 :真人敲门,走进全屋,打开所有房间,甚至从后门出去到街上(第三方),全程必须真实打通

补充图:

相关推荐
Ruihong9 小时前
Vue withDefaults 转 React:VuReact 怎么处理?
vue.js·react.js·面试
kyriewen10 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
烬羽15 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
云技纵横15 小时前
一个 @Async,把 @Transactional 的事务边界打穿了
后端·面试
想要成为糕糕手16 小时前
Harness Engineering:大模型时代的“马鞍”——从记忆层开始,让AI真正为你所用
面试·ai编程·claude
kyriewen1 天前
我手写了一个 EventEmitter,面试官追问了 6 个问题——第 4 个我没答上来
前端·javascript·面试
她的男孩1 天前
后台接口加密别只会 HTTPS,ForgeAdmin 的 RSA + SM4/AES 源码拆解
后端·面试·开源
Randyliu1 天前
20260508-Agent搭建记录以及对ReAct框架的理解
面试·agent
ZzT1 天前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
PBitW1 天前
GPT训练我的第四天,被打惨了!!!😭😭😭
前端·javascript·面试