O que é end-to-end testing?
End-to-end testing verifica uma jornada de usuário completa através de todo o sistema, exatamente como um usuário real a experimentaria.
Testes end-to-end (E2E) ficam no topo da pirâmide de testes. Onde unit tests verificam peças e integration tests verificam conexões, testes E2E verificam que o sistema inteiro, front end, back end, banco de dados, entrega o resultado certo para um fluxo de trabalho real.
O que é
Um teste end-to-end conduz a aplicação da forma como um usuário faz, através da interface real, por todas as camadas reais, e verifica o resultado final. Para um web app isso frequentemente significa automatizar um navegador para percorrer um fluxo como se cadastrar, adicionar um item ao carrinho e finalizar a compra.
Um exemplo
Um teste E2E para uma loja online abre um navegador, navega até o site, registra uma conta, busca um produto, adiciona-o ao carrinho, conclui o checkout com um cartão de teste e verifica que uma confirmação de pedido aparece, exercitando cada camada em um único teste.
Os trade-offs
Testes E2E são os mais realistas mas também os mais lentos, mais caros e mais propensos à instabilidade, já que dependem do sistema inteiro e do timing real. Uma pequena mudança na UI pode quebrar muitos deles. É por isso que a pirâmide de testes aconselha ter relativamente poucos testes E2E sobre muitos unit tests.
Onde se encaixam no CI
Como são lentos e precisam de um sistema em execução, testes E2E tipicamente rodam mais tarde no pipeline, depois que unit e integration tests passam, e frequentemente contra um ambiente de staging implantado. Os times mantêm a suíte E2E pequena e focada nas jornadas mais críticas para equilibrar cobertura contra velocidade e instabilidade.
Por que importam
Testes E2E detectam problemas que só aparecem quando tudo está conectado, navegação quebrada, serviços mal configurados, lacunas de integração entre front e back end. Eles são a aproximação automatizada mais próxima de um usuário real, e uma suíte E2E de caminho crítico que passa é forte evidência de que um release é seguro.
Principais conclusões
- Testes E2E verificam jornadas de usuário inteiras através do sistema real.
- Eles são os mais realistas mas os mais lentos e mais instáveis.
- Mantenha-os poucos e focados em caminhos críticos, rodando mais tarde no CI.