Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🧪 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 TesteO que validamos na prática?
UnitárioO método ou a classe funciona isolada? (Base da pirâmide).
IntegraçãoO Banco de Dados e as APIs conversam corretamente?
Sistema (E2E)O fluxo completo do usuário está estável (Cypress/Selenium)?
AceitaçãoO cliente aprova a funcionalidade para subir em Produção?

🔍 Axiomas Fundamentais do Teste

  1. Presença de Erros: Testes mostram que existem erros, nunca que o sistema é 100% perfeito.
  2. Impossibilidade de Exaustão: Não dá para testar todas as combinações infinitas do mundo.
  3. 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). 🧠🛡️