TL;DR
- k6 es una herramienta de load testing moderna y amigable — escribe tests en JavaScript
- Instala con brew/apt/docker, escribe scripts, corre desde CLI
- Define thresholds para criterios pass/fail: tiempo de respuesta, tasa de error
- Métricas integradas: http_req_duration, http_reqs, iterations, vus
- Integra con CI/CD, Grafana Cloud, InfluxDB para dashboards
Ideal para: Desarrolladores, DevOps, equipos que quieren tests de performance como código Omite si: Necesitas diseño GUI o protocolos exóticos (usa JMeter) Tiempo de lectura: 15 minutos
Tu equipo quiere tests de performance en CI/CD. Los archivos XML de JMeter son difíciles de revisar en PRs. Los tests necesitan correr headless en contenedores.
k6 resuelve esto. Los tests son código JavaScript — legibles, versionables, revisables. Corre desde CLI, integra con todo, reporta en tiempo real.
¿Qué es k6?
k6 es una herramienta de load testing open-source construida para workflows de desarrollo modernos. Tests en JavaScript, ejecución en Go (rápido), y resultados integran con herramientas de observabilidad.
Por qué k6:
- Tests en JavaScript — usa un lenguaje real, no XML
- Developer experience — excelente CLI, output claro
- Alto performance — una máquina maneja miles de VUs
- Nativo CI/CD — corre en contenedores
- Extensible — JavaScript APIs, extensiones, protocolos
Instalación
# macOS
brew install k6
# Ubuntu/Debian
sudo apt update && sudo apt install k6
# Docker
docker run --rm -i grafana/k6 run - <script.js
Tu Primer Test k6
Crea script.js:
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 10, // 10 usuarios virtuales
duration: '30s', // correr por 30 segundos
};
export default function () {
const res = http.get('https://test.k6.io');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 500ms': (r) => r.timings.duration < 500,
});
sleep(1);
}
Ejecutar:
k6 run script.js
Conceptos k6
Virtual Users (VUs)
VUs son ejecutores paralelos corriendo tu función de test.
export const options = {
vus: 100, // usuarios concurrentes
duration: '5m', // duración del test
};
Stages (Ramp-up/down)
Aumentar y disminuir carga gradualmente.
export const options = {
stages: [
{ duration: '2m', target: 100 }, // ramp a 100 usuarios
{ duration: '5m', target: 100 }, // mantener 100
{ duration: '2m', target: 200 }, // ramp a 200
{ duration: '2m', target: 0 }, // ramp down
],
};
Thresholds
Define criterios pass/fail.
export const options = {
thresholds: {
http_req_duration: ['p(95)<500'], // 95% requests < 500ms
http_req_failed: ['rate<0.01'], // tasa error < 1%
checks: ['rate>0.99'], // 99% checks pasan
},
};
Integración CI/CD
GitHub Actions
name: Load Test
on:
push:
branches: [main]
jobs:
k6-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run k6 test
uses: grafana/k6-action@v0.3.1
with:
filename: tests/load-test.js
k6 con Asistencia de IA
Las herramientas de IA pueden ayudar a escribir y optimizar tests k6.
Lo que la IA hace bien:
- Generar scripts de test desde specs de API
- Crear datos de test realistas
- Sugerir valores de thresholds
- Explicar métricas y resultados
Lo que aún necesita humanos:
- Entender arquitectura del sistema
- Establecer objetivos de carga realistas
- Interpretar resultados en contexto
FAQ
¿Qué es k6?
k6 es una herramienta de load testing moderna y open-source diseñada para desarrolladores. Escribes tests en JavaScript, los corres desde línea de comandos y obtienes métricas de performance detalladas. Construido por Grafana Labs, k6 se enfoca en developer experience, integración CI/CD y alto performance.
¿k6 es gratis?
Sí, k6 open-source (k6 OSS) es completamente gratis. Grafana Cloud k6 ofrece ejecución de tests hosteada, almacenamiento cloud y features adicionales con tiers gratis y pagos. Para la mayoría de casos, la versión open-source provee todo lo necesario.
¿k6 vs JMeter — cuál es mejor?
k6 es mejor para desarrolladores y workflows CI/CD — tests como código (JavaScript), ejecución rápida e integra bien con tooling moderno. JMeter es mejor para diseño de tests basado en GUI y soporta más protocolos out of the box. k6 es generalmente más fácil de aprender y mantener para equipos familiarizados con JavaScript.
¿Puede k6 testear interacciones de browser?
Sí, k6 tiene un módulo browser experimental que permite testing real con Chromium. Sin embargo, la fortaleza de k6 es testing a nivel protocolo (HTTP, WebSocket, gRPC) que es mucho más eficiente para load testing.
Recursos Oficiales
Ver También
- JMeter Tutorial - Load testing tradicional basado en GUI
- Gatling Tutorial - Testing de alta performance basado en Scala
- API Testing Guide - Fundamentos de API testing
