Análisis de herramientas

Pruebas de carga con Artillery: análisis de la herramienta

7 min de lectura

Artillery es una herramienta de pruebas de carga open source que corre sobre Node.js y describe cada prueba en un archivo YAML, TypeScript o JavaScript. Las pruebas de carga con Artillery encajan con equipos que viven en el ecosistema JavaScript, que quieren que lleguen usuarios nuevos a un ritmo fijo o que quieren pruebas de navegador con Playwright en la misma herramienta. A los equipos que quieren un único binario sin runtime les va mejor k6, y a los que necesitan muchos protocolos de serie, JMeter.

No hemos ejecutado Artillery para este análisis. Los datos salen de la documentación, el repositorio, el paquete de npm y la página de precios de Artillery, comprobados el 19 de octubre de 2026, y las valoraciones son nuestras.

TemaArtillery
LicenciaMPL-2.0; algunos módulos de Azure bajo BSL
RuntimeNode.js, última LTS (el paquete pide 22.18.0 o posterior)
Versión actual2.0.34 (14 de agosto de 2026)
Pruebas escritas enYAML, TypeScript o JavaScript
Modelo de cargaUsuarios virtuales nuevos por segundo, por fases
Motores integradosHTTP, WebSocket, Socket.IO, Playwright
Comprobaciones de aprobaciónPlugin ensure, código de salida distinto de cero
Escaladorun-lambda, run-fargate, run-aci
Informes alojadosArtillery Cloud, opcional, con nivel gratuito

¿Quién desarrolla Artillery y con qué licencia?

Lo mantiene Artillery Software Inc. en GitHub. Casi todo el código está bajo MPL-2.0, que permite el uso comercial; algunos módulos específicos de Azure están bajo la Business Source License.

El README del repositorio permite usar Artillery en Azure para evaluación y pruebas de concepto, y exige una licencia comercial para el uso comercial o en producción allí. La última versión es la 2.0.34, publicada en npm el 14 de agosto de 2026, y sus metadatos piden Node.js 22.18.0 o posterior; la guía de instalación recomienda la versión LTS más reciente (comprobado el 19 de octubre de 2026).

¿Cómo funciona un script de prueba de Artillery?

Un script tiene dos partes: config, que fija el destino, las fases de carga y los plugins, y scenarios, que enumera lo que hace cada usuario virtual. Puedes escribirlo en YAML o exportar config y scenarios desde un archivo TypeScript o JavaScript.

Esta prueba sube de 5 a 50 usuarios nuevos por segundo en dos minutos, mantiene 50 por segundo durante diez minutos y falla si el percentil 99 del tiempo de respuesta llega a 800 ms:

config:
  target: https://staging.example.com
  phases:
    - duration: 120
      arrivalRate: 5
      rampTo: 50
      name: ramp
    - duration: 600
      arrivalRate: 50
      name: sustain
  plugins:
    ensure:
      thresholds:
        - http.response_time.p99: 800
scenarios:
  - name: browse and add to cart
    flow:
      - get:
          url: /products
      - think: 2
      - post:
          url: /cart
          json:
            sku: A-100

Según la referencia de scripts de prueba, los cuatro tipos de fase son una tasa de llegada constante, una rampa lineal con rampTo, un arrivalCount fijo repartido en un periodo y una pause. El código propio cargado con config.processor puede ser un módulo TypeScript en local y en Fargate, pero no en Lambda (comprobado el 19 de octubre de 2026).

¿Qué modelo de carga usa Artillery?

Artillery lanza usuarios virtuales nuevos al ritmo que fijes, hayan terminado o no los anteriores. Es un modelo de carga abierto, que mantiene las llegadas aunque el sistema se vuelva lento.

Cada usuario nuevo elige un escenario, lo ejecuta y se va, así que un sistema lento acumula usuarios como lo haría el tráfico real. maxVusers limita el número de usuarios simultáneos de una fase si necesitas proteger el generador de carga. Nuestro artículo sobre el modelo de carga abierto vs cerrado explica la diferencia, y la ley de Little muestra cómo la tasa de llegada y el tiempo de respuesta fijan el número de usuarios simultáneos.

¿Qué protocolos y navegadores puede probar?

HTTP es el motor por defecto, y WebSocket, Socket.IO y Playwright vienen integrados. gRPC y AWS Kinesis necesitan motores que se instalan aparte.

La página de motores describe el modelo: cada escenario corre en un motor, y puedes escribir el tuyo. En npm, artillery-engine-grpc va por la 0.0.9 y artillery-engine-kinesis por la 1.1.1, ambos bajo MPL-2.0. El motor de Playwright ejecuta tu código de Playwright en navegadores headless reales y publica Web Vitals como TTFB, FCP y LCP por página. La documentación avisa de que un navegador separado por usuario, en lugar de un contexto de navegador, necesita mucha más CPU y memoria (comprobado el 19 de octubre de 2026). Nuestro repaso de herramientas de pruebas de carga WebSocket sitúa a Artillery junto a otras opciones para aplicaciones en tiempo real.

