REST Assured vs. JMeter: una comparación de las herramientas de prueba REST
Publicado: 2022-03-11Las pruebas automatizadas son un componente crítico del proceso de aseguramiento de la calidad del software. Pero probar las API de transferencia de estado representacional (REST) puede ser un asunto complicado. Muchos de los que recurren a probar manualmente las API REST pasan por alto los detalles y se pierden las formas en que podrían ahorrar tiempo.
Cualquier servicio de API REST que se pruebe correctamente tendrá estas áreas cubiertas:
- Comprobación de si el servicio API cumple con los estándares REST
- Prueba de códigos de respuesta del servicio API
- Aserción del contenido de la respuesta del servicio API
- Evaluación comparativa de rendimiento del servicio API
Para ello, necesita las herramientas adecuadas. Apache JMeter y REST Assured son dos herramientas de prueba REST populares para probar los servicios API REST. Puede obtener más información sobre cómo puede usarlos en la práctica aquí y aquí.
En este artículo, aprenderá los pros y los contras de estas dos herramientas y dónde encajan mejor en sus proyectos de API REST existentes.
Facilidad de configuración
Hay un requisito previo: tanto JMeter como REST Assured requieren Java, por lo que debe tener Java instalado en su computadora para poder ejecutar JMeter o REST Assured.
Instalar Apache JMeter es muy simple: vaya a la página de descarga, elija el ZIP o TAR, descargue el archivo, descomprímalo y estará listo para comenzar.
Vaya a la carpeta donde descomprimió el archivo, vaya a la subcarpeta bin
y ejecute jmeter.bat
(o similar para su sistema operativo, si no es Windows). Para obtener información más detallada sobre cómo configurar Apache JMeter, consulte esta página.
Instalar REST Assured es una experiencia un poco diferente. REST Assured no es una herramienta independiente. Es una biblioteca de Java. Para usarlo, debe configurar un nuevo proyecto Java e incluirlo como una biblioteca para su proyecto. Por supuesto, hay soporte para muchas herramientas de compilación, por lo que puede apuntar su resolución de dependencias a algún repositorio público (Maven). Puede encontrar información más detallada sobre cómo configurar REST Assured aquí.
Documentación
La documentación de Apache JMeter se puede encontrar en el sitio web oficial de JMeter. Proporciona una documentación bastante completa desde el inicio hasta características complejas como los oyentes. Además, en el sitio web oficial de JMeter, puede encontrar enlaces a algunos recursos muy completos, como tutoriales en video. Si te gusta menos leer y más mirar, definitivamente es una ventaja para ti.
La documentación de REST Assured, como la propia herramienta/biblioteca, se puede encontrar dentro del repositorio de Github. Tiene una gran lista de características enumeradas en la documentación en línea con explicaciones muy detalladas de cómo lograr algo. Sin embargo, toda la documentación es una página web enorme, que no es la forma más sencilla de explorar una herramienta.
Creación y mantenimiento automatizados de pruebas REST
Apache JMeter, como aplicación independiente con una interfaz gráfica de usuario (GUI), le permite crear sus pruebas desde la GUI. Esto puede ser útil especialmente debido a la jerarquía de entidades introducida desde JMeter: todo lo que cree dentro de su prueba se mostrará en una representación en forma de árbol en la GUI de JMeter.
Para crear una prueba, uno no tiene que tener ninguna habilidad de codificación. Sin embargo, la GUI no limita ninguna de las posibilidades con respecto a la planificación de pruebas. Si aún desea agregar alguna programación/flujo personalizado, los componentes BeanShell le permitirán hacerlo.
Cuando guarde su proyecto JMeter, todo lo que haya creado se guardará en un gran archivo XML (con la extensión .jmx
). En general, incluso para un pequeño cambio en una de las pruebas, (muy probablemente) tendrá que volver a abrir el proyecto en la GUI para realizar el cambio.
Si necesita colaborar con otros en el mismo archivo de proyecto de JMeter, este enorme archivo XML no será fácil de mantener utilizando cualquiera de los sistemas de gestión de control de fuente (SCM) (como Git, SVN, Perforce, etc.).
REST Assured, por otro lado, requiere habilidades de codificación Java para crear las pruebas. No hay una GUI fácil de usar para la creación de pruebas. Sin embargo, REST Assured le permite escribir las pruebas utilizando el lenguaje Gherkin (sintaxis Dado-Cuándo-Entonces), por lo que incluso si necesita algunas habilidades de codificación Java, las pruebas son bastante legibles para los humanos.
given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));
Dado que REST Assured es una biblioteca y las pruebas están escritas en Java, puede organizar sus pruebas en archivos Java separados, de modo que cuando necesite cambiar una prueba, solo necesita abrir un archivo. No necesita una GUI, por lo que puede editar la prueba fácilmente incluso a través de una terminal SSH. La colaboración con otros es bastante simple porque es fácil mantener archivos Java utilizando cualquier SCM.
Tipos de pruebas REST
JMeter es bien conocido como una herramienta de prueba de rendimiento para probar aplicaciones y servicios web. Fuera de la caja, tiene buenas opciones de informes con diferentes tipos de gráficos que puede usar para mostrar las métricas de prueba de rendimiento.
Por otro lado, tampoco es el escenario de uso principal para JMeter. Puede crear pruebas funcionales para API REST con JMeter, incluida la aserción de respuesta.
El escenario de uso principal de REST Assured es para la prueba funcional de los servicios de API REST. Incluso viene con su propio mecanismo de aserción de respuesta (la sintaxis de Gherkin). Dado que REST Assured es una biblioteca de Java, se puede integrar fácilmente con pruebas unitarias.
Cuando se trata de pruebas de rendimiento, REST Assured no admite pruebas de rendimiento listas para usar. Sin embargo, si desea utilizarlo para pruebas de rendimiento, deberá desarrollar su propio marco personalizado para las pruebas de rendimiento en torno a REST Assured.
Ejecución de pruebas
Las pruebas de JMeter se pueden invocar de dos maneras.

