Saltar al contenido

LongBOARD: visualización en tiempo real de los KPI de QA

Introducción

En cualquier ecommerce, es necesario asegurarse que los servicios transaccionales y de navegación funcionen como se espera bajo una alta carga de tráfico (esto se refiere a miles de transacciones y visitas simultáneas al sitio). Este es un aspecto importante a tener en cuenta especialmente durante periodos de ofertas y descuentos como Black Friday, Cyber Monday y Navidad.

La forma de garantizar que una tienda online funcione como se espera en estas circunstancias es probar el acceso simultáneo de visitantes en entornos QA (control de la calidad) o Preprod (preproducción) y allí medir los resultados. Para ello, se realizan pruebas de rendimiento.

Puntos débiles en las pruebas de QA

Una de las herramientas que nos permite simular la carga y realizar «load testing» en una tienda online es JMeter. La ejecución de las sesiones de prueba proporciona un registro con los resultados obtenidos en cada ronda de prueba. Este puede ser por ejemplo: el tiempo de respuesta, número de usuarios concurrentes, código de respuesta, URL a la que se ha realizado la solicitud, etc.

Entonces, ¿Cómo se puede analizar este registro de resultados de manera efectiva para obtener una conclusión sobre ellos? La salida de los resultados se presenta en texto sin formato y, por lo tanto, puede ser muy difícil de analizar, es por ello que hemos creado: LongBOARD.

Características de LongBOARD

¿Qué es exactamente LongBOARD?

LongBOARD es un conjunto de tableros impulsado y desarrollado por Orienteed. Que proporciona visualizaciones en tiempo real de los resultados obtenidos durante la ejecución de las pruebas de rendimiento y carga.

LongBOARD se encuentra en la nube. Esto quiere decir que tiene un gran margen para aumentar o disminuir la capacidad de cómputo según sea necesario, ya que el cliente no tiene que descargarse ningún tipo de software local ni invertir en infraestructura para poder realizar sus pruebas de rendimiento.

La plataforma detrás del tablero (Grafana + ElasticSearch + LogStash) está disponible y se puede implementar con un solo clic a través del AWS Marketplace.

LongBOARD consta de 2 partes principales:

  • Logstash: Es una ruta para recopilar, filtrar y enviar los resultados generados a partir de la ejecución de la prueba de rendimiento/carga.
  • 3 tableros in Grafana donde puedes visualizar, en tiempo real:
    • Un resumen de resultados.
    • Estadísticas de las solicitudes.
    • Un análisis de los errores.

En la imagen que aparece a continuación, podemos ver el tablero Request Statistics. En él, podemos visualizar una gran cantidad de datos estadísticos sobre las peticiones que llegan al servidor. Muestra datos como las solicitudes más comunes, los códigos de respuesta y el porcentaje que representan sobre el total, el promedio de tiempo en milisegundos, entre otros.

longBoard logo
Request Statistics Dashboard
Request Statistics Dashboard

Como se mencionó anteriormente, también hay dos paneles adicionales que visualizan las estadísticas de las solicitudes y el análisis de los errores encontrados.

Estos tableros se componen de gráficos dinámicos. Esto significa que mediante el uso de filtros dinámicos, puedes seleccionar las transacciones que deseas ver. Por ejemplo, puedes filtrar para ver sólo las solicitudes de inicio de sesión, las solicitudes con un código de respuesta 503, así como para filtrar los resultados por el mensaje de error, etc.

Usando LongBOARD

En esta sección, entraremos en algunos detalles técnicos sobre los pasos específicos para configurar LongBOARD y cómo comenzar a usarlo. Entonces, si estás interesado en comprender cómo se configura LongBOARD, asegúrate de leer a continuación.

¿Cómo configurar la herramienta?

En primer lugar, se deben cumplir estos requisitos:

  • JMeter: Esta será la aplicación a través de la cual, se ejecutarán las pruebas y donde se generarán y recopilarán los resultados para el uso de LongBoard.
  • OpenSearch: Esta herramienta debe estar disponible para poder almacenar los resultados y hacerlos persistentes. En Grafana, los datos se leerán desde OpenSearch.

¿Qué elementos necesitamos?

Para realizar las pruebas de manera exitosa, es importante proporcionar a nuestro sistema un conjunto de documentos necesarios. Entre estos documentos, podemos encontrar los siguientes:

  • CSV de entrada (datapools): Los archivos CSV de entrada, también conocidos como datapools, son archivos de datos que se utilizan en JMeter para proporcionar valores de entrada a las pruebas. Estos archivos contienen conjuntos de datos estructurados, como nombres de usuario, contraseñas o cualquier otra información relevante para las pruebas.
  • Scripts de JMeter: Los scripts de JMeter son archivos que contienen las configuraciones y acciones necesarias para realizar pruebas. Estos scripts se crean en JMeter y se utilizan para definir el comportamiento de los usuarios virtuales, como las solicitudes HTTP que realizan, las secuencias de navegación y cualquier otra interacción con la aplicación que se esté probando.

