Conceito Chave: Testar nas camadas mais baixas garante velocidade; testar nas camadas mais altas garante confiança na jornada do usuário. O equilíbrio entre elas é o que chamamos de Pirâmide de Testes.
A Pirâmide de Testes é um modelo que nos ajuda a agrupar os testes de software em diferentes camadas. Ela nos diz, essencialmente, onde devemos investir nosso tempo e recursos de automação.
As Camadas da Pirâmide
1. Testes de Unidade (Base)
O que são: Testam a menor parte testável de um código (uma função, um método ou uma classe) de forma isolada.
Por que são a base: São extremamente rápidos de executar e baratos de manter.
Objetivo: Validar a lógica interna do código. Se algo quebrar aqui, o feedback para o desenvolvedor é instantâneo.
2. Testes de Integração / API (Meio)
O que são: Verificam se diferentes partes do sistema (ou sistemas externos, como banco de dados e APIs) funcionam bem juntas.
Foco: Garantir que o "contrato" entre os componentes não foi quebrado.
Equilíbrio: São um pouco mais lentos que os de unidade, mas cobrem riscos que os testes isolados não conseguem pegar.
3. Testes de Ponta a Ponta (E2E / UI) (Topo)
O que são: Simulam a jornada real do usuário no navegador ou dispositivo móvel, do início ao fim.
Foco: Validar se o sistema como um todo atende ao propósito de negócio.
Desafio: São lentos, caros e frágeis (flaky). Por isso, devemos ter poucos, focando apenas nos fluxos críticos (o "Caminho Feliz" ou Golden Path).
Por que seguir esse modelo?
A pirâmide nos ensina duas regras de ouro:
Velocidade vs. Custo: Quanto mais alto na pirâmide, mais lento o teste e mais caro é para mantê-lo.
Quantidade: Devemos ter uma base larga (muitos testes de unidade) e um topo estreito (poucos testes de UI).
Camada | Velocidade | Custo de Manutenção | Confiança de Negócio |
E2E (UI) | Lenta | Alto | Alta |
Integração | Média | Médio | Média |
Unidade | Rápida | Baixo | Baixa (focada em lógica) |
O Anti-Padrão: O Sorvete (Ice Cream Cone)
Quando uma equipe ignora a pirâmide, ela acaba criando o "Cone de Sorvete": muitos testes manuais ou de UI e quase nenhum teste de unidade.
Resultado: Testes que demoram horas para rodar, falham por instabilidade de rede e geram gargalos constantes no deploy.
💡 Como aplicamos aqui na Neppo?
Devs: Responsáveis por manter a base da pirâmide (Unidade e Integração) sólida.
QAs: Atuam na estratégia dos testes de Integração e garantem que os testes E2E cubram apenas os fluxos de maior risco.
Review: Durante o PR (Pull Request), verificamos se a funcionalidade nova está acompanhada dos testes na camada correta.
Comentários
0 comentário
Escreva seu comentário aqui
Por favor, entre para comentar.