Pular para conteúdo

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

tests/

unit/

integration/

api/

fixtures/

Frontend

tests/

components/

hooks/

pages/

services/

Convenções

Cada App deverá possuir seus próprios testes.

Exemplo:

apps/leads/tests/

apps/accounts/tests/

apps/core/tests/

Nomenclatura

Arquivos:

test_leads.py

test_services.py

test_api.py

Funções:

test_create_lead()

test_update_company()

test_login()

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.