Volver a Learning
Performance Testing Skills
🔥
Skill
Claude Code
Performance Testing Skills
k6-best-practices
k6JavaScriptTypeScriptClaude CodeLoad TestingHTTPWebSocketgRPC
Tabla de contenidos
rcampos09/performance-testing-skills
¿Qué es un Claude Code Skill?
🎯
Activación automática
📄
Archivos completos
🔌
Multi-protocolo
Instalación
Requisitos del entorno
| Runtime | Versión mínima | Uso |
|---|---|---|
| k6 | latest | Runtime principal para ejecutar los scripts |
| Node.js | 18+ | Necesario para soporte TypeScript y bundling |
| esbuild / webpack | opcional | Transpilación TypeScript para módulos avanzados |
Skills disponibles
K6
k6-best-practices
Se activa cuando mencionas:
JavaScriptTypeScriptHTTP/RESTWebSocketgRPC
Cómo funciona en la práctica
1
Archivo completo y ejecutable
2
El comando exacto para ejecutarlo
3
Explicación del executor elegido
Los 5 bloques esenciales
01
Options
02
Data
03
Setup
04
Default function
05
Teardown
Los 10 errores críticos que el skill detecta
1
Missing sleep() entre requests
❌ Incorrecto
export default function() {
http.get(`${BASE_URL}/a`);
http.get(`${BASE_URL}/b`);
}
http.get(`${BASE_URL}/a`);
http.get(`${BASE_URL}/b`);
}
✅ Correcto
export default function() {
http.get(`${BASE_URL}/a`);
sleep(1);
http.get(`${BASE_URL}/b`);
}
http.get(`${BASE_URL}/a`);
sleep(1);
http.get(`${BASE_URL}/b`);
}
2
Tratar check() como gate de test
❌ check() no falla el test
check(res, {
'status 200': (r) =>
r.status === 200,
});
'status 200': (r) =>
r.status === 200,
});
✅ threshold sí falla el test
// En options:
thresholds: {
'checks': ['rate>0.99'],
'http_req_duration': [
'p(95)<1000'],
}
thresholds: {
'checks': ['rate>0.99'],
'http_req_duration': [
'p(95)<1000'],
}
3
URLs hardcodeadas
❌ Incorrecto
http.get('https://prod.api.com/users');
✅ Correcto
const BASE_URL = __ENV.BASE_URL;
http.get(`${BASE_URL}/users`);
http.get(`${BASE_URL}/users`);
4
Variables globales para test data en vez de SharedArray
❌ Copia por VU (OOM risk)
const users = JSON.parse(
open('./users.json')
);
open('./users.json')
);
✅ Memoria compartida
const users = new SharedArray(
'users', () =>
JSON.parse(open('./users.json'))
);
'users', () =>
JSON.parse(open('./users.json'))
);
5
Imports desordenados
6
Executor equivocado para el modelo de carga
7
preAllocatedVUs insuficiente
8
gracefulStop demasiado corto
9
Token compartido entre VUs
10
Missing Content-Type en body
Guía de executors
CLOSED MODEL
constant-vus ramping-vus per-vu-iterations shared-iterations OPEN MODEL
constant-arrival-rate ramping-arrival-rate externally-controlled ¿Cuándo usar cada modelo?