Pular para o conteúdo principal

Testes de Carga com k6

Para quem é esta página

Engenheiros de plataforma e QA de performance.

Cenário de Carga Normal

// tests/load/normal_load.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
stages: [
{ duration: '2m', target: 50 }, // ramp up para 50 usuários
{ duration: '5m', target: 50 }, // sustain
{ duration: '2m', target: 100 }, // pico
{ duration: '5m', target: 100 }, // sustain no pico
{ duration: '2m', target: 0 }, // ramp down
],
thresholds: {
http_req_duration: ['p(50)<200', 'p(95)<500', 'p(99)<1000'],
http_req_failed: ['rate<0.01'],
},
};

Thresholds de Aceitação

Endpointp50p95p99Max erros
GET /api/v1/processos100ms300ms500ms0,1%
POST /api/v1/processos200ms500ms1000ms0,1%
POST /upload500ms2000ms5000ms1%
Assistente IA (1º token)1000ms3000ms6000ms2%
Assistente IA tem limites mais altos

O LLM introduz latência intrínseca de 1–3s para o primeiro token. Testes de carga do assistente medem separadamente e com thresholds adaptados.

Outros Cenários

CenárioObjetivo
Spike test0 → 300 usuários em 30s — como o sistema reage a picos súbitos
Soak test50 usuários por 1h — detectar memory leaks e degradação progressiva
Stress testEscalar até encontrar ponto de ruptura

Executar testes de carga apenas em staging — nunca em produção.