Tutorial de Pruebas de Carga con JMeter
Resumen de Pruebas de Carga con JMeter
Cada aplicación web tiene una capacidad máxima de carga, y excederla puede provocar ralentizaciones, errores o ineficacia general. Las pruebas de carga son fundamentales para evaluar el rendimiento de una aplicación web. Este tipo de prueba es un componente vital del ciclo de vida del desarrollo de software y aplicaciones, especialmente cuando se trata de aplicaciones web, sitios o APIs que se espera manejen un tráfico significativo de usuarios. Para asegurar que sus aplicaciones puedan rendir bajo condiciones de tráfico pico o sostenido alto, es esencial emplear herramientas de pruebas de rendimiento. Apache JMeter es una opción popular para este propósito, y si eres nuevo en pruebas de rendimiento, quizás te preguntes qué es JMeter y cómo funciona JMeter. Analizaremos JMeter y cómo usarlo para pruebas de rendimiento.
¿Qué son las Pruebas de Carga?
Las pruebas de carga son un tipo de prueba de rendimiento para determinar cómo se comporta su aplicación web durante condiciones de carga normales y pico o incluso para encontrar el punto de ruptura. Es la práctica de simular el uso real, o carga, sobre cualquier software, sitio web, aplicación web, API o sistema para analizar e identificar factores como la capacidad de respuesta, degradación y escalabilidad.
Herramientas para Pruebas de Carga
Las herramientas de pruebas de carga son extremadamente importantes para optimizar sus necesidades de pruebas de carga y mejorar su rendimiento digital. Hoy en día no hay límite en la cantidad y variedad de herramientas y plataformas disponibles en el mercado, con diversas características. Existen muchas herramientas de pruebas de carga como:
-
- LoadView
- Apache JMeter
- WebLOAD
- LoadRunner
- Tricentis NeoLoad
- LoadNinja
En esta guía, analizaremos las pruebas de carga con JMeter. Responderemos preguntas como: qué es JMeter, cómo hacer pruebas de carga con JMeter y cómo usar JMeter para pruebas de rendimiento de API.
¿Qué es la Prueba de Carga con JMeter?
Apache JMeter, también conocido simplemente como JMeter, es un software de código abierto ampliamente utilizado, diseñado como una aplicación 100% pura en Java para realizar pruebas de carga de comportamiento funcional y evaluación de rendimiento. Es una herramienta preferida entre desarrolladores y equipos de desarrollo de software para pruebas de rendimiento debido a su extensa documentación, fuerte apoyo comunitario y mejores prácticas establecidas. Además, al ser gratuito y de código abierto, es una opción rentable, aunque al ser 100% Java, podría requerir que su equipo tome tiempo y recursos adicionales para iniciar los procesos de prueba.
JMeter soporta una variedad de protocolos, incluyendo HTTP, HTTPS, FTP y más, lo que lo hace versátil para probar diferentes tipos de aplicaciones. Los usuarios pueden crear y ejecutar planes de prueba que definen varios escenarios, tales como simular interacciones de usuarios, monitorear el rendimiento del servidor y analizar tiempos de respuesta.
La prueba de carga con JMeter está diseñada para realizar pruebas de carga sobre el comportamiento funcional y medir su rendimiento. Muchos equipos también integran las pruebas de JMeter en pipelines CI/CD para ejecutar verificaciones de rendimiento durante compilaciones y despliegues. Puede usar JMeter para analizar y medir el rendimiento de aplicaciones web o servicios. Al analizar los datos recopilados y generar informes, puede observar el comportamiento de la aplicación e identificar cuellos de botella de rendimiento, proporcionando información valiosa sobre áreas que requieren mejoras en la aplicación.
¿Por qué usar JMeter?
- Código abierto: JMeter es completamente gratuito, y los desarrolladores pueden usar el código fuente.
- Independiente de plataforma: JMeter es independiente de la plataforma y puede ejecutarse en múltiples sistemas.
- Soporte para múltiples protocolos: JMeter soporta pruebas de aplicaciones web y rendimiento de servicios de bases de datos. Soporta todos los protocolos básicos como HTTP, JDBC, LDAP, SOAP, JMS y FTP.
- Grabación y reproducción: JMeter permite grabar la actividad del usuario en un navegador para simularla y luego reproducir la grabación.
- Reportes personalizables: Visualice sus resultados de prueba en diferentes formatos como gráficos, tablas o archivos de árbol y registro.
- Soporte comunitario: Cuenta con una gran comunidad con ayuda, orientación y tutoriales.
- Extensibilidad: JMeter puede extenderse con plugins para mejorar su funcionalidad, permitiendo a los usuarios adaptar la herramienta a sus necesidades específicas.
- Escalabilidad en la nube limitada por defecto: JMeter normalmente se ejecuta localmente a menos que se configure para pruebas distribuidas, lo que requiere configuración adicional.
Beneficios de las Pruebas de Carga con JMeter
JMeter es una herramienta fantástica para pruebas de carga que ofrece muchas ventajas que la convierten en favorita entre los probadores. Para empezar, es completamente gratuita y de código abierto, lo que significa que no tienes que preocuparte por limitaciones presupuestarias; ¡es accesible para todos! Además, es lo suficientemente potente para simular escenarios del mundo real que te ofrecen una imagen clara de cómo se desempeña tu aplicación bajo diferentes tipos de carga.
Una de las mejores cualidades de JMeter es su escalabilidad. Ya sea que estés ejecutando pruebas pequeñas o simulando tráfico a gran escala, puede manejarlo todo sin complicaciones. Y no olvidemos sus funciones detalladas para reportes y análisis. Estas herramientas te ayudan a detectar problemas de rendimiento desde temprano, facilitando mucho la optimización de tu aplicación y manteniéndola funcionando sin problemas.
Una de las cosas que más nos gusta de JMeter es lo fácil que es de usar. No necesitas ser un experto en programación para crear escenarios de prueba complejos ya que JMeter lo mantiene simple e intuitivo. Además, sus funciones integradas de reporte y visualización facilitan el análisis de los resultados y la identificación de cualquier cuello de botella en el rendimiento. En general, JMeter es una herramienta fiable y fácil de usar que ayuda a asegurar que tus aplicaciones puedan manejar lo que sea que les venga encima.
Cómo Realizar Pruebas de Carga con JMeter
Veamos algunos de los pasos involucrados en cómo usar JMeter para pruebas de carga y cómo configurar una prueba de carga básica.
Paso 1: Verificar la Compatibilidad del Sistema para la Instalación de JMeter
Antes de proceder con la instalación de JMeter, es crucial asegurarse de que su sistema cumpla con los requisitos. JMeter está basado en Java, por lo que debe tener Java 8 o una versión superior instalado en su sistema. Confirme que su sistema operativo sea compatible con JMeter. JMeter está diseñado para funcionar en varios sistemas operativos, incluyendo Windows, Linux y macOS.
Una vez que haya confirmado que su sistema cumple con estos requisitos básicos, estará listo para proceder con la instalación de JMeter. Esto garantiza una configuración sin problemas y un rendimiento óptimo durante las pruebas de carga.
Paso 2: Descargar e Instalar JMeter para su Sistema
Después de asegurarse de que su sistema cumple con todos los requisitos necesarios, proceda a descargar la versión más reciente de JMeter, eligiendo entre binarios o archivos fuente según sus necesidades específicas. Los archivos binarios, que comprenden versiones precompiladas de JMeter, pueden ejecutarse inmediatamente, mientras que los archivos fuente ofrecen flexibilidad para configuración y compilación manual por parte de desarrolladores o equipos. Normalmente, se prefieren las versiones binarias por su facilidad de instalación. Hay diferentes tipos de archivos para descargar, como .zip y .tgz.
Una vez que haya seleccionado su versión preferida, descárguela a su sistema. Luego puede abrir el archivo, moverlo a una ubicación designada o crear una nueva carpeta para acceder en el futuro. Comience el proceso de extracción, lo cual puede tardar unos minutos. Tenga en cuenta que los pasos de instalación pueden variar dependiendo de su sistema operativo, pero una vez instalado, la funcionalidad de JMeter permanece consistente.
Paso 3: Crear un Plan de Prueba de Carga
Los usuarios de JMeter pueden comenzar a crear su plan de prueba de carga desde cero o también seleccionar entre varias plantillas de planes de prueba que se encuentran en el menú Archivo. Las plantillas incluyen Plan de Prueba de SOAP WebService, Plan de Prueba Web básico y avanzado, Plan de Prueba FTP (Protocolo de Transferencia de Archivos), Plan de Prueba Funcional, y muchas más. Estas plantillas de prueba incluirán todos los elementos, secciones y campos específicos necesarios para crear y construir su plan de prueba de carga.
Para crear un plan de prueba, simplemente navegue a Archivo y seleccione Nuevo o haga clic en el botón Nuevo de la barra de herramientas. Es importante mencionar que debe ejecutar JMeter en modo GUI para crear el Plan de Prueba. La interfaz de línea de comandos (CLI) se usa para ejecutar la prueba de carga. A continuación, hablaremos sobre cómo especificar el número de usuarios para su prueba de carga, conocido también como el Grupo de Hilos (Thread Group).
Paso 4: Añadir y Configurar el Grupo de Hilos en JMeter
Para incorporar un Grupo de Hilos, siga estos pasos: Haga clic derecho sobre el Plan de Prueba, pase el cursor sobre Threads (Usuarios) y haga clic en Grupo de Hilos.
En la ventana emergente del Grupo de Hilos, puede editar varias propiedades del hilo, como Número de Hilos (Usuarios), Periodo de inicio escalonado (en segundos) y Conteo de bucles (iteraciones de prueba). Además, especifique acciones como retardos, establezca horas de inicio y parada de la prueba y defina respuestas a errores de los Samplers. Las propiedades del hilo son:
-
- Número de Hilos: Representa la cantidad de usuarios virtuales que se conectan al servidor.
- Periodo de inicio escalonado: Denota el tiempo que JMeter tarda en cambiar el número especificado de hilos a un estado activo.
- Conteo de bucles: Indica el número de veces que cada hilo ejecuta la tarea.
- Bucle infinito: Cuando está activado, ignora el conteo de bucles, causando un bucle infinito hasta que se detenga manualmente.
- Diferir la creación de hilos hasta que sea necesario: Retrasa la creación de hilos hasta que se alcance un valor especificado (en segundos).
- Programador: Permite configuraciones de programador para planificar pruebas en momentos específicos cuando está activado.
Este paso permite una personalización meticulosa de los parámetros de la prueba de carga, brindando a los usuarios control sobre la concurrencia, duración y condiciones específicas de la prueba.
Paso 5: Configurar el Sampler en JMeter
En JMeter, los Samplers permiten que JMeter envíe diferentes tipos de solicitudes. Por ejemplo, estas pueden ser una solicitud HTTP (para un sitio web, aplicación o API), una solicitud FTP, SMTP, TCP, entre otras. Desde aquí, ingresa detalles adicionales tales como el Protocolo (HTTP/S), Nombre del Servidor o IP, Ruta (para página web específica), y qué tipo de solicitud, como GET, POST, HEAD, PUT, etc., que puede usarse para pruebas de carga de API.
Paso 6: Configurar Listeners
Para analizar los resultados de los Samplers en JMeter, el siguiente paso es configurar lo que se conoce como Listeners. En la ventana del Plan de Prueba de JMeter, puede elegir entre varios Listeners, incluyendo Informe Resumen, Gráfico Agregado, Ver Árbol de Resultados, Ver Resultados en Tabla y muchos otros, para inspeccionar y analizar a fondo sus resultados de prueba. Además, tiene la flexibilidad de agregar múltiples Listeners a un Plan de Prueba de JMeter. Una vez hecho esto, su Plan de Prueba está listo y puede proceder a ejecutar la prueba.
Paso 7: Grabar los Scripts de Prueba de Carga
Si su objetivo es realizar pruebas básicas de carga HTTP o a nivel de protocolo sin configuración extensa, no se requiere configuración adicional. Sin embargo, si necesita una prueba que se asemeje estrechamente a las acciones de sus usuarios, necesitará utilizar el Grabador de Scripts de Prueba HTTP(S) en JMeter.
En el Grupo de Hilos, debe agregar el Controlador de Grabación. Este controlador le permite navegar por un sitio o aplicación, registrando sus acciones a través de solicitudes HTTP/S. También puede incluir múltiples Controladores de Grabación por página, ahorrándole tiempo para no tener que agregar manualmente cada solicitud.
La desventaja es que su grabación se realiza con solicitudes HTTP/S y no grabando dentro de un navegador real desde la perspectiva del usuario. También puede grabar navegadores usando el Proxy Server de JMeter, pero esto puede ser un proceso tedioso y difícil. Si busca una solución más fácil e intuitiva, puede optar por usar LoadView que cuenta con EveryStep Web Recorder. El grabador de LoadView ofrece scripting de apuntar y hacer clic usando navegadores reales sin la configuración compleja y que consume mucho tiempo en JMeter.
Paso 8: Ejecutar la Prueba de Carga
Después de haber configurado todos los detalles y ajustes de su prueba de carga, guarde su plan de prueba. Luego puede simplemente seleccionar el botón Ejecutar en la barra de herramientas y su prueba comenzará. Recuerde ejecutar la prueba en modo CLI para obtener mejores resultados.
Paso 9: Ver los Resultados de la Prueba de Carga
Verá los resultados de la prueba en la tabla, pero esto puede depender de su listener. Sus resultados incluirán métricas adicionales, como Tiempo (en milisegundos), Estado (muestra respuestas válidas y errores), Bytes y Bytes enviados, Latencia y Tiempo de Conexión. Al examinar estos resultados, puede identificar la ubicación de cualquier error o casos de tiempos de carga lentos.
Cómo Realizar Pruebas de Carga de API con JMeter
Anteriormente, discutimos las instrucciones paso a paso sobre cómo configurar una prueba de carga basada en protocolo en un sitio web o aplicación con JMeter. Ahora cubriremos la prueba de diferentes APIs, como las APIs SOAP y REST, con JMeter. Los procedimientos de instalación y configuración siguen siendo consistentes con los pasos previamente mencionados. Sin embargo, nos enfocaremos en aspectos fundamentales de las pruebas de API y discutiremos consideraciones importantes al realizar pruebas de API utilizando JMeter.
Pruebas de API REST con JMeter
Las APIs RESTful, abreviatura de Representational State Transfer APIs, desempeñan un papel vital en el desarrollo de diversos servicios web. En contraste con las APIs SOAP, REST no es un protocolo sino un estilo arquitectónico que se basa en URIs (Identificadores Uniformes de Recursos) y el protocolo HTTP.
Paso 1: Crear un Plan de Prueba de Carga
Para comenzar, abra JMeter. Verá que se abrirá una nueva ventana de Plan de Prueba. Si ya tiene abierto JMeter, también puede seleccionar el botón Nuevo en la barra de herramientas principal para crear un nuevo Plan de Prueba.
Paso 2: Añadir y Configurar Grupo de Hilos en JMeter
De manera similar a la sección anterior, la ventana de Grupo de Hilos es donde puede añadir el número de usuarios (Hilos), establecer el tiempo de iniciación escalonado y el número de iteraciones de la prueba (Conteo de bucles) y editar muchas otras propiedades.
Paso 3: Configurar Sampler
A continuación, necesitamos agregar el Sampler. Puede elegir entre algunos Samplers preconfigurados en JMeter o seleccionar uno propio. Para este ejemplo, usaremos una opción preconfigurada.
Para iniciar este proceso, haga clic derecho en el Grupo de Hilos, lo que desplegará una ventana. Elija Añadir, luego Sampler. Aparecerá una lista de opciones de Samplers. Para pruebas de API, opte por Solicitud HTTP, que abre la ventana de configuración donde puede nombrar su prueba y configurar los parámetros para su prueba de API REST. Vale mencionar que la ventana de Solicitud HTTP está dividida en secciones Básica y Avanzada. Para esta prueba, nos concentraremos en las configuraciones básicas. Hay varios campos disponibles para configurar, incluyendo Protocolo, Nombre del Servidor o IP, Número de Puerto, Solicitud HTTP (GET/POST/HEAD/PUT/DELETE, etc.), parámetros, y más.
Para comenzar, ingrese la URL de la API en el campo Nombre del Servidor o IP (solo el nombre de dominio), junto con el protocolo adecuado, y en el campo Ruta agregue el camino de la API.
Si esta es una solicitud GET, seleccione GET de la lista de Solicitud HTTP.
Si tiene ciertos parámetros, como una página específica, puede añadir esa parte de la URL en el campo Parámetros.
También puede incluirlo en el campo Ruta, sin embargo, al añadirlo en el campo Parámetros, tiene opciones adicionales como Codificar URL?, Tipo de Contenido, e Incluir Igual?
Para ciertas solicitudes, es necesario incluir encabezados. Para ello, vaya a Solicitud HTTP en la ventana del Plan de Prueba. Haga clic derecho para desplegar el menú, seleccione Añadir y luego Elemento de Configuración. Esto abre las opciones disponibles. En este caso, opte por el Administrador de Encabezados HTTP. La ventana de Administrador de Encabezados HTTP le permite ingresar sus encabezados de API. Después de configurar sus ajustes, proceda al siguiente paso.
Paso 4: Añadir Listeners
Para incluir Listeners, simplemente haga clic derecho en el Grupo de Hilos, elija Añadir y luego Listener. Esto abrirá un menú con más de 15 opciones para seleccionar. Las opciones populares incluyen Ver Árbol de Resultados y Ver Resultados en Tabla. Es importante destacar que los Listeners que ofrecen representación gráfica, como Ver Árbol de Resultados, pueden consumir más memoria y CPU. Tras añadir sus Listeners, guarde su plan de prueba.
Paso 5: Ejecutar la Prueba y Ver los Resultados
Una vez que haya configurado y guardado los detalles y ajustes de su prueba de carga, inicie la prueba haciendo clic en el botón Ejecutar en la barra de herramientas. La ventana mostrará los resultados del Sampler, presentando diversos detalles, datos y métricas — como latencia, códigos de respuesta, tiempo de conexión, etc. — relacionados con su prueba de API REST.
Pruebas de API SOAP con JMeter
SOAP (Simple Object Access Protocol) se distingue de un API REST pues opera bajo su propio protocolo. Al realizar pruebas de carga en APIs SOAP, surgen consideraciones específicas, incluyendo seguridad y cumplimiento, requisitos de ancho de banda (las APIs SOAP generalmente demandan más recursos), y aspectos funcionales como lógica de reintentos, que está ausente en APIs REST.
Paso 1: Crear un Plan de Prueba de Carga
JMeter ofrece una gama de plantillas de Plan de Prueba accesibles a través del Menú o el ícono de Plantillas en la barra de herramientas principal. Una de las opciones disponibles es “Construir un Plan de Prueba SOAP WebService.” Elegir esta opción generará y abrirá el Plan de Prueba correspondiente. Como es una plantilla, ciertos campos contendrán valores de marcador que requieren que ingrese los datos e información relevantes.
Paso 2: Ingresar Datos
De manera similar a lo discutido en la configuración de APIs REST, necesitará ingresar el número de usuarios (Hilos), período de inicio escalonado y ciclos (iteraciones de prueba) para las pruebas de API SOAP.
Dentro de un subgrupo del Grupo de Hilos principal, puede acceder a los ajustes de Solicitud HTTP, similar a la configuración de API REST que abordamos anteriormente. Sin embargo, la disposición de esta sección difiere, mostrando por defecto el cuerpo de la solicitud SOAP API. Esta sección también incluye subsecciones para Administrador de Encabezados HTTP y Aserciones de Respuesta. Similar a la configuración de API REST, puede incorporar elementos de configuración adicionales, como el Administrador de Autorización HTTP, si deben incluirse detalles específicos de autorización.
Paso 3: Añadir Sampler de Solicitud HTTP
Para una prueba de carga de API SOAP, deseará añadir el Sampler de Solicitud HTTP. En esta ventana, deberá ingresar los detalles relevantes, incluyendo Nombre del Servidor o IP, Ruta, Solicitud HTTP, Número de Puerto y los Datos del cuerpo de la solicitud SOAP.
Paso 4: Añadir Listeners
Una vez que haya configurado el Plan de Prueba, deberá añadir sus Listeners, los cuales mostrarán los resultados de su prueba. Nuevamente, puede añadir tantos Listeners como desee y sean apropiados para la prueba de carga SOAP API.
Paso 5: Ejecutar su Prueba
Una vez que la configuración y ajustes de su Plan de Prueba hayan sido establecidos, finalmente podrá ejecutar su prueba de carga de SOAP API y revisar los resultados al finalizar.
Conclusión
Para este punto, deberías haber aprendido qué es JMeter, cómo hacer pruebas de carga con JMeter y cómo realizar pruebas de carga para APIs con JMeter. Como puedes ver, configurar pruebas de carga con JMeter implica muchos pasos y opciones de configuración, lo que equivale a mucho tiempo dedicado a configurar las pruebas en lugar de ejecutarlas. Aunque JMeter es una solución gratuita y de código abierto, podrías necesitar buscar otras herramientas de pruebas de carga que ofrecen mejores funciones y se ajusten a tus necesidades comerciales.
LoadView: La Mejor Alternativa a JMeter
LoadView destaca como una de las principales soluciones pagas de pruebas de rendimiento disponibles hoy, ofreciendo una variedad de características. Estas incluyen un grabador de scripts de apuntar y hacer clic, acceso a una red global de servidores de inyección de carga y la capacidad de configurar varios escenarios de curvas de carga para mayor flexibilidad en las pruebas. A diferencia de JMeter, LoadView no requiere infraestructura adicional ni consideraciones ya que todo se gestiona sin inconvenientes. A diferencia de JMeter, que se limita a pruebas de carga a nivel de protocolo, LoadView emplea navegadores reales, permitiéndote evaluar el rendimiento real para sitios críticos, aplicaciones y APIs. Además, LoadView ofrece múltiples opciones, como listar en la lista blanca IPs proxy estáticas o utilizar un agente in situ, lo que permite pruebas en aplicaciones detrás de tu firewall y ofrece mayor flexibilidad para pruebas de rendimiento.
LoadView proporciona informes y paneles de rendimiento fáciles de usar, que ofrecen perspectivas claras sobre los factores que contribuyen a un rendimiento subóptimo. Además, incluye un video de referencia para pruebas de páginas web y aplicaciones, lo que permite una comparación directa con los informes para visualizar la perspectiva del usuario. LoadView ofrece planes flexibles mensuales y anuales, acompañados de soporte 24×7 para todos los clientes, independientemente del plan elegido, diferenciándolo de otras herramientas en el mercado.
Lleva Tus Pruebas de Carga al Siguiente Nivel
siguiente nivel
Experimenta funciones inigualables con escalabilidad ilimitada. Sin tarjeta de crédito, sin contrato.