¿Cómo encaja en la CI?

El plugin ensure convierte métricas en comprobaciones de aprobación, y una comprobación fallida hace que Artillery termine con un código distinto de cero. Eso basta para que cualquier sistema de CI haga fallar el build.

La referencia de ensure ofrece dos tipos de comprobación: thresholds, donde una métrica debe quedar por debajo de un valor, y conditions, que combinan métricas en una expresión como http.response_time.p95 < 250 and http.request_rate > 1000. Una condición marcada con strict: false avisa sin hacer fallar. El plugin apdex añade una puntuación Apdex a las pruebas HTTP, con un umbral por defecto de 500 ms (comprobado el 19 de octubre de 2026); nuestro artículo sobre la puntuación Apdex explica cómo leerla. Para un archivo de workflow, consulta nuestra guía de pruebas de carga en GitHub Actions.

¿Cómo se escala una prueba de Artillery?

Desde la línea de comandos, en tu propia cuenta de nube: run-lambda y run-fargate en AWS, run-aci en Azure Container Instances. Artillery crea los recursos que necesita la ejecución y borra después los temporales.

La guía de Fargate enumera los recursos y los permisos de IAM implicados. La guía de Lambda indica sus límites: una prueba no puede durar más de 15 minutos, una prueba en marcha no se puede detener y los hooks before y after se ejecutan una vez por worker. La guía de Azure exige Artillery 2.0.19 o posterior y, fuera de la evaluación, una suscripción (comprobado el 19 de octubre de 2026).

LoadFocus, que publica este sitio, no ejecuta scripts de Artillery. Ejecuta planes de prueba JMeter y scripts de k6 desde 25 regiones en la nube, así que para Artillery los comandos anteriores son la forma de escalar.

¿Cuánto cuesta Artillery Cloud?

El panel es opcional: los resultados solo llegan allí si ejecutas con --record y una clave de API. Los planes van de un nivel gratuito a 499 $ al mes.

La página de precios indica (comprobado el 19 de octubre de 2026):

  • Free: 30 informes al mes, 1 mes de conservación, 2 miembros, pruebas distribuidas de hasta 5 workers y 30 minutos.
  • Team, 199 $ al mes: 1.000 informes, 6 meses, 8 miembros, hasta 25 workers y 2 horas.
  • Business, 499 $ al mes: 2.500 informes, 18 meses, sin límite de miembros, workers ni duración.

El SSO empresarial, los registros de auditoría y los SLA de soporte empiezan en 1.199 $ al mes, y la facturación anual ahorra un 20 %.

¿Qué hace bien Artillery y dónde están sus límites?

Destaca en carga por tasa de llegada, scripts cortos y legibles y pruebas de navegador con Playwright. Flojea cuando necesitas un único binario, muchos protocolos sin complementos o usar Azure sin licencia.

Como herramienta de Node.js puede usar cualquier módulo de npm en funciones propias, a cambio de un runtime más en cada máquina de pruebas. Límites que la propia documentación reconoce:

  • Las ejecuciones en Lambda se cortan a los 15 minutos y no se pueden cancelar.
  • El código propio en TypeScript (config.processor) no corre en Lambda.
  • gRPC y Kinesis son motores aparte.
  • El uso en producción en Azure exige una licencia comercial.

¿Cuándo elegir k6, JMeter o Locust en lugar de Artillery?

Elige otra herramienta cuando su runtime, sus protocolos o su lenguaje encajen mejor con tu equipo.

Elige k6 si quieres un binario de Go sin Node.js que mantener y umbrales en el script. Nuestra comparativa k6 vs Artillery pone las dos frente a frente. LoadFocus ejecuta scripts de k6 desde 25 regiones en la nube, aunque ejecuta los escenarios arrival-rate con un número fijo de usuarios; para mantener una tasa de llegada, ejecútalos con el propio k6.

Elige JMeter si necesitas JDBC, JMS, LDAP o FTP de serie, o si tus testers montan las pruebas en una interfaz gráfica.

Elige Locust si tu equipo escribe Python; nuestro análisis de Locust lo cubre. El repaso de herramientas de pruebas de carga open source las pone todas lado a lado.

FAQ

¿Artillery es gratis para uso comercial? La CLI está casi toda bajo MPL-2.0, que permite el uso comercial. La excepción es Azure: el uso comercial o en producción de sus módulos de Azure exige una licencia comercial.

¿Puede Artillery ejecutar pruebas de navegador? Sí. Su motor de Playwright integrado ejecuta tu código de Playwright en navegadores headless y publica Web Vitals de cada página.

¿Puede LoadFocus ejecutar scripts de Artillery? No. LoadFocus ejecuta planes de prueba JMeter y scripts de k6. Para escalar una prueba de Artillery, usa run-lambda, run-fargate o run-aci.

Lecturas relacionadas


Las afirmaciones técnicas de este artículo no se han revisado de forma independiente.

LoadFocus team
Escrito por el equipo de LoadFocus, las personas detrás de un servicio de pruebas de carga en la nube.