🧪 Teste de Software e Automação
Testar é o processo de executar o software com a intenção deliberada de encontrar erros e validar o comportamento esperado. Na Engenharia moderna, os testes são, em sua maioria, automatizados.
🏛️ Pirâmide de Testes (Níveis)
Os testes são organizados por granularidade. Quanto mais baixo na pirâmide, mais rápido e barato é o teste.
graph TD
A["📦 Teste Unitário - Ex: 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íveis de Validação
| Nível de Teste | O que validamos na prática? |
|---|---|
| 📦 Unitário | O método ou a classe funciona isolada do resto do sistema? (Mocks/Stubs usados aqui). |
| 🔗 Integração | O Banco de Dados e as APIs de terceiros conversam corretamente com o nosso código? |
| 🛡️ Sistema | O fluxo completo do usuário (End-to-End) está estável no ambiente de Staging? |
| ✅ Aceitação | O cliente (Stakeholder) aprova a funcionalidade para subir em Produção? |
[!IMPORTANT] 💡 Axiomas do Teste:
- Testes mostram a presença de erros, nunca a sua ausência total.
- É impossível realizar testes exaustivos (todas as combinações possíveis).
- Princípio de Pareto: 80% dos defeitos estão concentrados em 20% das funcionalidades mais complexas. 🛡️