Ejecutando los tests localmente
Primeramente vamos a comenzar corriendo el script de manera local. Copie el siguiente código, pégalo en tu editor favorito y luego guarda el script como: "script.js":
Luego ejecute el archivo K6 usando el siguiente comando:
Agregando más usuarios virtuales (VUs)
Ahora vamos a ejecutar una prueba de carga con más de un usuario y una duración mayor:
Ejecutando una prueba de carga de 10 usuarios en 30 segundos
k6 funciona usando el concepto de usuarios virtuales (VUs), los cuales ejecutan los scripts en paralelo mientras que sea verdadero while(true). Los scripts son desarrollados usando JavaScript, como módulos ES6, lo cual permite separar pruebas grandes en pequeñas porciones de prueba, o reutilizar estas porciones de prueba.
Los scripts deben contener al menos una función predeterminada, que defina los puntos de entrada para los VUs, similar a la función main() de otros lenguajes:
El contexto de inicio y la función predeterminada
Nos podemos preguntar, ¿Por qué no ejecutar mi script normalmente, desde el inicio hasta el final? La respuesta es: Sí, se puede hacer, pero el código dentro y fuera de la función predeterminada puede hacer cosas diferentes. El código predeterminado de adentro es llamado “VU Code”, y se ejecuta una y otra vez mientras el test está ejecutándose. El código de afuera es comúnmente llamado “init Code” y se ejecuta una vez por VU.
El “VU Code” puede hacer peticiones HTTP, proveer métricas, y generalmente hace todo lo que se espera en una prueba de carga, no puede cargar nada desde su sistema de archivos local ni importar ningún otro módulo. Todo esto debe hacerse desde el “init Code”. Lea más acerca de diferentes etapas del ciclo de vida de una prueba k6
Usando las opciones
Si quiere evitar escribir --vus 10 y --duration 30s todo el tiempo, también puede incluir estas configuraciones dentro de su archivo JavaScript.
Luego solo ejecute el script con esos parámetros por línea de comando.
Escenarios: Periodo de subida/bajada de los VUs
Además puede tener el nivel de periodo de subida (ramp up) y de bajada (ramp down) de los VU durante la prueba. La propiedad options.stages te permite configurar el comportamiento de los periodos de subida y bajada.
Esto también se puede lograr con una configuración más avanzada utilizando escenarios y el ejecutor ramping-vus.
Modos de ejecución
k6 soporta tres modelos de ejecución para ejecutar los tests: local, cluster, and cloud.
El objetivo de k6 es permitir cambiar el modo de ejecución con mínimos cambios. El objetivo es soportar ejecutar el test en los differentes modos de ejecución sin modificar el script de k6. Ésto te permitirá reutilizar los tests independientemente del entorno de tu equipo de trabajo.
Local: la ejecución del test es local en una máquina, container or servidor de CI.
Distribuido: la ejecución del test es distribuida en un cluster de Kubernetes.
Runningk6-resource.ymlCloud: la ejecución del test es en k6 Cloud.
Adicionalmente, k6 Cloud puede ejecutar cloud tests en tu propia infraestructura cloud, y acepta los resultados de un test local o distribuido en k8s.