Skip to main content

load-testing-k6

Use ao construir ou rodar testes de carga com k6. Cobre estrutura de script, thresholds objetivos, execução via Docker, e integração com a observabilidade Prometheus já existente no projeto.

ソース情報

リポジトリ
marquesmarcelo/dev-team
ソースの最終更新活動
2026年7月24日 19:24
検出された SKILL.md の言語
ポルトガル語
スター
2
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
load-testing-k6
description
Use ao construir ou rodar testes de carga com k6. Cobre estrutura de script, thresholds objetivos, execução via Docker, e integração com a observabilidade Prometheus já existente no projeto.
# Teste de carga: k6 ## Por que k6 Script de teste em JavaScript (sem precisar aprender ferramenta nova de UI), execução leve (escrito em Go por baixo), thresholds que falham o processo automaticamente quando o limite não é atingido (essencial para rodar em pipeline de CI, não só manualmente), e suporta exportar métricas direto para Prometheus — o que já é a stack de observabilidade deste projeto. ## Estrutura de script ```js import http from 'k6/http'; import { check, sleep } from 'k6'; export const options = { scenarios: { carga_normal: { executor: 'ramping-vus', startVUs: 0, stages: [ { duration: '30s', target: 50 }, // sobe até 50 usuários simultâneos { duration: '1m', target: 50 }, // mantém { duration: '30s', target: 0 }, // desce ], }, }, thresholds: { http_req_duration: ['p(95)<300'], // p95 abaixo de 300ms — FALHA o processo se não atingir http_req_failed: ['rate<0.01'], // taxa de erro abaixo de 1% }, }; export default function () { const res = http.get('http://backend:8080/api/v1/processos'); check(res, { 'status é 200': (r) => r.status === 200 }); sleep(1); } ``` ## Execução via Docker (sem instalar nada na máquina) ```bash docker run --rm -i --network=host grafana/k6 run - < load-tests/processos/listagem.js ``` Em `docker-compose.yml`, adicionar como serviço sob demanda (perfil separado, não sobe com `docker compose up -d` normal): ```yaml services: k6: image: grafana/k6 profiles: ["load-test"] networks: - default volumes: - ./load-tests:/scripts ``` Executa com: `docker compose --profile load-test run k6 run /scripts/processos/listagem.js` ## Saída e thresholds - `thresholds` no script já fazem o processo retornar código de saída diferente de zero se o limite não for atingido — isso é o que torna o teste de carga "passa/falha" objetivo, não leitura manual de número. - Para enviar resultado direto ao Prometheus já existente no projeto: `k6 run --out experimental-prometheus-rw script.js` (requer endpoint remote-write do Prometheus configurado). ## Cenários comuns - **Carga normal (smoke/load):** simula tráfego esperado do dia a dia — use para validar que o sistema aguenta o uso normal. - **Carga de pico (stress):** sobe além do esperado para encontrar o ponto de quebra — use só quando o dono do produto quiser saber o limite real, não como padrão de toda feature. - **Carga sustentada (soak):** mantém carga moderada por tempo longo (ex: 30 min+) para detectar vazamento de memória/degradação — usar com moderação, é mais caro de rodar. ## Interpretação de resultado - `p(95)` e `p(99)` importam mais que a média — a média esconde os piores casos que afetam usuários reais. - Taxa de erro (`http_req_failed`) acima do limite é mais grave que latência alta — geralmente indica saturação real, não só lentidão.
GitHubで見る