Artillery (test de carga) update 2024


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 GithubAtions, 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 como 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.20
Node.js: v18.18.2
OS: 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: 350
scenarios:
- name: "Send dropoff"
flow:
- post:
url: "/"
json:
id: "{{ id }}"
contacts: "{{ contacts }}"
Bien que 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 pruebastest.yml
: nombre del archivo que tiene la configuraciónrecord
: Permite subir a la versión web (free) de la app.key
: Parámetro 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
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 básico 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 le pagina de Artillery
Referencias:
Repositorio con el archivo de configuración y archivo
csv
con los datos de prueba:Sitio oficial Artillery
API temporal donde recibir los test 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 unid
a cada sección y se pueden tener hasta 500 solicitudes en su versión gratis.
- webhook Site es una empresa que crea sitios temporales y direcciones de correo. El sitio web puede recibir solicitudes,
-
Gracias por leer,
¡Saludos!
Oscar Cortes
Subscribe to my newsletter
Read articles from Oscar Cortes Bracho directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Oscar Cortes Bracho
Oscar Cortes Bracho
Cloud Software Engineer