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
| Tipo | Peso | Descrição |
|---|---|---|
| Empreendedor | 5 | Usuário principal, acessa planos de negócio, relatórios e linhas de crédito |
| Agente Estruturador | 2 | Mentores que acessam quadro de planos e revisões |
| Instituição Financeira | 1 | Gestores de linhas de crédito |
| Gestor (Manager) | 1 | Administradores 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
| Tipo | Quantidade | Emails | Senha |
|---|---|---|---|
| Gestor | 1 | manager@test.com | Test@1234 |
| Empreendedores | 50 | entrepreneur1@test.com até entrepreneur50@test.com | Test@1234 |
| Agentes | 10 | agent1@test.com até agent10@test.com | Test@1234 |
| Instituições | 5 | financial1@test.com até financial5@test.com | Test@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) ouhttp://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âmetro | Valor |
|---|---|
| Usuários | 10 |
| Duração | 2 minutos |
| Objetivo | Verificar funcionamento básico |
Carga Moderada
Simula uso normal durante horário comercial.
| Parâmetro | Valor |
|---|---|
| Usuários | 100 |
| Duração | 10 minutos |
| Objetivo | Validar comportamento com carga esperada |
Peak Test (Carga Alta)
Simula picos de acesso (ex: final de prazo para submissão).
| Parâmetro | Valor |
|---|---|
| Usuários | 500 |
| Duração | 15 minutos |
| Objetivo | Validar capacidade em momentos de pico |
Stress Test
Identifica os limites do sistema.
| Parâmetro | Valor |
|---|---|
| Usuários | 1000 |
| Duração | 20 minutos |
| Objetivo | Encontrar ponto de falha |
Soak Test (Endurance)
Valida estabilidade sob carga contínua prolongada.
| Parâmetro | Valor |
|---|---|
| Usuários | 200 |
| Duração | 2 horas |
| Objetivo | Detectar vazamentos de memória e degradação |
Endpoints Testados
Empreendedor
POST /api/auth/login/- LoginGET /api/auth/me/- PerfilGET /api/business-plans/- Listar planos de negócioGET /api/reports/- RelatóriosGET /api/credit-lines/- Linhas de crédito
Agente Estruturador
POST /api/auth/login/- LoginGET /api/auth/me/- PerfilGET /api/structuring-agents/business-plans/board/- Quadro de planosGET /api/structuring-agents/business-plans/review/- RevisõesGET /api/reports/- Relatórios
Instituição Financeira
POST /api/auth/login/- LoginGET /api/auth/me/- PerfilGET /api/financial-institutions/credit-lines/- Linhas de créditoGET /api/reports/- Relatórios
Gestor
POST /api/auth/login/- LoginGET /api/auth/me/- PerfilGET /api/managers/approval-requests/- Solicitações de aprovaçãoGET /api/managers/business-plans/- Todos os planosGET /api/managers/financial-institutions/approval-requests/- Aprovações de IFsGET /api/reports/- Relatórios
Interpretação dos Resultados
Métricas Principais
| Métrica | Meta | Descrição |
|---|---|---|
| Tempo médio | < 1000ms | Tempo médio de resposta |
| P95 | < 2000ms | 95% das requisições |
| P99 | < 3000ms | 99% das requisições |
| Taxa de erro | < 1% | Em condições normais |
| Throughput | > 100 RPS | Requisições por segundo |
Recursos do Sistema
| Recurso | Limite Recomendado |
|---|---|
| CPU | < 80% em carga normal |
| Memória | Crescimento 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
| Problema | Solução |
|---|---|
| "Connection refused" | Backend não está rodando |
| Erro 401 em massa | Refazer geração de dados de teste |
| "Account not approved" | Verificar is_approved=True no banco |
| Timeout nas requisições | Reduzir usuários ou aumentar recursos |
| Linux: host não resolve | Usar 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
Nunca execute testes de carga em produção sem aprovação prévia e em horários de baixo uso.
- Execute os testes em ambiente de staging/homologação
- Monitore o sistema durante toda a execução
- Tenha um plano de rollback
- Documente todos os resultados
- Compare resultados entre execuções para identificar regressões
Próximos Passos
Após executar os testes:
- ✅ Verificar taxa de erro < 1%
- ✅ Conferir tempo médio < 1s
- ✅ Analisar gargalos identificados
- 📝 Documentar no template
reports/TEMPLATE-RELATORIO.md - 🔧 Aplicar otimizações necessárias
- 🔄 Re-executar para validar melhorias