一、全链路示意图(文本版)
[用户操作]
│
▼
┌─────────────┐
│ 客户端 │ (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
数据库
第三方支付
四、一句话总结
- 客户端测试:只测"门里"(自己的代码),门外(服务端)用假人代替。
- 服务端测试:只测"屋里"(后端服务),敲门的人(客户端)用假人代替。
- 全链路测试 :真人敲门,走进全屋,打开所有房间,甚至从后门出去到街上(第三方),全程必须真实打通。
补充图:
