Artillery (test de carga) update 2024

4 min de lectura Ver original en Hashnode
Compartir:

Artillery es una herramienta que permite realizar test de carga sobre APIs orientada al Cloud. Tiene una versión OpenSources y una versión PRO. Permite integraciones con GithubActions, Azure DevOps, Jenkins, entre otros, además incorpora algunas funciones especiales para AWS Lambdas y AWS Fargate.

En este Update 2024 es una actualización del post del 2023, vamos a revisar cómo configurar y ejecutar un test de carga sobre una API de prueba para la que usaremos https://webhook.site/ (un webhook online temporal).

Instalando Artillery.

Siguiendo las instrucciones de la página oficial de Artillery la instalación se realiza a través de npm (https://www.artillery.io/docs/get-started/get-artillery)

npm install -g artillery@latest

Verificar si Artillery está instalado, dependiendo si la instalación fue local o global ejecutamos $(npm bin)/artillery --version o artillery --version

artillery --version ___ __ _ ____ _____/ | _____/ /_(_) / /__ _______ __ ___ /____/ /| | / ___/ __/ / / / _ \/ ___/ / / /____//____/ ___ |/ / / /_/ / / / __/ / / /_/ /____/ /_/ |_/_/ \__/_/_/_/\___/_/ \__ / /____/VERSION INFO:Artillery: 2.0.20Node.js: v18.18.2OS: linux

Una vez instalado Artillery, escribiremos nuestro primer archivo de pruebas. Los archivos de pruebas en Artillery son archivos .yaml, donde se describen todos los elementos, desde el endpoint que vamos a probar hasta el manejo de las respuestas.

config: target: "https://webhook.site/xxx" phases: - duration: 10 arrivalRate: 10 payload: path: "message.csv" fields: - "id" - "contacts" cast: true order: random http: # HTTP requests from all virtual users will be sent over the same ten connections. pool: 10 timeout: 350scenarios: - name: "Send dropoff" flow: - post: url: "/" json: id: "{{ id }}" contacts: "{{ contacts }}"

Bien, qué tiene este archivo, para analizarlo lo dividiremos en dos partes:

Config:

Contiene las definiciones del target que deseamos probar, la cantidad de elementos que vamos a enviar, el tiempo de la prueba (en segundos), la cantidad de eventos por segundo y la fuente de los datos como elementos principales.

Scenarios:

La definición de la prueba, indicando el body, el tipo de solicitud (get, post, put, …) y el path donde vamos a realizar las llamadas http.

name: upload...over: upload

Ejecutar la pruebas

Iniciamos el test con el siguiente comando.

artillery run test.yml --record --key XXX

En este comando tenemos como parámetros:

run: para ejecutar la pruebas

test.yml: nombre del archivo que tiene la configuracin

record: Permite subir a la versin web (free) de la app.

key: Parmetro que pasa le key personal de la cuenta free

Al ejecutar la sentencia se mostrará el progreso a medida que los test se van ejecutando; por otro lado, en el sitio https://webhook.site/xxx podemos ver las solicitudes que enviamos como se muestra en la imagen a continuación:

Importante: Las urls de webhook.site son temporales, genere una url para sus pruebas porque esta se perderá al cerrar el sitio.

Obtener Reporte del test

Este comando tomará como entrada el test.json del paso anterior y construirá un informe

Resumen

¿Qué hicimos en esta introducción a Artillery?

Instalamos Artillery

Configuramos un test bsico a webhook.site (Nuestro target) con:

Un archivo CSV que contiene los valores para construir el json

Usamos los valores de ese CSV de forma aleatoria enviándolos al target

Ejecutamos las pruebas

Revisamos el reporte en la página de Artillery

Referencias:

Repositorio con el archivo de configuracin y archivo csv con los datos de prueba:

Repositorio

Sitio oficial Artillery

https://www.artillery.io/

API temporal donde recibir los test Webhook.site

https://webhook.site/

webhook Site es una empresa que crea sitios temporales y direcciones de correo. El sitio web puede recibir solicitudes, rest, post, Put… y las registra en la página. Se asigna un id a cada sección y se pueden tener hasta 500 solicitudes en su versión gratis.

Gracias por leer,

Saludos!

Oscar Cortes


Artículo original: Artillery (test de carga) update 2024