/k6-jmeter-gatling-poc

Prueba de concepto para validar el funcionamiento de k6, jmeter y gatling

Primary LanguageJavaScript

k6 vs JMeter vs Gatling

PoC para comparar el trabajo que realiza k6, JMeter y Gatling en una prueba al API de Star Wars.

Bonus: Se realiza la prueba con Postman para verificar y comparar su funcionamiento.

Características

Característica k6 JMeter Gatling Postman
Permite ejecutar pruebas de carga
  • Si
  • Si
  • Si
  • Si
Ofrece versionado de código 1
  • No
  • No
  • No
  • Si
Tiene entorno de desarrollo
  • No
  • Si
  • No
  • Si
Lenguaje de programación JavaScript
  • No, se programa el script en el IDE usando elementos gráficos. 2
Scala JavaScript
  • 1 Se puede hacer de forma independiente usando Git y versionando los archivos. Solo Postman ofrece en su mismo IDE un versionado de código para trabajar en equipo.
  • 2 El script resultante es un archivo XML con extensión .jmx.

Tabla comparativa

Tecnología Ventajas Desventajas
k6 - Utiliza JavaScript lo que lo hace muy liviano.
- Es fácil de aprender.
- Ofrece muy buenas estadísticas de tiempos y rendimiento.
JMeter - Provee todas las herramientas para hacer pruebas de carga con muchas funcionalidades.
- Tiene su propio IDE.
- Es posible ejecutar los scripts desde el IDE o desde CLI.
- Tiene separada la parte de los requests y las pruebas.
- Es necesario saber utilizar el IDE, se crea una dependencia con la herramienta.
- Es posible manipular el XML resultante pero es bastante complejo, hay que tener mucho conocimiento.
- Solo ofrece el cliente de escritorio.
Gatling - Utiliza Scala.
- Es fácilmente integrable con herramientas de construcción como Gradle o Maven.
- Utiliza la JVM, lo cuál permite que corra en cualquier ambiente que acepte Java.
- Ofrece muy buenas estadísticas de tiempos y rendimiento.
- La configuración del proyecto puede ser un tanto verbose (En comparación con k6).
Postman - Es una herramienta muy utilizada.
- Tiene su propio IDE.
- Utiliza JavaScript para escribir los tests.
- Ofrece la posibilidad de trabajar en equipos, versionar cambios, colaboración, etc.
- Fácil de utilizar.
- Ofrece un cliente de escritorio y un cliente web.
- Tiene separada la parte de los requests y las pruebas.
- La versión gratuita solo permite hasta 3 miembros en el equipo.
- Aunque está orientado a usar JavaScript para los tests, también hay que tener conocimiento en usar la herramienta, se crea una dependencia.

Nota:

  • Todas las tecnologías son gratis. Solo Gatling y Postman ofrecen un plan premium o por suscripción (Son adicionales) para trabajos enterprise/más pesados.
  • Todos los scripts resultantes son integrables con Jenkins y otras herramientas de CI/CD.

k6

k6 es un SaaS que permite realizar pruebas de carga. Es muy liviano y fácil de utilizar.

Este ejercicio está hecho usando JavaScript.

Uso

Ejecutar:

cd k6
k6 run star-wars.js

Para el ejemplo con Mercado Libre:

cd k6
k6 run partners-middleend-widget.js

JMeter

JMeter es una herramienta que permite realizar pruebas de carga. Tiene un cliente que se ejecuta localmente y una interfaz gráfica donde es posible agregar pruebas HTTP y sus validaciones.

Uso

  1. Descargar JMeter.
  2. Correr el script Star Wars test plan.jmx.
  3. Correr el script Loyalty partners-middleend widget.jmx.

Componentes de JMeter

  • HTTP Request: Obtiene la información de un planeta.
  • Response Assertion: Valida textualmente que un atributo y su valor estén en la respuesta.
  • JSON Assertion: Valida por estructura que un atributo esté en la respuesta y (Opcional) tenga un valor.
  • View results tree: Resultados de las peticiones HTTP y sus validaciones.
  • Assertion Results: Resultados de las validaciones. Si no hay errores muestra un reporte vacío.

Gatling

Tomado de gatling-gradle-plugin-demo. Gatling es una solución open-source para hacer pruebas de carga.

Este ejercicio está hecho usando Scala junto con el API de Gatling. Los recursos más utilizados son:

Uso

  • Correr todas las simulaciones de Gatling:
cd gatling
./gradlew gatlingRun
  • Correr una simulación sencilla por su FQN (fully qualified class name):
cd gatling
./gradlew gatlingRun-main.StarWarsSimulation
./gradlew gatlingRun-main.WidgetSimulation

Postman (Bonus)

Postman es una herramienta que permite realizar pruebas a APIs Rest. Las pruebas pueden ser sencillas (Un simple requests HTTP) o de carga (Programar todos los request de una colección para que corran juntos).

Para cada request HTTP se tiene la posibilidad de escribir pruebas en JavaScript.

La validación de schema que ofrece es bastante completa y fácil de utilizar.

Uso

  1. Descargar Postman.

  2. Crear un Workspace.

  3. Importar la colección Star Wars.postman_collection.json o partners-middleend.postman_collection.json:

    Screenshot

  4. Correr la colección:

    Screenshot