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