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 lentitud, errores o una efectividad general reducida. Las pruebas de carga son cruciales 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 garantizar que tus aplicaciones puedan funcionar bajo condiciones de tráfico pico o alto sostenido, es esencial emplear herramientas de pruebas de rendimiento. Apache JMeter es una opción popular para este propósito, y si eres nuevo en las pruebas de rendimiento, podrías preguntarte ¿qué es JMeter? ¿Y cómo funciona JMeter? Revisaremos JMeter y cómo usar JMeter para pruebas de rendimiento.
¿Qué es la Prueba de Carga?
La prueba de carga es un tipo de prueba de rendimiento para determinar cómo se comporta tu aplicación web durante condiciones normales y pico de carga o incluso para encontrar el punto de ruptura. Es la práctica de simular el uso real, o carga, en cualquier software, sitio web, aplicación web, API o sistema para analizar e identificar factores como la capacidad de respuesta, la degradación y la escalabilidad.
Herramientas para Pruebas de Carga
Las herramientas de prueba de carga son sumamente importantes para optimizar tus necesidades de prueba y mejorar tu rendimiento digital. Existen infinitas opciones y variedades de herramientas y plataformas en el mercado actualmente, con múltiples características. Hay muchas herramientas de prueba de carga tales como:
-
- LoadView
- Apache JMeter
- WebLOAD
- LoadRunner
- Tricentis NeoLoad
- LoadNinja
En esta guía, revisaremos la prueba de carga con JMeter. Responderemos algunas 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 como JMeter, es un software de código abierto ampliamente usado, diseñado como una aplicación 100% pura en Java para realizar pruebas de carga del comportamiento funcional y evaluar el rendimiento. Es una herramienta preferida entre desarrolladores y equipos de desarrollo de software para pruebas de rendimiento debido a su amplia documentación, fuerte soporte comunitario y prácticas recomendadas establecidas. Además, al ser gratuita y de código abierto, es una opción rentable, pero dado que es 100% Java, puede requerir que tu equipo invierta tiempo y recursos adicionales para iniciar los procesos de prueba.
JMeter soporta una variedad de protocolos, incluyendo HTTP, HTTPS, FTP y más, haciéndolo versátil para probar diferentes tipos de aplicaciones. Los usuarios pueden crear y ejecutar planes de prueba que definan 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. Puedes usar JMeter para analizar y medir el rendimiento de aplicaciones web o servicios. Al analizar los datos recopilados y generar informes, puedes observar el comportamiento de la aplicación e identificar cuellos de botella en el rendimiento, proporcionando valiosos conocimientos sobre áreas donde se 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 la plataforma: JMeter es 100% Java y puede ejecutarse en múltiples plataformas.
- Soporte para múltiples protocolos: JMeter soporta pruebas tanto para aplicaciones web como para 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 se puede reproducir la grabación.
- Informes personalizables: Visualiza tus resultados de prueba en diferentes formatos como gráficos, tablas o árbol y archivos de registro.
- Soporte comunitario: Existe 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.
Beneficios de las Pruebas de Carga con JMeter
JMeter es una herramienta fantástica para pruebas de carga que ofrece muchas ventajas, lo que lo convierte en un favorito entre los evaluadores. Para empezar, es completamente gratuito y de código abierto, lo que significa que no tienes que preocuparte por limitaciones de presupuesto y está accesible para todos. ¡Además, es lo suficientemente potente para simular escenarios reales que te brindan una imagen clara de cómo tu aplicación funciona bajo diferentes tipos de cargas.
Una de las mejores características 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 problemas. Y no olvidemos sus funciones detalladas de informes y análisis. Estas herramientas te ayudan a localizar problemas de rendimiento desde temprano, facilitando mucho la optimización de tu aplicación y mantenerla funcionando sin interrupciones.
Lo 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 es simple e intuitivo. Además, sus funciones integradas de informes y visualización facilitan el análisis de resultados y la identificación de cualquier cuello de botella en el rendimiento. En general, JMeter es una herramienta confiable y fácil de usar que ayuda a garantizar que tus aplicaciones puedan manejar cualquier situación.
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 tu sistema cumpla con los requisitos. JMeter es basado en Java, por lo que necesitas tener Java 8 o una versión superior instalada en tu sistema. Confirma que tu sistema operativo es compatible con JMeter. JMeter está diseñado para funcionar en varios sistemas operativos, incluyendo Windows, Linux y macOS.
Una vez que hayas confirmado que tu sistema cumple con estos requisitos básicos, estarás listo para proceder con la instalación de JMeter. Esto asegura una configuración sin problemas y un rendimiento óptimo durante las pruebas de carga.
Paso 2: Descargar e Instalar JMeter para tu Sistema
Después de asegurarte que tu sistema cumple con todos los requisitos necesarios, procede a descargar la versión más reciente de JMeter, eligiendo entre archivos binarios o archivos fuente según tus necesidades específicas. Los archivos binarios consisten en versiones precompiladas de JMeter y pueden ejecutarse inmediatamente, mientras que los archivos fuente ofrecen flexibilidad para la configuración y compilación manual por desarrolladores o equipos. Normalmente, se prefieren las versiones binarias por su facilidad de instalación. Hay diferentes tipos de archivos disponibles para descarga, como .zip y .tgz.
Una vez que hayas seleccionado la versión preferida, descárgala a tu sistema. Luego podrás abrir el archivo, moverlo a una ubicación designada o crear una nueva carpeta para un acceso futuro. Comienza el proceso de extracción, que puede tomar unos minutos. Ten en cuenta que los pasos de instalación pueden variar dependiendo de tu sistema operativo; sin embargo, una vez instalado, la funcionalidad de JMeter permanece consistente.
Paso 3: Crear un Plan de Prueba de Carga
Los usuarios de JMeter pueden empezar a crear su plan de prueba de carga desde cero o seleccionar entre varios plantillas de planes de prueba localizadas en el menú desplegable Archivo. Las plantillas incluyen Plan de Prueba de WebService SOAP, Plan de Prueba Web básico y avanzado, Plan de Prueba FTP (Protocolo de Transferencia de Archivos), Plan de Pruebas Funcionales y muchas otras. Estas plantillas de prueba incluirán todos los elementos, secciones y campos específicos necesarios para que puedas crear y construir tu plan de prueba de carga.
Para crear un Plan de Prueba, simplemente navega a Archivo y selecciona Nuevo o elige el botón Nuevo en la barra de herramientas. Es importante destacar que debes ejecutar JMeter en modo GUI para crear el Plan de Prueba. La CLI, o interfaz de línea de comandos, se usa para ejecutar la prueba de carga. A continuación, hablaremos sobre cómo especificar el número de usuarios para tu prueba de carga, que también se conoce como Grupo de Hilos.
Paso 4: Añadir y Configurar el Grupo de Hilos en JMeter
Para añadir un Grupo de Hilos, sigue estos pasos: Haz clic derecho en Plan de Prueba, pasa el cursor sobre Hilos (Usuarios) y haz clic en Grupo de Hilos.
En el cuadro de diálogo Grupo de Hilos que aparece, puedes editar varias propiedades de hilos, tales como Número de Hilos (Usuarios), período de inicio gradual (en segundos) y recuento de repetición (iteraciones de prueba). Además, especifica acciones como retrasos, establece horarios de inicio y fin de la prueba, y define respuestas a errores de muestreo. Las propiedades del hilo son:
-
- Número de Hilos: Representa la cantidad de usuarios virtuales que se conectan al servidor.
- Período de Inicio Gradual: Indica el tiempo que JMeter tarda en poner el número especificado de hilos en estado de ejecución.
- Recuento de Repetición: Indica cuántas veces cada hilo ejecuta la tarea.
- Recuento de Repetición Infinito: Cuando está activado, ignora el recuento y causa un bucle infinito hasta detenerse manualmente.
- Retrasar 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 configurar un programador para ejecutar las pruebas a horas específicas cuando está activado.
Este paso permite una personalización detallada de los parámetros de la prueba de carga, proporcionando control sobre la concurrencia, duración y condiciones específicas de la prueba.
Paso 5: Configurar el Muestrador en JMeter
En JMeter, los Muestradores permiten enviar diferentes tipos de solicitudes. Por ejemplo, pueden ser solicitudes HTTP (para un sitio web, aplicación o API), solicitudes FTP, SMTP, TCP y muchas otras. Aquí puedes ingresar detalles adicionales como Protocolo (HTTP/S), Nombre del Servidor o IP, Ruta (para una página web específica) y tipo de solicitud, como GET, POST, HEAD, PUT, etc., que pueden usarse para pruebas de carga de API.
Paso 6: Configurar los Listeners
Para analizar los resultados del Muestrador en JMeter, el siguiente paso es configurar los llamados Listeners. En la ventana del Plan de Prueba de JMeter, puedes elegir entre varios Listeners, incluyendo Informe Resumen, Gráfico Agregado, Vista de Resultados en Árbol, Vista de Resultados en Tabla y muchos otros para inspeccionar y analizar ampliamente los resultados de la prueba. Además, tienes la flexibilidad de agregar múltiples Listeners a un plan de prueba. Una vez hecho esto, tu plan de prueba estará listo y podrás ejecutar la prueba.
Paso 7: Grabar los Scripts de la Prueba de Carga
Si tu objetivo es realizar pruebas básicas de carga HTTP o a nivel de protocolo sin configuraciones extensas, no se requiere configuración adicional. Sin embargo, si necesitas una prueba que se asemeje estrechamente a las acciones de tus usuarios, necesitarás usar el Grabador de Scripts de Prueba HTTP(S) en JMeter.
En el Grupo de Hilos, debes añadir el Controlador de Grabación. Este controlador te permite navegar por un sitio o aplicación, grabando tus acciones a través de solicitudes HTTP/S. También puedes incluir múltiples Controladores de Grabación por página, ahorrándote tiempo para no tener que agregar manualmente cada solicitud.
La desventaja es que la grabación se hace con solicitudes HTTP/S y no graba dentro de un navegador real desde la perspectiva del usuario. También puedes grabar navegadores usando el Servidor Proxy de JMeter, pero este proceso puede ser tedioso y complicado. Si buscas una solución más fácil e intuitiva, puedes optar por usar LoadView que tiene el Grabador Web EveryStep. El grabador de LoadView proporciona creación de scripts con clics usando navegadores reales sin la configuración compleja y que consume tiempo en JMeter.
Paso 8: Ejecutar la Prueba de Carga
Después de configurar todos los detalles y ajustes de tu prueba de carga, guarda tu plan de prueba. Luego simplemente selecciona el botón Ejecutar en la barra de herramientas y tu prueba comenzará. Recuerda ejecutar la prueba en modo CLI para obtener mejores resultados.
Paso 9: Ver los Resultados de la Prueba de Carga
Verás los resultados de la prueba en la tabla, aunque esto puede depender de tu listener. Tus resultados incluirán métricas adicionales, tales 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, puedes identificar las ubicaciones de errores o casos de tiempos de carga lentos.
Cómo Realizar Pruebas de Carga 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 abordaremos la prueba de diferentes APIs, como APIs SOAP y REST, con JMeter. Los procedimientos de instalación y configuración permanecen consistentes con los pasos mencionados anteriormente. Sin embargo, nos centraremos en aspectos fundamentales de las pruebas API y discutiremos consideraciones importantes al realizar pruebas API utilizando JMeter.
Pruebas API REST con JMeter
Las APIs RESTful, abreviatura de Representational State Transfer APIs, juegan un papel vital en el desarrollo de diversos servicios web. A diferencia de las APIs SOAP, REST no es un protocolo sino un estilo arquitectónico que usa URIs (Identificadores Uniformes de Recursos) y el protocolo HTTP.
Paso 1: Crear un Plan de Prueba de Carga
Para empezar, abre JMeter. Verás que se abrirá una nueva ventana de Plan de Prueba. Si ya tienes JMeter abierto, también puedes seleccionar el botón Nuevo en la barra principal de herramientas para crear un nuevo Plan de Prueba.
Paso 2: Añadir y Configurar el Grupo de Hilos en JMeter
De manera similar a la sección anterior, la ventana del Grupo de Hilos es donde puedes añadir el número de usuarios (Hilos), establecer el tiempo de inicio gradual y el número de iteraciones de la prueba (Conteo de bucles) y editar muchas más propiedades.
Paso 3: Configurar el Muestrador
A continuación, necesitamos añadir el Muestrador. Puedes elegir entre algunos Muestradores preconfigurados en JMeter o seleccionar uno propio. Para este ejemplo, usaremos una opción preconfigurada.
Para iniciar este proceso, haz clic derecho en el Grupo de Hilos, lo cual desplegará una ventana. Elige Añadir, luego Muestrador. Aparecerá una lista de opciones de Muestradores. Para pruebas API, opta por Solicitud HTTP, que abrirá la ventana de configuración donde puedes nombrar tu prueba y configurar los parámetros para tu prueba API REST. Vale la pena mencionar que la ventana de Solicitud HTTP está dividida en secciones Básica y Avanzada. Para esta prueba, nos concentraremos en la configuración Básica. Hay varios campos disponibles, 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 configurar.
Para empezar, ingresa 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, añade la ruta de la API.
Si es una solicitud GET, selecciona GET de la lista de Solicitudes HTTP.
Si tienes ciertos parámetros, como una página específica, puedes agregar esa parte de la URL en el campo Parámetros.
También puedes incluirlo en el campo Ruta, sin embargo, añadiéndolo en el campo Parámetros, tienes opciones adicionales, tales como ¿Codificar URL?, Tipo de Contenido e Incluir Igual?
Para algunas solicitudes, es necesario incluir encabezados HTTP. Para hacer esto, ve a la Solicitud HTTP en la ventana del Plan de Prueba. Haciendo clic derecho aparecerá un menú desplegable; selecciona Añadir, luego Elemento de Configuración. Esto abrirá las opciones disponibles. En este caso, opta por Administrador de Encabezados HTTP. La ventana del Administrador de Encabezados HTTP que aparece te permite ingresar los encabezados de tu API. Después de configurar tus ajustes, procede al siguiente paso.
Paso 4: Añadir Listeners
Para incluir Listeners, simplemente haz clic derecho en el Grupo de Hilos, elige Añadir, luego Listener. Esto desplegará un menú con más de 15 opciones para elegir. Algunas opciones populares son Vista de Resultados en Árbol y Vista de Resultados en Tabla. Es importante notar que los Listeners que ofrecen representación gráfica, como Vista de Resultados en Árbol, pueden consumir más memoria y CPU. Después de añadir tus Listeners, guarda tu plan de prueba.
Paso 5: Ejecuta la Prueba y Visualiza los Resultados
Una vez que hayas configurado y guardado los detalles y ajustes de la prueba de carga, inicia la prueba haciendo clic en el botón Ejecutar en la barra de herramientas. La ventana mostrará los resultados del Muestrador, presentando varios detalles, datos y métricas, tales como latencia, códigos de respuesta, tiempo de conexión, etc., relacionados con tu prueba API REST.
Pruebas API SOAP con JMeter
SOAP (Protocolo Simple de Acceso a Objetos) se distingue de una API REST en que opera bajo su propio protocolo. Al realizar pruebas de carga en APIs SOAP, surgen consideraciones específicas, como seguridad y cumplimiento, requerimientos de ancho de banda (las APIs SOAP suelen demandar más recursos) y aspectos funcionales como la 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 icono de Plantillas en la barra principal de herramientas. Una de las opciones disponibles es “Construir un Plan de Prueba de WebService SOAP.” Elegir esta opción generará y abrirá el Plan de Prueba correspondiente. Como esta es una plantilla, ciertos campos contendrán valores de marcador de posición que requieren que ingreses la información y datos relevantes.
Paso 2: Ingresar Datos
Similar a lo que discutimos en la configuración de APIs REST, necesitarás ingresar el número de usuarios (Hilos), período de inicio gradual y repeticiones (iteraciones de prueba) para la prueba de API SOAP.
Dentro de un subgrupo del Grupo de Hilos principal, puedes acceder a las configuraciones de Solicitud HTTP, similar a la configuración REST API que cubrimos antes. Sin embargo, el diseño de esta sección es diferente, por defecto mostrando el cuerpo de la solicitud SOAP. Esta sección también incluye subsecciones para el Administrador de Encabezados HTTP y Afirmaciones de Respuesta. Similar a la configuración REST API, puedes incorporar otros Elementos de Configuración, como el Administrador de Autorización HTTP, si es necesario incluir detalles de autorización específicos.
Paso 3: Añadir el Muestrador de Solicitud HTTP
Para una prueba de carga API SOAP, querrás agregar el Muestrador de Solicitud HTTP. En esta ventana deberás 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 hayas configurado el Plan de Prueba, necesitarás añadir tus Listeners, que mostrarán los resultados de la prueba. Nuevamente, puedes añadir tantos Listeners como desees y sean apropiados para la prueba de carga API SOAP.
Paso 5: Ejecuta tu Prueba
Una vez que la configuración y ajustes del Plan de Prueba estén listos, finalmente puedes ejecutar tu prueba de carga API SOAP 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 se traduce en mucho tiempo dedicado a configurar pruebas en lugar de ejecutarlas. Aunque JMeter es una solución gratuita y de código abierto, puede que necesites buscar otras herramientas de prueba de carga que ofrezcan mejores características y se ajusten a las necesidades de tu empresa.
LoadView: La Mejor Alternativa a JMeter
LoadView se destaca como una de las principales soluciones de prueba de rendimiento pagadas disponibles hoy en día, ofreciendo una variedad de características. Estas incluyen un grabador de scripts punto y clic, acceso a una red global de servidores inyectores de carga y la capacidad de configurar diversos 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 de manera fluida. A diferencia de JMeter, que está limitado a pruebas de carga a nivel de protocolo, LoadView emplea navegadores reales, permitiéndote evaluar el rendimiento real de sitios, aplicaciones y APIs críticos. Además, LoadView ofrece múltiples opciones, como la inclusión en listas blancas de IPs proxy estáticas o el uso de un agente local, permitiendo pruebas en aplicaciones detrás de tu firewall y brindando mayor flexibilidad para pruebas de rendimiento.
LoadView ofrece informes y paneles de rendimiento fáciles de usar, proporcionando claras perspectivas 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 web, permitiendo 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, lo que lo distingue de algunas otras herramientas en el mercado.
Lleva tus Pruebas de Carga al Siguiente Nivel
Siguiente Nivel
Experimenta características inigualables con escalabilidad ilimitada. Sin tarjeta de crédito, sin contrato.