Entendiendo la estructura del script de JMeter

En LongBOARD, las pruebas se ejecutan automáticamente, pero es importante comprender los parámetros que se pueden configurar. Entre los valores que debemos considerar, podemos encontrar los siguientes:

  • Número de threads: El número de threads, también conocido como hilos o usuarios virtuales, es la cantidad de usuarios simultáneos que se simularán durante la prueba. Cada thread representa un usuario virtual que ejecuta el script definido. Un número mayor de hilos implica una mayor carga en el sistema.
  • Ramp time: El ramp time o tiempo de rampa es el período en el cual se agregan gradualmente los threads al escenario de prueba. Define el tiempo que tarda en alcanzarse la carga máxima de hilos.
  • Duration: La duración es el tiempo total durante el cual se ejecutará la prueba. Define el periodo de tiempo en el que los threads realizarán las solicitudes definidas en el script.
  • Variables de inicialización: Las variables de inicialización en JMeter son variables que se definen antes del inicio de la prueba y se utilizan para almacenar valores que se compartirán entre diferentes hilos o secciones del script. Estas variables se pueden utilizar para pasar datos dinámicos, como identificadores de sesión o valores generados durante la prueba, entre las solicitudes.

Pasos para la configuración:

1. Crea la instancia EC2 desde la AMI.

Una vez creada la instancia tendremos:

  • Logstash: Una herramienta para consumir, filtrar y enviar datos a OpenSearch.
  • Archivo de configuración de logstash
  • Index Template: Esta plantilla le dirá a OpenSearch el tipo de datos que se deben ingresar y qué índices debe crear en la base de datos.
  • Imagen acoplable de Grafana lista para usar.
  • Archivo ejecutable: Este archivo ejecutará automáticamente Logstash con los parámetros de configuración necesarios.

2. Abrir Grafana en el navegador: http://public_instance_ip:3000

  • User: admin
  • Password: <id_instancia_AWS>

