"Vamos fazer um teste de carga" é uma frase comum, mas existem diversos tipos de testes de performance, cada um respondendo perguntas diferentes. Usar o tipo errado pode dar uma falsa sensação de segurança — ou desperdiçar tempo testando o que não importa.
Este artigo explora os principais tipos de testes de performance e quando usar cada um.
O teste certo responde à pergunta certa. O teste errado dá confiança falsa.
Visão Geral
| Tipo | Pergunta que responde |
|---|---|
| Load Test | O sistema aguenta a carga esperada? |
| Stress Test | Onde está o limite? O que acontece além dele? |
| Soak Test | O sistema é estável por longos períodos? |
| Spike Test | O sistema aguenta picos repentinos? |
| Scalability Test | O sistema escala de forma linear? |
| Configuration Test | Qual configuração é melhor? |
Load Test (Teste de Carga)
O que é
Simula a carga esperada em produção para validar que o sistema atende aos requisitos de performance.
Quando usar
- Antes de releases importantes
- Após mudanças significativas
- Para validar SLOs
- Para estabelecer baseline
Perfil típico
Usuários
│
100 │ ┌──────────────────────┐
│ ╱ ╲
│ ╱ ╲
0 │───────╱ ╲───────
└─────────────────────────────────────────────
Ramp │ Steady State │ Ramp
Up │ (15-60 min) │ Down
Métricas importantes
- Latência (p50, p95, p99)
- Throughput
- Taxa de erro
- Uso de recursos
Exemplo de resultado
Load Test - 1000 usuários por 30 minutos
✓ Latência p95: 180ms (SLO: < 200ms)
✓ Taxa de erro: 0.05% (SLO: < 0.1%)
✓ Throughput: 5.000 RPS (esperado: 4.500 RPS)
Stress Test (Teste de Stress)
O que é
Aumenta carga progressivamente além do esperado para encontrar o ponto de ruptura.
Quando usar
- Para descobrir limites reais
- Para entender como o sistema falha
- Para capacity planning
- Para identificar gargalos
Perfil típico
Usuários
│
│ ╱
│ ╱
500 │ ╱ ← Ponto de ruptura
│ ╱
│ ╱
│ ╱
100 │──────────────────╱
│ ╱
0 │────────────────╱
└─────────────────────────────────────────────
Aumenta progressivamente até quebrar
Métricas importantes
- Ponto de saturação
- Comportamento sob saturação
- Recuperação após sobrecarga
- Primeiros sintomas de degradação
Exemplo de resultado
Stress Test - Aumentando até falha
✓ Performance estável até 3.000 usuários
⚠ Degradação começa em 3.500 usuários (latência 2x)
✗ Sistema falha com 4.200 usuários
→ Capacidade segura: ~3.000 usuários
Soak Test (Endurance Test)
O que é
Mantém carga moderada por longos períodos para identificar problemas que só aparecem com o tempo.
Quando usar
- Para detectar memory leaks
- Para identificar degradação gradual
- Para validar estabilidade
- Antes de grandes eventos prolongados
Perfil típico
Usuários
│
100 │ ┌────────────────────────────────────┐
│ ╱ ╲
0 │──╱ ╲──
└─────────────────────────────────────────────
4-24 horas (ou mais)
Métricas importantes
- Uso de memória ao longo do tempo
- Latência ao longo do tempo
- Conexões acumuladas
- Recursos não liberados
Exemplo de resultado
Soak Test - 500 usuários por 12 horas
✓ Latência estável (variação < 5%)
⚠ Memória cresceu de 2GB para 3.5GB
✗ Memory leak detectado: ~125MB/hora
→ Investigar leak antes de produção
Spike Test (Teste de Pico)
O que é
Simula aumentos repentinos e extremos de carga para validar comportamento sob picos.
Quando usar
- Para simular eventos virais
- Para validar autoscaling
- Para testar circuit breakers
- Antes de campanhas de marketing
Perfil típico
Usuários
│
│ ┌──┐
│ │ │ ┌──┐
500 │ │ │ │ │
│ │ │ │ │
│ ┌────┘ └────────┘ └────┐
100 │───┘ └───
│
0 │
└─────────────────────────────────
Picos súbitos
Métricas importantes
- Tempo de reação do autoscaling
- Erros durante o pico
- Tempo de recuperação
- Comportamento de fallback
Exemplo de resultado
Spike Test - 10x tráfego instantâneo
✓ Sistema absorveu pico sem falha
⚠ Latência subiu para 800ms durante pico (normal: 100ms)
✓ Recuperação em 45 segundos após pico
⚠ Autoscaling demorou 90 segundos para reagir
Scalability Test
O que é
Testa se adicionar recursos resulta em aumento proporcional de capacidade.
Quando usar
- Para validar arquitetura
- Para capacity planning
- Para identificar gargalos de escalabilidade
- Antes de investimentos em infra
Perfil típico
Throughput
│
│ ╱ ← Ideal (linear)
│ ╱╱
│ ╱╱
│ ╱╱ ← Real
│ ╱╱
│ ╱╱
│ ╱╱
│ ╱╱
└─────────────────────────
Recursos (instâncias)
Métricas importantes
- Throughput por instância
- Eficiência de escala
- Overhead de coordenação
- Ponto de retornos decrescentes
Exemplo de resultado
Scalability Test
1 instância: 1.000 RPS
2 instâncias: 1.900 RPS (95% eficiência)
4 instâncias: 3.600 RPS (90% eficiência)
8 instâncias: 6.400 RPS (80% eficiência)
→ Contenção começa a impactar com >4 instâncias
Configuration Test
O que é
Compara performance sob diferentes configurações para identificar a ideal.
Quando usar
- Para otimizar settings
- Para comparar tecnologias
- Para validar tuning
- Para escolher infra
Perfil típico
Múltiplos testes idênticos com configurações diferentes.
Exemplo de resultado
Configuration Test - Pool de conexões
Pool size: 10
Throughput: 1.000 RPS, Latência p95: 150ms
Pool size: 50
Throughput: 2.500 RPS, Latência p95: 80ms ← Melhor
Pool size: 100
Throughput: 2.400 RPS, Latência p95: 90ms
→ Pool size ideal: ~50 conexões
Escolhendo o Teste Certo
Árvore de decisão
Qual pergunta você quer responder?
│
├─ "Aguenta carga normal?" → Load Test
│
├─ "Qual o limite?" → Stress Test
│
├─ "É estável por horas?" → Soak Test
│
├─ "Aguenta picos?" → Spike Test
│
├─ "Escala linearmente?" → Scalability Test
│
└─ "Qual config é melhor?" → Configuration Test
Combinações comuns
Antes de um release:
- Load Test (valida carga esperada)
- Stress Test (conhece limites)
Antes de Black Friday:
- Load Test (baseline)
- Spike Test (simula picos)
- Soak Test (estabilidade durante evento)
Após otimização:
- Configuration Test (compara antes/depois)
- Load Test (valida melhoria)
Conclusão
Cada tipo de teste responde perguntas específicas:
| Se você quer saber... | Use... |
|---|---|
| Se atende requisitos | Load Test |
| Onde está o limite | Stress Test |
| Se é estável no tempo | Soak Test |
| Se aguenta picos | Spike Test |
| Se escala bem | Scalability Test |
| Qual config é melhor | Configuration Test |
Não existe "teste de performance genérico". Escolha conscientemente baseado no que você precisa aprender.
Um teste de performance sem objetivo claro é apenas exercício de ferramentas.