Autor: Dennis Armando Castrillon Sepulveda
Hoy en día al momento de realizar cualquier tipo de desarrollo de un producto de software se consideran factores fundamentales como son la escalabilidad y la estabilidad de éstos, por esta razón se han venido desarrollando e implementando diferentes herramientas que permiten realizar el monitoreo de factores no funcionales con el fin de ejecutar un plan de acción frente a las diferentes situaciones que se pueden presentar.
En este artículo se considerará una de las herramientas que viene emergiendo y que se está posicionando en los diferentes equipos ágiles en todo el mundo, Grafana K6, donde se conocerán sus principales beneficios y de igual forma se explicarán los diferentes retos que presenta la herramienta.
Adicionalmente se mencionará el valor que genera en el sector del retail donde permitirá la medición del rendimiento de los desarrollos en días o situaciones donde se requiera mucha demanda por parte de los usuarios.
¿Qué es Grafana K6?
Grafana K6 es una herramienta de código abierto orientada a pruebas de rendimiento, donde su diseño y ejecución de pruebas es a partir de scripts y líneas de comando. La creación de las pruebas se realiza con JavaScript siendo muy accesible y conocido por un gran número de usuarios.
Grafana K6 tiene amplia gama en cuanto a sus casos de uso: Pruebas de carga, pruebas de navegador, pruebas de caos y monitoreo de rendimiento, sin embargo en este artículo se enfocará en pruebas de carga.
Pruebas de carga
Como se mencionó anteriormente un producto de software o un sistema puede estar bajo constante carga, esto debido a que en algunos casos van a estar sometidos al uso de muchos usuarios realizando peticiones constantemente, lo que nos llevaría a considerar gran cantidad de riesgos y situaciones que se pueden presentar si no consideramos factores fundamentales como la capacidad de carga del sistema.
Días como el black friday o días sin IVA puede ser una gran carga para las aplicaciones que se han desarrollado en la compañía, por esta razón es fundamental evaluar si los usuarios esperados podrán disfrutar de estos eventos sin ningún problema, ya que al no tener esto en cuenta pueden haber caídas en el sistema y por consiguiente usuarios insatisfechos, provocando una disminución en las ventas o cambios a otros proveedores.
No solo el Ingeniero QA puede encargarse de realizar estas verificaciones, cualquier integrante del equipo puede establecer los requerimientos y necesidades que debe de tener el sistema y a partir de esto crear la estrategia para las pruebas de carga donde se asegure su estabilidad.
Tipos de pruebas de carga
Actualmente se tiene gran cantidad de tipos de pruebas de carga que se le pueden realizar a un sistema, acá se podrán conocer los principales:
-
- Pruebas de humo: Validan que el script funcione correctamente y que el sistema tenga una respuesta positiva y esté listo para pruebas.
- Pruebas de base: Se realiza una prueba de carga en las condiciones normales a las que se somete el sistema.
- Prueba de estrés: Se comprueba el comportamiento del sistema frente a situaciones que superen el promedio.
- Pruebas de pico: Se somete al sistema a un cambio abrupto de peticiones, evaluando su estabilidad y comportamiento posterior.
Beneficios pruebas de carga con K6:
Realizar pruebas de carga con K6 permite tener una perspectiva diferente de cómo abordar las diferentes estrategías de pruebas, cumpliendo con las necesidades y requerimientos y asegurando la calidad.
Integrar nuevas herramientas en los equipos puede ser un tema complejo, sin embargo, en compañías del sector retail puede ser un total acierto, debido a que en algunas situaciones se requiere de una alta eficiencia y velocidad para resolver inconvenientes del rendimiento de las aplicaciones, asegurando que en todo momento los clientes se encuentren a gusto con el tiempo de respuesta y la calidad de todos estos elementos, dentro de sus principales beneficios encontramos:
- Máxima el rendimiento y la eficiencia: K6 está diseñado en GO (Lenguaje de programación Golang) lo que permite hacer uso de los recursos de una manera mucho más óptima y eficiente, brindando la capacidad de aumentar los usuarios virtuales que se asignan en las pruebas.
De esta forma se pueden generar unas pruebas de carga mucho más robustas con la misma capacidad de recursos. - No tiene interfaz: Inicialmente se puede creer que K6 al no tener una interfaz será más complicado de usar, sin embargo al no usar una interfaz permite ser más flexible ya que el diseño de sus escenarios es con JavaScript; adicionalmente de disminuir el consumo de recursos que normalmente conlleva el tener una interfaz gráfica.
- Integración del equipo de trabajo: Uno de los factores primordiales en los equipos ágiles es considerar cómo realizar la integración de cada uno de los miembros en las diferentes facetas del proyecto. K6 al ser diseñado a partir de scripts, cualquier persona puede participar sin problema usando algún tipo de repositorio, además de permitir tener un control de versiones de estas pruebas de carga.
- Instalación y setup: Dependiendo del sistema operativo que se use la instalación de K6 puede variar, sin embargo, al no tener dependencias, simplemente siguiendo los pasos básicos de instalación se puede hacer uso de la herramienta casi de inmediato. Lo que deja la posibilidad de que cualquier integrante del equipo haga cambios o aportes al proyecto sin muchas complicaciones.
Scripts pruebas de carga K6
Con el fin de comprender a profundidad como es el diseño de las pruebas de carga en K6, se puede ver a continuación un script diseñado para una prueba de humo de una URL de prueba, donde se espera que los usuarios obtengan las ofertas del día del black friday, permitiendo a los desarrolladores conocer si esta funcionando o no correctamente estas peticiones:
Se puede observar, que inicialmente se establecen la cantidad de usuarios virtuales que se desean en la prueba (en este caso se colocaron 3 usuarios virtuales) y posteriormente se indica el tiempo de ejecución de la prueba (1 minuto), donde estos 3 usuarios virtuales van a estar realizando peticiones constantemente.
Finalmente se establece que tipo de petición se realizará y sobre qué URL, en este ejemplo se realiza un método GET sobre una URL para obtener las ofertas del black friday.
Para su ejecución simplemente desde la línea de comando ejecutamos:
A partir de la información anteriormente presentada, el diseño y ejecución de pruebas de carga con K6 puede realizarse de una forma muy sencilla y enfocado siempre a lo que estemos requiriendo, en este caso se asegura que el desarrollo realizado para un día especial como black friday está funcionando, permitiendo ser muy flexible y adicionalmente cualquier persona de nuestro equipo de trabajo puede realizar los cambios si se requieren sin ningún tipo de problema, ahorrando tiempo y aumentando gradualmente la eficiencia en este tipo de pruebas.
Pruebas de carga en infraestructura AWS
La mejor forma de comprobar los beneficios de K6 en cuanto al ahorro de recursos es haciendo uso de infraestructura en la nube; en este caso se utiliza AWS (Amazon Web Services).
En todos los sectores, incluido el retail, se tiene en cuenta el ahorro de costos para la selección de una herramienta o ejecución de pruebas, por esta razón a continuación se conocerán todos los beneficios y ahorros que puede traer hacer uso de un herramienta como K6.
Para esto se configura la instancia de EC2 con Amazon Linux y con 1 sola CPU virtual, posteriormente se cargan todos los archivos correspondientes de K6 y de la otra herramienta que se realizarán pruebas.
Ambas pruebas tienen las mismas condiciones de usuarios virtuales, intervalos de tiempo y endPoint de prueba.
Inicialmente se realiza la prueba con Grafana K6, se encontrará un uso de la CPU con un pico máximo de 15% de uso y con un promedio aproximado de 12% – 13%.
Ya realizando la prueba con la otra herramienta, se puede observar un pico máximo de 24% de uso de la CPU y un promedio aproximado del 20%.
Observando ambas métricas extraídas de las pruebas en EC2 de AWS, se puede inferir que K6 presenta un menor consumo de recursos, lo que conlleva a un ahorro considerable de recursos que posteriormente se traducirá en ahorro de dinero para la implementación de pruebas en algún tipo de infraestructura en la nube.
Conclusión
En resumen, K6 es una herramienta muy práctica y versátil, la cual la podemos enfocar para el trabajo en equipo y dirigida a las necesidades y requerimientos que se establezcan para las pruebas de carga.
Puede ser un gran punto a favor en el sector de retail, permitiendo asegurar la calidad y el rendimiento de todo tipo de desarrollos, adicionalmente de considerar diferentes situaciones que pueden pasar desapercibidas, como lo son considerar todas esas fechas y situaciones donde nuestros aplicativos se pueden ver comprometidos por la gran cantidad de usuarios que se esperan, y por otro lado ayuda a estar en constante verificación de las métricas.
Para algunas situaciones y planes de pruebas, K6 es una herramienta que brindará ahorro de costos y eficiencia en el uso de recursos. K6 permitirá tener una nueva opción a la hora de estar evaluando qué herramienta sería la más adecuada según los criterios impuestos en las estrategias de pruebas considerando todos los beneficios anteriormente mencionados.
Referencias
[1] K6 para Desarrolladores y Testers (https://www.devco.com.co/post/k6-para-desarrolladores-y-testers#:~:text=K6%20recopila%20una%20amplia%20variedad,infraestructura%20o%20en%20su%20c%C3%B3digo.)
[2] Load test types (https://grafana.com/docs/k6/latest/testing-guides/test-types/)
[3] Qué es Go y qué usos tiene (https://profile.es/blog/que-es-go-y-que-usos-tiene/)