🧪 CAPÍTULO 17: ESTRATÉGIAS DE TESTE
Testar é o processo de executar o software com a intenção deliberada de encontrar erros e validar o comportamento esperado. Na engenharia moderna, o foco é a Automação para garantir a velocidade da entrega. 🛡️🧩
🎯 Objetivo do Capítulo
Compreender a Pirâmide de Testes, diferenciando testes Unitários, de Integração e de Sistema, e aplicar os axiomas fundamentais da validação de software.
🏢 O Cenário Corporativo (TecProExpress QA)
Na TecProExpress, o time de desenvolvimento enviou uma atualização que quebrou o sistema de login em produção. O erro era simples, mas como ninguém testou, ele passou despercebido.
"Seu desafio é implementar a Pirâmide de Testes. Não aceitaremos mais códigos que não tenham cobertura de testes unitários. Você deve garantir que a base da pirâmide seja sólida para que possamos subir para a nuvem com confiança."
🧠 A Pirâmide de Testes
Os testes são organizados por granularidade. Quanto mais baixo na pirâmide, mais rápido e barato é o teste.
📊 Estrutura de Granularidade
graph TD
A["🧪 Teste Unitário (JUnit)"] --> B["⚙️ Teste de Integração"]
B --> C["🌐 Teste de Sistema (E2E)"]
C --> D["🤝 Teste de Aceitação (UAT)"]
style A fill:#e3f2fd,stroke:#1e88e5
style D fill:#f1f8e9,stroke:#558b2f
| Nível de Teste | O que validamos na prática? |
|---|---|
| Unitário | O método ou a classe funciona isolada? (Base da pirâmide). |
| Integração | O Banco de Dados e as APIs conversam corretamente? |
| Sistema (E2E) | O fluxo completo do usuário está estável (Cypress/Selenium)? |
| Aceitação | O cliente aprova a funcionalidade para subir em Produção? |
🔍 Axiomas Fundamentais do Teste
- Presença de Erros: Testes mostram que existem erros, nunca que o sistema é 100% perfeito.
- Impossibilidade de Exaustão: Não dá para testar todas as combinações infinitas do mundo.
- Princípio de Pareto (80/20): 80% dos problemas estão concentrados em apenas 20% das funcionalidades mais complexas.
[!TIP] Dica Sênior: Invista pesado na base da pirâmide (Testes Unitários). Eles rodam em milissegundos e pegam erros de lógica antes mesmo de o código sair da sua máquina. Testes de interface (E2E) são caros e lentos; use-os com moderação para os fluxos críticos. 🚀
💡 Checkpoint de Lógica
[!IMPORTANT] Reflexão Profissional: Se você tem um prazo curto, deve focar em testes de Sistema (interface) ou em testes Unitários? (Resposta: Unitários. Eles dão o feedback mais rápido e garantem que o 'motor' do sistema está funcionando, mesmo que a 'carroceria' ainda tenha ajustes). 🧠🛡️