O Que É a Pirâmide de Testes?
A pirâmide de testes é uma diretriz sobre como equilibrar a sua suíte de testes: muitos testes unitários rápidos, menos testes de integração e apenas um punhado de testes end-to-end lentos.
A pirâmide de testes é um modelo mental simples para manter uma suíte rápida e confiável. Desenhada como um triângulo, ela coloca testes unitários baratos e rápidos na base larga, testes de integração mais lentos no meio e testes end-to-end caros no topo estreito. O formato indica onde a maioria dos seus testes deve ficar.
As três camadas
- Base: muitos testes unitários, rápidos e isolados.
- Meio: menos testes de integração verificando componentes juntos.
- Topo: alguns testes end-to-end cobrindo fluxos críticos do usuário.
- Camadas mais altas são mais lentas, mais custosas e mais instáveis por teste.
Por que o formato importa
Testes rápidos dão feedback rápido. Se a maior parte da sua cobertura vem de testes unitários rápidos, a suíte roda em segundos e aponta claramente para as falhas. Apoiar-se em testes E2E lentos e instáveis em vez disso torna o CI arrastado e ruidoso, corroendo a confiança no check verde.
O anti-padrão cone de sorvete
Quando um time inverte a pirâmide, com testes majoritariamente manuais e end-to-end e poucos testes unitários, forma-se um "cone de sorvete". Tais suítes são lentas, frágeis e difíceis de manter. A pirâmide é o corretivo: empurre a cobertura para a camada mais barata que consiga capturar o bug.
É um guia, não uma lei
As proporções exatas dependem do sistema. Um app pesado em UI precisa de mais testes de navegador; uma biblioteca pura pode ser quase toda de testes unitários. O princípio durável é preferir o teste mais rápido que verifique significativamente o comportamento.
A pirâmide e a velocidade do CI
Uma pirâmide saudável mantém o tempo total de CI baixo porque o grosso dos testes é rápido. A camada superior mais lenta é onde a paralelização mais compensa. Latchkey acelera a suíte inteira rodando testes em paralelo em runners rápidos, o que ajuda especialmente as camadas mais pesadas de integração e E2E.
Principais conclusões
- A pirâmide favorece muitos testes unitários, menos de integração, poucos E2E.
- Testes de camadas mais baixas e rápidas dão feedback mais rápido e claro.
- O "cone de sorvete" invertido é lento e frágil; evite-o.