Skip to content
Latchkey

O Que É a Testing Pyramid?

A testing pyramid é uma diretriz para equilibrar tipos de teste: muitos unit tests rápidos na base, menos integration tests, e ainda menos end-to-end tests no topo.

Nem todos os testes são iguais em velocidade, custo, ou no que capturam. A testing pyramid é um modelo mental simples de como misturá-los: muitos testes baratos e rápidos na base e alguns caros e amplos no topo.

As três camadas

A base são os unit tests: numerosos, rápidos e focados em pequenas partes de código. O meio são os integration tests: menos numerosos, mais lentos, verificando que os componentes funcionam juntos. O topo são os end-to-end tests: os menos numerosos, mais lentos e mais amplos, verificando jornadas completas do usuário. O formato, base larga, topo estreito, é a recomendação.

Por que esse formato

Unit tests rápidos e baratos dão o feedback mais rápido e preciso, então você quer muitos deles. End-to-end tests são realistas mas lentos e instáveis, então você quer apenas o suficiente para cobrir os caminhos críticos. Inverter a pirâmide, apoiando-se em end-to-end tests lentos, torna sua suíte lenta e frágil.

Um exemplo

Um projeto saudável pode ter alguns milhares de unit tests rodando em menos de um minuto, algumas centenas de integration tests rodando em alguns minutos, e algumas dezenas de end-to-end tests cobrindo signup, checkout e login. A maior parte da cobertura vem de forma barata da base.

O anti-padrão: o ice cream cone

O inverso da pirâmide, muitos end-to-end e testes manuais com poucos unit tests, é às vezes chamado de "ice cream cone." Ele produz suítes de teste lentas e instáveis que são dolorosas de rodar a cada mudança, minando a continuous integration. A pirâmide existe para afastar as equipes disso.

Por que importa para o CI

O CI roda a suíte inteira a cada mudança, então sua velocidade e confiabilidade afetam diretamente com que frequência as pessoas integram. Uma suíte em formato de pirâmide roda rápido e raramente fica instável, mantendo o feedback rápido. Uma suíte pesada no topo arrasta cada pull request, e é por isso que a pirâmide é um padrão amigável ao CI.

Principais conclusões

  • A pirâmide favorece muitos unit tests, menos integration, o mínimo de E2E.
  • Testes rápidos e baratos na base dão o melhor feedback por segundo.
  • Um "ice cream cone" pesado no topo torna o CI lento e instável.

Guias relacionados