Testing Standard¶
Objetivo¶
Definir o padrão oficial para testes automatizados da CoreFlow Platform.
Todos os produtos deverão possuir cobertura de testes adequada para garantir qualidade, estabilidade e evolução segura.
Princípios¶
Todo desenvolvimento deverá seguir:
- Test First quando aplicável
- Automação
- Reprodutibilidade
- Isolamento
- Determinismo
- Cobertura dos fluxos críticos
Tipos de Teste¶
Unitários¶
Objetivo:
Validar uma unidade de código isoladamente.
Exemplos:
- Services
- Validators
- Utils
- Selectors
- Repositories
Integração¶
Validar interação entre componentes.
Exemplos:
- ORM
- Banco
- APIs
- Redis
- Celery
APIs¶
Validar:
- Autenticação
- Permissões
- Payloads
- Status HTTP
- Regras de negócio
Funcionais¶
Validar o comportamento esperado da funcionalidade.
Regressão¶
Executados obrigatoriamente antes de cada release.
Performance¶
Executados para operações críticas.
Avaliar:
- Tempo de resposta
- Consumo de memória
- Consumo de CPU
Framework Oficial¶
Backend
- pytest
- pytest-django
- factory-boy
Frontend
- Vitest
- React Testing Library
Organização¶
Backend
Frontend
Convenções¶
Cada App deverá possuir seus próprios testes.
Exemplo:
Nomenclatura¶
Arquivos:
Funções:
Fixtures¶
Obrigatório utilizar fixtures reutilizáveis.
Nunca duplicar massa de testes.
Factory¶
Obrigatório utilizar Factory Boy.
Evitar criação manual de objetos repetitivos.
Banco de Dados¶
Os testes deverão utilizar banco isolado.
Nunca executar testes contra banco de produção.
APIs¶
Validar obrigatoriamente:
- GET
- POST
- PUT
- PATCH
- DELETE
Também validar:
- autenticação
- autorização
- payload inválido
- permissões
- paginação
- filtros
Cobertura¶
Meta mínima:
- Backend: 90%
- Services: 100%
- Repositories: 100%
- Validators: 100%
- APIs: 90%
Cobertura é indicador de apoio, não substitui qualidade dos testes.
Casos Obrigatórios¶
Cada funcionalidade deverá possuir testes para:
- Sucesso
- Erro
- Permissão negada
- Dados inválidos
- Limites
- Exceções
- Regras de negócio
Mock¶
Utilizar mocks apenas quando necessário.
Evitar mockar comportamento interno da própria aplicação.
Integrações Externas¶
Nunca depender de serviços externos reais.
Utilizar:
- Mocks
- Stubs
- Fake Services
Tempo de Execução¶
A suíte completa deverá ser rápida.
Objetivo:
- Unitários: segundos
- Integração: poucos minutos
- Regressão: pipeline CI
CI/CD¶
Toda Pull Request deverá executar automaticamente:
- Linter
- Testes Unitários
- Testes de Integração
- Cobertura
- Análise estática
Merge somente após aprovação.
Bugs¶
Toda correção de bug deverá incluir um teste que reproduza o problema antes da correção.
Dados de Teste¶
Nunca utilizar:
- Dados reais de clientes
- Dados sensíveis
- Credenciais reais
Documentação¶
Toda funcionalidade documentada deverá possuir referência aos testes correspondentes quando aplicável.
Checklist¶
Antes de concluir uma funcionalidade verificar:
- Testes criados
- Cobertura adequada
- Casos de erro
- Casos de sucesso
- Permissões
- Regressão
- Performance (quando necessário)
Anti-patterns¶
É proibido:
- Testes dependentes entre si
- Testes sem assertivas
- Uso excessivo de mocks
- Testes lentos sem justificativa
- Ignorar testes quebrados
- Comentários para desabilitar testes
- Alterar código apenas para "passar" nos testes
Objetivo Final¶
Garantir que toda a CoreFlow Platform possua uma suíte de testes confiável, automatizada, rápida e capaz de sustentar a evolução contínua da plataforma com segurança e previsibilidade.