3. Configurar la fuente de datos, vía Configuration > Data sources > OpenSearch. Configurar los siguientes campos:

  • URL: OpenSearch_domain_endpoint:443
  • User: openSearch_user
  • Password: openSearch_password
  • Index name: (el nombre del índice que pones en la línea 30 del archivo de configuración se mencionará más adelante (logstash_csv.fonf)
    Por ejemplo: stress-myWeb-logstash
    .

4. Hacer click en «Save & test». A continuación se muestran algunos de los posibles errores que puedes encontrar:

  • No index exists: esto se debe a que aún no se ha ejecutado logstash y no se ha creado el índice.OpenSearch error: no such index
  • The date field called timeStamp does not exist: esto se debe a que el índice no tiene una plantilla asociada o está vacío.
    No date field named timeStamp found

NOTA: Al crear la fuente de datos y no tener el índice creado en Opensearch, estos errores son normales. Está bien si aparecen, tan pronto como insertes datos, se corregirán automáticamente.

Si todo está bien y no hay errores, aparecerá el siguiente mensaje:Index OK

5. Una vez realizados todos los pasos anteriores, podemos irnos al tablero “Scripts” y comenzar con las pruebas.

Nuevo tablero “Scripts”

En esta nueva versión contamos con una nueva dashboard llamada “Scripts”. Desde ella, podemos realizar todo lo necesario para que las pruebas se ejecuten de forma automática y se realice la carga de archivos. Dentro ”Scripts”, contamos con los siguientes componentes: 

  • Panel Data-pools: Un panel que consiste en un Drag & Drop en el que podemos subir los archivos csv que deseemos. A su lado, contamos un listado que nos proporciona el nombre de los archivos cargados y su peso en bytes. Gracias a este componente podremos evitar errores al subir elementos duplicados o archivos no válidos.
  • Panel Script JMX: Este componente es realmente útil para realizar las pruebas, ya que no solo se limita a la carga del script, sino que permite modificar parámetros como su duración, nº de usuarios o su ramp time. Además, contamos con una pestaña adicional que permite visualizar las variables de inicialización y modificarlas siempre que lo necesitemos.
  • Panel de control: Consta de dos sencillos botones que permiten comenzar y/o detener la ejecución de nuestras pruebas en JMeter. Encima del botón Start contamos con información sobre el servidor en el que se ejecutarán y cargarán las pruebas, además de la ruta que tienen que tener configurados los data-pools dentro del script para evitar errores durante la ejecución.
  • Panel de status: Este componente es una tabla que nos permite recibir mensajes sobre el estado de la ejecución y carga de los datos. Nos proporciona información sobre la duración de las pruebas, los errores o cuando podremos comenzar a visualizar los resultados en el resto de nuestras dashboards en Grafana.

Guía de uso básico

Para el correcto funcionamiento del sistema, debemos realizar una serie de pasos, muy sencillos, que mostraremos a continuación.

1. Para cargar los archivos csv, basta con seleccionar uno o varios de ellos a la vez, soltarlos en la zona marcada de color azul y este comprobará que no se encuentre ya entre los archivos cargados y sea válido. Desde el listado de la parte derecha de la imagen, podemos asegurarnos que no falte o sobre ninguno entre los archivos a enviar. De ser así, podemos seleccionar un archivo en la tabla y eliminarlo mediante el botón de borrado. Cuando todo esté listo, pulsamos en “Enviar” y el servidor se encargará del resto.

Panel Data-pools plugin.
Panel Data-pools plugin.

2. Si deseamos llevar a cabo la carga y modificación de scripts JMX, podemos soltarlos en la zona señalada del panel, al igual que en el anterior plugin. Una vez se encuentre cargado nuestro archivo JMX deseado, nos mostrará los parámetros actuales con los que cuenta el script de pruebas y podemos modificarlos en los inputs de la derecha siempre que lo deseemos. Es importante destacar que los csv definidos en el script deben tener siguiente ruta establecida:

/home/ec2-user/jmeter/apache-jmeter-5.4.3/bin/DataPools/

Además, contamos con una pestaña de variables en la parte superior izquierda que nos muestra todas las variables de inicialización que se encuentran definidas en el script, permitiendo reescribir sus valores o nombres identificativos.

Cuando tengamos todo listo, pulsamos el botón “Actualizar” para aplicar los nuevos cambios y seguir con la ejecución.

Script JMX Panel  structure
Script JMX Panel structure

3. Cuando ya tenemos todos los archivos necesarios preparados, solo quedaría ejecutar las pruebas. Para ello contamos con una interfaz muy sencilla con dos botones. Con ellos podremos empezar la ejecución o detenerla.

También contamos con datos relevantes sobre la url en la que encontramos al servidor o la carpeta en la que se van a almacenar los data-pools.

Control Panel structure
Control Panel structure

4. En esta nueva versión, hemos incluido una tabla de estado que proporciona información en tiempo real sobre el progreso de las acciones. La tabla consta de dos columnas principales, la primera muestra el estado, puede tener dos valores: «Success» (éxito) que indica que la acción se ha realizado satisfactoriamente, y «Error» que indica que ha ocurrido algún problema y la acción no se ha completado correctamente.

En la segunda columna, se muestra un mensaje informativo que proporciona detalles relevantes sobre el proceso en curso. El mensaje incluye información sobre la duración estimada de las pruebas, confirmando si el proceso de ejecución se ha llevado a cabo correctamente y brinda información sobre cuándo se podrán visualizar y cargar por completo los resultados obtenidos. Este mensaje proporciona una visión general de los tiempos y eventos clave mientras duren los procesos de ejecución y carga.

Cuando el sistema nos avise de que las pruebas comenzarán su carga, contamos con 2 accesos directos que nos permitirán cambiar de dashboard rápidamente en una nueva pestaña. Gracias a ella podemos  ver los avances en tiempo real.

Shortcuts to Error Review and Request Statistics
Shortcuts to Error Review and Request Statistics

¿Cómo usarlo?

Una vez que todo está configurado, solo necesitas realizar 3 pasos para comenzar a usar LongBOARD.

  1. Cargar los archivos en los “Drag & Drop” correspondientes y modificar todos aquellos parámetros que deseamos para nuestros test.
  2. Pulsar el botón “Start Test”.
  3. Podemos desplazarnos al resto de tableros una vez hayan finalizado la ejecución de las pruebas y ver los datos que se cargan en tiempo real. Para ello, disponemos de accesos directos en la parte superior derecha de nuestra pantalla, los cuales permiten navegar entre tableros de una forma rápida y sencilla.

Conclusión

Es un hecho bien conocido que el control de la calidad (QA) ayuda a las tiendas online a crear y brindar servicios en línea que satisfagan las necesidades, expectativas y requisitos de los clientes. Las prácticas de QA ayudan a las empresas en línea a vender mejor y crear mejores experiencias de compra en línea. También crean confianza y lealtad en los clientes durante campañas importantes como el Black Friday.

Por lo tanto, es vital no solo optimizar tu ecommerce para un evento de ventas tan importante, sino también poder analizar de manera efectiva los datos de las pruebas de estrés y rendimiento. La información procesable que proporciona LongBOARD con sus visualizaciones de tablero permite que los líderes empresariales y tecnológicos comprendan los cuellos de botella y realicen las mejoras necesarias para su negocio.

¿Quieres saber más sobre LongBOARD? ¡Contáctanos hoy aquí!