Siendo una realidad que confirma la importancia de evaluar la capacidad de adaptación y respuesta a situaciones adversas para que las aplicaciones sean sostenibles en el tiempo y, además, puedan generar experiencias satisfactorias para el usuario final.
¿Qué es k6 y cuáles son sus características?
Bajo el contexto anterior, es necesario conocer herramientas como k6 (Open Source) que nos permite realizar principalmente pruebas de carga de forma sencilla, así como también Performance Monitoring, para usarlas continuamente en ambientes productivos y obtener métricas en tiempo real.
Estas son algunas características destacables:
Herramienta CLI: puede ser ejecutada por medio de consola de comandos.
Amigable para todo el equipo: desarrolladores, especialistas en QA, DevOps, etc.
Orientado a Scripting en JavaScript.
Flexible en uso de librerías, soporte a módulos locales y remotos.
Permite utilizar el mínimo de recursos en el sistema.
Permite configurar criterios de aceptación basados en tiempos de respuesta y envío de datos por medio de Checks y Thresholds.
Permite configuración para CI/CD (Azure Pipelines, GitHub Actions, Gitlab, Jenkins, entre otros).
¿Casos de uso de k6?
A continuación, enumerare las diferentes pruebas de carga que pueden realizarse con esta herramienta:
Smoke Testing: Permite comprobar que la aplicación puede manejar una carga mínima sin interrupciones en su operación básica.
Load Test: Permite comprobar el rendimiento de la aplicación bajo una carga normal, es decir, mantenerse dentro de un rango de tráfico considerado como habitual, medio o concurrente.
Stress Test: Permite comprobar la disponibilidad y estabilidad de la aplicación bajo un tráfico cargado, es decir por encima de la media, bajo condiciones extremas, pero de manera gradual, como suele ocurrir en días festivos como Black Friday, Navidad o CyberDay.
Spike Test: Permite comprobar la disponibilidad y estabilidad de la aplicación bajo un tráfico similar al Stress Test, con la diferencia de que no se aumenta la carga de forma gradual, sino que, de manera repentina en un período de tiempo rápido, como suele ocurrir en días de ofertas fast.
Soak Test: Permite comprobar la disponibilidad y estabilidad de la aplicación sometida a carga exhaustiva por un período prolongado de tiempo, además de validar que, en consecuencia, no haya pérdidas derivadas.
Un aspecto imprescindible para tener en cuenta antes de iniciar pruebas de rendimiento es investigar con usuarios que conozcan la funcionalidad, para así considerar referencias de su uso en un entorno real, y luego establecer objetivos y tipos de prueba a realizar para lograr los resultados esperados.
Disponibilidad para instalación
Con respecto a su instalación, esta herramienta cuenta con paquetes para Linux, Mac, Windows y alternativamente, contenedor Docker, encontrándose entre los más básicos:
- Windows
En caso de utilizar el gestor de paquetes Chocolatey, sepuede realizar la instalación del paquete no oficial:
Para detalles más específicos de cada sistema operativo, puedes acceder al sitio web oficial de k6 haciendo clic acá.
Funcionamiento general
Con respecto a su funcionamiento, k6 trabaja con usuarios virtuales (Vus) y scripts que como mínimo deben tener una función predeterminada, jugando un papel fundamental dos elementos: el código VU, el cual es el código interno que se correrá una y otra vez mientras se ejecuta la prueba, y el código de inicio,que se ejecutará sólo una vez por VU (ver imagen de ejemplo).
Entre algunas de sus librerías más comunes para iniciar a interactuar con k6 se encuentran las siguientes:
- import http from 'k6/http'
Módulo de peticiones http, permite poder consumir endpoints en sus diferentes métodos (POST, GET, PUT).
- import { check, sleep, group } from 'k6';
Sleep: Permite realizar pausas o lapsos de tiempo entre cada ejecución.
Group: Permite utilizar grupos de peticiones.
Check: Permite hacer afirmaciones sin detener la ejecución.
- import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js";
Permite escribir un archivo HTML que contiene una versión formateada y fácil de consumir de los datos de resumen de la prueba.
- import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js";
Permite personalizar completamente el resumen de fin de prueba.
En la segunda parte de este artículo podrás interiorizarte con el paso a paso de esta herramienta, que incluirá una guía para ejecutar las pruebas de carga. ¡No te lo pierdas!