← 中文资源

简体中文版本

测试金字塔

测试金字塔按反馈经济性分层:大量快速单元测试、适量真实边界集成测试、少量关键路径端到端测试。

阅读英文原文

底层提供快速反馈

单元测试以毫秒级运行,并把失败定位到函数,适合纯逻辑、校验和边界情况。集成测试使用真实适配器:数据库、队列、HTTP 边界。端到端测试通过已部署系统覆盖少量关键用户旅程。每一层回答不同的问题。

        E2E        few, critical journeys
     integration   real boundaries, contracts
   unit            many, fast, deterministic

金字塔讲的是反馈经济学。单元测试发现的缺陷,诊断成本低于浏览器测试超时 30 秒后才发现的同一缺陷。

意外往往藏在集成层

许多团队过度 mock,随后发现序列化、SQL 或认证在生产中行为不同。集成测试应在可行时接触真实边界,使用容器或临时服务。契约测试可以在没有完整环境的情况下覆盖服务接口。端到端测试应聚焦业务风险最高的流程,而不是每个排列组合。

评审组合,而不是数量

有数千个单元测试却零集成覆盖的套件并不强;有 100 个端到端测试却零单元测试的套件又慢又不透明。要检查覆盖了哪些风险、失败诊断需要多久、套件是否不稳定。架构变化时调整配比。

何时使用

规划测试策略或诊断缓慢、不稳定的套件时,使用金字塔。优点是提供了讨论成本和覆盖的共同语言;缺点是可能被机械套用。与单层策略相比,分层组合提供更快反馈和更好的故障定位。