No results for

Powered byAlgolia

Ejecución de k6

sugerir editar

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":

script.js
1import http from 'k6/http';
2import { sleep } from 'k6';
3
4export default function () {
5 http.get('http://test.k6.io');
6 sleep(1);
7}

Luego ejecute el archivo K6 usando el siguiente comando:

CLI
Docker
Docker in Win PowerShell
$ k6 run script.js

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:

CLI
Docker
Docker in Win PowerShell
$ k6 run --vus 10 --duration 30s script.js

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:

export default function () {
// vu code: do things here...
}

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.

// init code
export default function () {
// vu code
}

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.

script.js
1import http from 'k6/http';
2import { sleep } from 'k6';
3export const options = {
4 vus: 10,
5 duration: '30s',
6};
7export default function () {
8 http.get('http://test.k6.io');
9 sleep(1);
10}

Luego solo ejecute el script con esos parámetros por línea de comando.

CLI
Docker
Docker in Win PowerShell
$ k6 run script.js

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.

stages.js
1import http from 'k6/http';
2import { check, sleep } from 'k6';
3
4export const options = {
5 stages: [
6 { duration: '30s', target: 20 },
7 { duration: '1m30s', target: 10 },
8 { duration: '20s', target: 0 },
9 ],
10};
11
12export default function () {
13 const res = http.get('https://httpbin.org/');
14 check(res, { 'status was 200': (r) => r.status == 200 });
15 sleep(1);
16}

Esto también se puede lograr con una configuración más avanzada utilizando escenarios y el ejecutor ramping-vus.

Ejecutando las pruebas en la nube

k6 soporta tres modelos de ejecución para ejecutar los tests:

  • Local: En tu máquina local o en un servidor de Integración continua (CI server)
  • Cloud: En la infraestructura de la nube administrada por K6 Cloud
  • Clustered: En más de una máquina administrada por usted. No está soportado aun.

Uno de los objetivos de K6 es permitir la ejecución de las pruebas en tres modelos de ejecución sin hacer modificaciones en el script . Para ejecutar las pruebas en la nube desde la interfaz de línea de comando (CLI), debe primero crear una cuenta en K6 Cloud e iniciar sesión con su cuenta usando CLI. Luego debe pasar su script al comando k6 cloud.

Running a cloud test
$ k6 cloud script.js

Para instrucciones más detalladas y otras opciones, puede encontrar más información en ejecución de pruebas en la nube desde CLI.