Desde la interfaz de usuario haciendo clic en el botón Ejecutar:
Desde la línea de comando:
jmeter -n -t your_script.jmx
La recomendación oficial de JMeter es no ejecutar las pruebas de rendimiento utilizando la GUI, ya que las pruebas se ejecutarán más lentamente (en términos de cantidad de solicitudes por segundo) en comparación con ejecutarlas desde la línea de comandos.
REST Assured, por otro lado, requiere un ejecutor de prueba separado, por ejemplo, jUnit o TestNG (o cualquier otra forma de ejecutar código Java).
Desde Eclipse usando TestNG:
Desde la línea de comando usando, por ejemplo, la herramienta de compilación Ant:
ant run-tests
Tipos de informes
Apache JMeter, debido a su propósito principal, tiene una gran cantidad de tipos de informes que puede crear a partir de los resultados de sus pruebas. Dado que puede ejecutar pruebas de rendimiento desde JMeter, las métricas de rendimiento generalmente se muestran mediante gráficos como este:
Puede obtener más información sobre los informes de JMeter y los tipos de informes que puede crear desde aquí.
REST Assured en sí mismo no crea ningún informe, por lo que depende de usted y del marco de prueba que elija. Sin embargo, cuando se integra con algún marco de pruebas unitarias, puede obtener informes bastante útiles en formatos HTML, texto o XML.
Integración con Jenkins
Cuando se trata de la integración continua de productos bajo prueba, es muy importante integrar su marco de automatización de pruebas con herramientas de CI tanto para ejecutar pruebas como para informar sobre los resultados.
Las pruebas automatizadas de JMeter se pueden integrar fácilmente con Jenkins utilizando el complemento de rendimiento que le permite configurar acciones posteriores a la compilación y obtener una página de panel de control atractiva a partir de una página de trabajo de Jenkins.
REST Assured también se puede integrar fácilmente con Jenkins porque Jenkins tiene complementos para casi todos los marcos de prueba; por ejemplo, el complemento TestNG que nuevamente puede crear un gráfico de tendencia sólido para los resultados de la prueba.
Actividad comunitaria
Esta es una categoría que no se puede medir fácilmente. La actividad de la comunidad depende de una serie de factores, como la madurez de la herramienta o el número de contribuyentes.
Apache JMeter tiene una comunidad más grande hoy en día. Esto se debe principalmente al hecho de que JMeter apareció en el mercado hace mucho tiempo y se considera un estándar de la industria cuando se trata de pruebas de rendimiento de aplicaciones y servicios web. JMeter publica comunicados oficiales cada 5-6 meses. Su repositorio de GitHub es muy activo, con nuevas confirmaciones a diario. JMeter usa Bugzilla como rastreador de problemas y tiene una lista de problemas abiertos que se cambian con frecuencia. Hay más de 23000 resultados para JMeter en la búsqueda de StackOverflow. De los sitios de redes sociales, JMeter tiene una cuenta oficial de Twitter. En Facebook y LinkedIn, no hay una cuenta oficial para JMeter, pero hay un par de grupos, el más grande de los cuales es este grupo de Facebook y este grupo de LinkedIn.
REST Assured se está abriendo camino hacia el escenario principal y se ha convertido en la primera opción, una recomendación de múltiples fuentes, cuando se trata de automatizar las pruebas funcionales del servicio REST API. REST Assured ha estado publicando comunicados oficiales una vez cada 6 meses durante los últimos dos años. El repositorio de GitHub tiene muchos colaboradores y es un poco menos activo que el de JMeter, pero también es muy activo. REST Assured está rastreando problemas en el repositorio de GitHub, por lo que todo está en un solo lugar. En StackOverflow, hay más de 2000 resultados de búsqueda para REST Assured, por lo que podemos decir que es significativamente más bajo en comparación con los resultados de búsqueda de JMeter. En cuanto a los grupos de redes sociales, solo se encontró el grupo de LinkedIn con un número significativamente menor de miembros en comparación con JMeter. La comunidad REST Assured puede no ser tan grande como la comunidad JMeter, pero es muy activa.
Resumen
Tanto JMeter como REST Assured tienen sus ventajas entre sí. Pero según el proyecto en el que esté trabajando, uno se adaptará mejor que el otro para la automatización de pruebas de su API REST. Ambos son muy robustos, tienen opciones de prueba útiles, cuentan con buenas capacidades de generación de informes y se pueden integrar fácilmente con marcos de prueba personalizados.
Aquí hay un resumen de todos los criterios de comparación explorados en este artículo para estas dos populares herramientas de prueba REST:
Apache JMeter | Está seguro | |
---|---|---|
Requiere habilidades de codificación | No | Sí (Java) |
documentos completos | sí | sí |
Pruebas funcionales | Sí (pero exagerado) | sí |
Pruebas de rendimiento | sí | No (fuera de la caja) |
Adecuado para SCM (Git, P4...) | No | sí |
Informes de las pruebas | sí | No |
Integración con herramientas de IC | sí | sí |
Integración con pruebas unitarias | No | sí |
Prueba de paralelización | sí | sí |
Actividad comunitaria | sí | sí |