Pular para o conteúdo principal

Testes de Carga

Este guia descreve como executar testes de carga para validar a performance e escalabilidade do sistema.

Visão Geral​

Os testes de carga simulam o comportamento real dos usuários do sistema, permitindo identificar gargalos e validar a capacidade de atendimento em diferentes cenários.

Tipos de Usuário Simulados​

TipoPesoDescrição
Empreendedor5Usuário principal, acessa planos de negócio, relatórios e linhas de crédito
Agente Estruturador2Mentores que acessam quadro de planos e revisões
Instituição Financeira1Gestores de linhas de crédito
Gestor (Manager)1Administradores que gerenciam aprovações

Pré-requisitos​

  • Docker e Docker Compose instalados
  • Backend rodando em http://localhost:8080
  • Banco de dados populado com dados de teste

Instalação​

Opção 1: Docker (Recomendado)​

Os arquivos de teste de carga estão na pasta load-tests/ na raiz do projeto.

cd load-tests

Opção 2: Python Local​

cd load-tests
python -m venv venv
venv\Scripts\activate # Windows
pip install -r requirements.txt

Preparação dos Dados​

Antes de executar os testes, é necessário popular o banco com usuários de teste.

Via Django Shell​

cd backend
python manage.py shell < ../load-tests/data/generate_test_data.py

Usuários Criados​

TipoQuantidadeEmailsSenha
Gestor1manager@test.comTest@1234
Empreendedores50entrepreneur1@test.com até entrepreneur50@test.comTest@1234
Agentes10agent1@test.com até agent10@test.comTest@1234
Instituições5financial1@test.com até financial5@test.comTest@1234

Também são criadas 20 linhas de crédito de teste.

Executando os Testes​

Scripts Pré-configurados​

Windows:

run-test.bat smoke       # Teste rápido (10 users, 2min)
run-test.bat moderate # Carga normal (100 users, 10min)
run-test.bat peak # Pico de carga (500 users, 15min)
run-test.bat stress # Teste de stress (1000 users, 20min)
run-test.bat soak # Teste de estabilidade (200 users, 2h)

Linux/Mac:

chmod +x run-test.sh
./run-test.sh smoke
./run-test.sh moderate
./run-test.sh peak
./run-test.sh stress
./run-test.sh soak

Interface Web (Modo Interativo)​

docker-compose up

Acesse: http://localhost:8089

Configure:

  • Host: http://host.docker.internal:8080 (Windows/Mac) ou http://172.17.0.1:8080 (Linux)
  • Users: Quantidade de usuários simultâneos
  • Spawn rate: Usuários criados por segundo

Cenários de Teste​

Smoke Test​

Validação básica do sistema com carga mínima.

ParâmetroValor
Usuários10
Duração2 minutos
ObjetivoVerificar funcionamento básico

Carga Moderada​

Simula uso normal durante horário comercial.

ParâmetroValor
Usuários100
Duração10 minutos
ObjetivoValidar comportamento com carga esperada

Peak Test (Carga Alta)​

Simula picos de acesso (ex: final de prazo para submissão).

ParâmetroValor
Usuários500
Duração15 minutos
ObjetivoValidar capacidade em momentos de pico

Stress Test​

Identifica os limites do sistema.

ParâmetroValor
Usuários1000
Duração20 minutos
ObjetivoEncontrar ponto de falha

Soak Test (Endurance)​

Valida estabilidade sob carga contínua prolongada.

ParâmetroValor
Usuários200
Duração2 horas
ObjetivoDetectar vazamentos de memória e degradação

Endpoints Testados​

Empreendedor​

  • POST /api/auth/login/ - Login
  • GET /api/auth/me/ - Perfil
  • GET /api/business-plans/ - Listar planos de negócio
  • GET /api/reports/ - Relatórios
  • GET /api/credit-lines/ - Linhas de crédito

Agente Estruturador​

  • POST /api/auth/login/ - Login
  • GET /api/auth/me/ - Perfil
  • GET /api/structuring-agents/business-plans/board/ - Quadro de planos
  • GET /api/structuring-agents/business-plans/review/ - Revisões
  • GET /api/reports/ - Relatórios

Instituição Financeira​

  • POST /api/auth/login/ - Login
  • GET /api/auth/me/ - Perfil
  • GET /api/financial-institutions/credit-lines/ - Linhas de crédito
  • GET /api/reports/ - Relatórios

Gestor​

  • POST /api/auth/login/ - Login
  • GET /api/auth/me/ - Perfil
  • GET /api/managers/approval-requests/ - Solicitações de aprovação
  • GET /api/managers/business-plans/ - Todos os planos
  • GET /api/managers/financial-institutions/approval-requests/ - Aprovações de IFs
  • GET /api/reports/ - Relatórios

Interpretação dos Resultados​

Métricas Principais​

MétricaMetaDescrição
Tempo médio< 1000msTempo médio de resposta
P95< 2000ms95% das requisições
P99< 3000ms99% das requisições
Taxa de erro< 1%Em condições normais
Throughput> 100 RPSRequisições por segundo

Recursos do Sistema​

RecursoLimite Recomendado
CPU< 80% em carga normal
MemóriaCrescimento linear e estável
Conexões DB< limite configurado

Monitoramento Durante Testes​

CPU e Memória​

docker stats modulo-empreendedorismo-backend-1

Conexões do Banco​

docker exec -it modulo-empreendedorismo-db-1 psql -U postgres -d empreendedorismo \
-c "SELECT count(*) FROM pg_stat_activity WHERE state = 'active';"

Logs​

docker logs -f modulo-empreendedorismo-backend-1

Troubleshooting​

ProblemaSolução
"Connection refused"Backend não está rodando
Erro 401 em massaRefazer geração de dados de teste
"Account not approved"Verificar is_approved=True no banco
Timeout nas requisiçõesReduzir usuários ou aumentar recursos
Linux: host não resolveUsar http://172.17.0.1:8080

Estrutura de Arquivos​

load-tests/
├── run-test.bat/sh # Scripts para execução rápida
├── docker-compose.yml # Orquestração (master + workers)
├── locustfile.py # Cenários de teste
├── .env.* # Configurações por cenário
├── data/
│ └── generate_test_data.py # Geração de dados de teste
└── reports/
├── TEMPLATE-RELATORIO.md # Template para documentar
└── *.html # Relatórios gerados

Variáveis de Ambiente​

Arquivo .env.example:

TARGET_HOST=http://host.docker.internal:8080
AUTOSTART=true # Iniciar automaticamente
USERS=100 # Usuários simultâneos
SPAWN_RATE=10 # Usuários/segundo
RUN_TIME=10m # Duração do teste
WORKERS=4 # Número de workers

Boas Práticas​

Importante

Nunca execute testes de carga em produção sem aprovação prévia e em horários de baixo uso.

  1. Execute os testes em ambiente de staging/homologação
  2. Monitore o sistema durante toda a execução
  3. Tenha um plano de rollback
  4. Documente todos os resultados
  5. Compare resultados entre execuções para identificar regressões

Próximos Passos​

Após executar os testes:

  1. ✅ Verificar taxa de erro < 1%
  2. ✅ Conferir tempo médio < 1s
  3. ✅ Analisar gargalos identificados
  4. 📝 Documentar no template reports/TEMPLATE-RELATORIO.md
  5. 🔧 Aplicar otimizações necessárias
  6. 🔄 Re-executar para validar melhorias