底层提供快速反馈
单元测试以毫秒级运行,并把失败定位到函数,适合纯逻辑、校验和边界情况。集成测试使用真实适配器:数据库、队列、HTTP 边界。端到端测试通过已部署系统覆盖少量关键用户旅程。每一层回答不同的问题。
E2E few, critical journeys
integration real boundaries, contracts
unit many, fast, deterministic
金字塔讲的是反馈经济学。单元测试发现的缺陷,诊断成本低于浏览器测试超时 30 秒后才发现的同一缺陷。
意外往往藏在集成层
许多团队过度 mock,随后发现序列化、SQL 或认证在生产中行为不同。集成测试应在可行时接触真实边界,使用容器或临时服务。契约测试可以在没有完整环境的情况下覆盖服务接口。端到端测试应聚焦业务风险最高的流程,而不是每个排列组合。
评审组合,而不是数量
有数千个单元测试却零集成覆盖的套件并不强;有 100 个端到端测试却零单元测试的套件又慢又不透明。要检查覆盖了哪些风险、失败诊断需要多久、套件是否不稳定。架构变化时调整配比。
何时使用
规划测试策略或诊断缓慢、不稳定的套件时,使用金字塔。优点是提供了讨论成本和覆盖的共同语言;缺点是可能被机械套用。与单层策略相比,分层组合提供更快反馈和更好的故障定位。