全链路测试

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

复制代码
[用户操作] 
    │
    ▼
┌─────────────┐
│   客户端     │  (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
数据库
第三方支付


四、一句话总结

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

补充图:

相关推荐
windliang9 小时前
Claude Code 源码分析(九):子 Agent 如何分叉、继续与回到父会话
前端·javascript·面试
触底反弹11 小时前
🚀 浏览器里跑 1.5B 参数大模型?我用 WebGPU + DeepSeek 做到了
人工智能·面试·typescript
测试199813 小时前
2026全新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
GitLqr15 小时前
Impeller 时代:Shader Jank 消失了,但渲染性能的战场也变了
flutter·面试·性能优化
退休倒计时15 小时前
【每日一题】LeetCode 20. 有效的括号 TypeScript
算法·leetcode·职场和发展·typescript
Tsuki_tl16 小时前
【面试高频】 HashMap, HashTable,ConcurrentHashMap 之间的区别
面试·hashmap·synchronized·哈希表·多线程并发·hashtable·分段锁
城管不管17 小时前
第八次面试2026.8.10
面试·职场和发展
JieE21217 小时前
单例模式:为什么大模型只加载一次就够了?
面试