Lección 4 de 6 · 2 min
Tu primera prueba con k6
Al terminar sabrás
11 min- Escribir un script de k6 con usuarios virtuales (VUs) y etapas de carga
- Agregar checks (validar respuestas) y thresholds (criterios que hacen fallar la prueba)
- Ejecutar la prueba y leer el resumen
Construyes: Tu primer script de k6 que aplica una carga en etapas con criterios de aceptación.
Por qué k6
Hay muchas herramientas (JMeter, Gatling, Locust). Usamos k6 porque los scripts son JavaScript —el mismo lenguaje de Playwright y Cypress—, es gratis, corre desde la terminal y se integra fácil en CI. Instalarlo es un comando y no necesitas interfaz gráfica.
Anatomía de un script
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
stages: [
{ duration: '30s', target: 50 }, // ramp-up: 0 → 50 usuarios
{ duration: '1m', target: 50 }, // meseta: 50 usuarios
{ duration: '20s', target: 0 }, // ramp-down: 50 → 0
],
thresholds: {
http_req_duration: ['p(95)<500'], // criterio: p95 bajo 500 ms
http_req_failed: ['rate<0.01'], // menos de 1% de errores
},
};
export default function () {
const res = http.get('https://test-api.k6.io/public/crocodiles/');
check(res, {
'status es 200': (r) => r.status === 200,
'responde rápido': (r) => r.timings.duration < 500,
});
sleep(1); // pausa entre iteraciones, simula un usuario real
}
Las tres piezas clave
options.stagesdefine el perfil de carga: cuántos usuarios virtuales (VUs) y por cuánto tiempo. Cada VU ejecuta la funcióndefaulten bucle.checkvalida cada respuesta individual (¿status 200? ¿trae los datos?). Un check que falla no detiene la prueba, pero queda registrado.thresholdsson tus criterios de aceptación en código: si el p95 supera 500 ms o los errores pasan del 1%, k6 falla la prueba (exit code ≠ 0).
Ejecutar y leer
k6 run script.js
Al terminar, k6 imprime un resumen: iteraciones, VUs, y para cada métrica el promedio, mínimo, máximo y percentiles. Busca http_req_duration ... p(95)=... y compáralo con tu threshold. Si algún threshold no se cumple, aparece en rojo y el exit code es ≠ 0 — la señal para bloquear en CI.
Ya sabes ejecutar una prueba. La próxima lección es lo difícil y valioso: interpretar el resultado y encontrar el cuello de botella.
Comprueba lo aprendido en el quiz y escribe tu script en el reto.
Compruébalo
0/3Responde sin mirar atrás. Verás la explicación al instante.
1. En k6, ¿qué es un VU (Virtual User)?
2. ¿Para qué sirve un 'threshold' en k6?
3. ¿Qué diferencia hay entre un 'check' y un 'threshold' en k6?
Reto: tu primer script de carga
Escribe un script de k6 que suba de 0 a 50 usuarios en 30s, los mantenga 1 minuto y baje a 0; que haga GET a una API pública; con un check de status 200 y un threshold de p95 < 500 ms.