📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 11: Qualidade e Testes de Software. Recomendado revisar antes de começar.
v1.0 — Engenharia de Software & Práticas Profissionais
Trilha de Especialização Pedagógica
- Tecnologias: k6, JavaScript ES6, Performance Testing, Latência P95/P99, Thresholds, HTML Reports
- Arquivo Principal:
scripts/load_test.js
Scripts profissionais de teste de carga e análise de saturação de microsserviços com Grafana k6, simulando curvas de carga (Ramp-up, Spike, Soak Testing) com relatórios visuais de latência P95 e P99.
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 50 }, // Ramp-up para 50 usuarios
{ duration: '1m', target: 200 }, // Carga de pico (200 usuarios)
{ duration: '30s', target: 0 }, // Ramp-down
],
thresholds: {
http_req_duration: ['p(95)<200'], // 95% das requisicoes devem responder em < 200ms
http_req_failed: ['rate<0.01'], // Erros abaixo de 1%
},
};
export default function () {
const res = http.get('http://localhost:8080/api/v1/produtos');
check(res, {
'status is 200': (r) => r.status === 200,
});
sleep(1);
}
No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:
cd testes_03_performance_k6_load
./mvnw test
# ou k6 run load_test.js
[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/testes_03_performance_k6_load
O diagrama abaixo ilustra a topologia de componentes, balanceamento, esteiras de automação e observabilidade na subpasta scripts/:
flowchart TD
subgraph Config["Configuração & IaC"]
C1["Manifestos Declarativos"] --> C2["Variáveis & Segredos"]
end
subgraph Orquestracao["Orquestração & Redes"]
O1["Load Balancer / Ingress"] --> O2["Pods / Contêineres de Serviço"]
end
subgraph Observabilidade["Observabilidade & Segurança"]
M1["Telemetria Prometheus / k6"] --> M2["Scanners SAST & Dashboards"]
end
subgraph Qualidade["Homologação & Qualidade"]
Q1["Automação CI/CD"] --> Q2["Checkpoints CP-01..05 PASS"]
end
Config --> Orquestracao
Orquestracao --> Observabilidade
Observabilidade --> Qualidade
style Config fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
style Orquestracao fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
style Observabilidade fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
style Qualidade fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px
| ID | Persona | História de Usuário | Critério de Aceite | Prioridade |
|---|---|---|---|---|
| US-01 | Engenheiro de Performance | Desejo scripts k6 em JavaScript simulando Smoke Test básico | Verificação rápida de sanidade de endpoints com pouca carga (1 a 5 VUs) | Alta |
| US-02 | Arquiteto de Resiliência | Desejo teste de carga progressiva (Load Test) até 500 VUs | Avaliação de comportamento sob tráfego esperado em horário de pico | Alta |
| US-03 | Especialista em Confiabilidade | Desejo teste de estresse (Stress Test) descobrindo o ponto de quebra | Injeção de carga além do limite até ocorrência de degradação e erros HTTP 5xx | Alta |
| US-04 | Analista de Infraestrutura | Desejo teste de resistência (Soak/Endurance Test) de longa duração | Execução contínua monitorando vazamento de memória (memory leaks) e conexões | Alta |
| US-05 | Auditor de SLA | Desejo asserções com thresholds configurados (ex: http_req_duration p95 < 200ms) | Falha automática do script de teste caso o SLA seja violado | Média |
| ID | Descrição do Requisito | Criticidade |
|---|---|---|
| RF-01 | Scripts k6 modulares com estágios (stages) de ramp-up, platô e ramp-down | Alta |
| RF-02 | Validação com checks e thresholds rigorosos de latência e taxa de erros | Alta |
| RF-03 | Geração de métricas customizadas (Counter, Trend, Rate) no k6 | Alta |
| RF-04 | Exportação de relatórios resumidos em JSON e stdout formatado | Média |
| RF-05 | Módulo de testes automatizados com mock server local para calibração | Média |
| ID | Especificação Arquitetural | Criticidade |
|---|---|---|
| RNF-01 | Geração de alta taxa de requisições por segundo com baixíssimo uso de RAM | Alta |
| RNF-02 | Garantia de que os testes reflitam a distribuição estatística real de acessos | Alta |
| RNF-03 | Execução compatível com linha de comando k6 v0.45+ e contêiner oficial | Média |
| RNF-04 | Organização clara dos scripts na pasta scripts/ | Alta |
| RNF-05 | Zero dependências externas além do binário k6 | Alta |
| User Story | Requisito Funcional | Requisito Não-Funcional | Módulo / Artefato de Código | Status de Homologação |
|---|---|---|---|---|
| US-01 | RF-01 |
RNF-01, RNF-04 |
scripts/smoke_test.js |
Testado |
| US-02 | RF-01 |
RNF-01, RNF-02 |
scripts/load_test.js |
Testado |
| US-03 | RF-02 |
RNF-01, RNF-02 |
scripts/stress_test.js |
Testado |
| US-04 | RF-03 |
RNF-01, RNF-05 |
scripts/soak_test.js |
Testado |
| US-05 | RF-04 |
RNF-02, RNF-04 |
scripts/load_test.js |
Testado |
| Checkpoint | Escopo da Validação | Artefato Verificado | Status |
|---|---|---|---|
| CP-01 | Configuração Declarativa do Ambiente | scripts/ |
PASS ✅ |
| CP-02 | Provisionamento & Orquestração | Deployments / Services |
PASS ✅ |
| CP-03 | Redes, Proxies & Segurança de Borda | Ingress / Security Groups |
PASS ✅ |
| CP-04 | Observabilidade, Métricas & SAST | Metrics / Scanners |
PASS ✅ |
| CP-05 | Homologação com Suíte de Testes | Test Suite / CI Gate |
PASS ✅ |