🛡️ Validação de Software e Pipeline de Testes
A validação de software visa demonstrar que o sistema atende às especificações do usuário e é à prova de falhas. A técnica principal é o teste de software automatizado.
Não basta confiar no programador; se uma API Spring for para produção sem bater 80% de cobertura de código, é grande o risco de causar prejuízo aos clientes.
📊 Os Três Estágios do Teste (Sommerville, 2011)
| Estágio Clássico | Descrição e Impacto no Ecossistema |
|---|---|
| Testes de Componente (Unidade) | Focado em lógica isolada (Mocks). Ex: Testar um @Service sem bater no banco de dados real usando o JUnit 5 e o Mockito. Responde rápido, roda na hora. |
| Testes de Sistema (Integração) | Encontra erros na junção. Ex: Injetar a injeção inteira do @SpringBootTest junto de um contêiner no Docker (Testcontainers) rodando um banco real. Lento, mas testa o mundo real. |
| Teste de Aceitação (Homologação) | Valida com o cliente (Product Owner). A API é colocada num ambiente de Staging na AWS (PaaS) e testada. |
graph LR
C[JUnit: Teste Unitário] --> S[Integração CI: GitHub Actions]
S --> A[Q.A. / Homologação]
A -->|Sucesso Total| RL[Deploy Contínuo]
style A fill:#c8e6c9,stroke:#2e7d32
[!IMPORTANT] 💡 Dica Corporativa (Validação vs Verificação):
- Validação: Estamos construindo a API Certa? (O cliente precisava disso?).
- Verificação: Construímos a API Corretamente? (Testes Unitários, Clean Code, Tratamento com
@RestControllerAdvice). Não basta que funcione, tem que funcionar perfeitamente.