Tutorial de Pruebas de Carga con JMeter
Descripción general de las pruebas de carga con JMeter
Toda aplicación web tiene una capacidad máxima de carga, y superarla puede provocar desaceleraciones, errores o ineficacia general. 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 API que se espera manejen un tráfico significativo de usuarios. Para garantizar que sus aplicaciones puedan funcionar bajo condiciones de tráfico máximo o sostenido, es esencial emplear herramientas de pruebas de rendimiento. Apache JMeter es una opción popular para este propósito, y si es nuevo en las pruebas de rendimiento, podría preguntarse ¿qué es JMeter? ¿Y cómo funciona JMeter? Veremos JMeter y cómo utilizarlo para pruebas de rendimiento.
¿Qué es una prueba de carga?
La prueba de carga es un tipo de prueba de rendimiento para determinar cómo se comporta su aplicación web durante condiciones normales y máximas 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, degradación y escalabilidad.
Herramientas para pruebas de carga
Las herramientas para pruebas de carga son sumamente importantes para optimizar sus necesidades de prueba de carga y mejorar el rendimiento digital. Hoy en día, existe una amplia variedad de herramientas y plataformas en el mercado, con varias características. Hay muchas herramientas para pruebas de carga como:
-
- LoadView
- Apache JMeter
- WebLOAD
- LoadRunner
- Tricentis NeoLoad
- LoadNinja
Para esta guía, nos centraremos en 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 como JMeter, es un software de código abierto muy utilizado, diseñado como una aplicación 100% Java pura 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 test de rendimiento debido a su amplia documentación, fuerte soporte comunitario y mejores prácticas establecidas. Además, al ser gratuito y de código abierto, es una opción rentable, pero dado que es 100% Java, puede requerir que su equipo dedique 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, como simular interacciones de usuarios, monitorear el rendimiento del servidor y analizar tiempos de respuesta.
Las pruebas de carga con JMeter están diseñadas para realizar pruebas de carga sobre el comportamiento funcional y medir su rendimiento. Muchos equipos también integran las pruebas JMeter en pipelines CI/CD para ejecutar controles de rendimiento durante compilaciones y despliegues. Puede usar JMeter para analizar y medir el rendimiento de aplicaciones o servicios web. Al analizar los datos recopilados y generar informes, puede observar el comportamiento de la aplicación e identificar cuellos de botella en el rendimiento, proporcionando información valiosa sobre áreas que requieren mejoras en la aplicación.
¿Por qué usar JMeter?
- Open source: 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 plataformas.
- 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 simularlo y luego reproducir la grabación.
- Informes personalizables: Visualiza los resultados de tu prueba en diferentes formatos, como gráficos, tablas o archivos de árbol y registro.
- Soporte comunitario: Hay 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 limitada en la nube por defecto: JMeter típicamente 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 la favorita entre los evaluadores. Para empezar, es completamente gratuita y de código abierto, lo que significa que no debe preocuparse por limitaciones presupuestarias ¡es accesible para todos! Además, es lo suficientemente potente como para simular escenarios del mundo real que le proporcionan una imagen clara de cómo su aplicación funciona bajo diferentes tipos de cargas.
Una de las mejores cosas de JMeter es su escalabilidad. Ya sea que esté ejecutando pruebas pequeñas o simulando tráfico a gran escala, puede manejarlo todo sin problemas. Y no olvidemos sus completas funciones de informes y análisis. Estas herramientas le ayudan a localizar problemas de rendimiento desde el principio, facilitando mucho la optimización de su aplicación y mantener su funcionamiento suave.
Una de las cosas que nos encanta de JMeter es lo fácil que es usarlo. ¡No necesita ser un experto en programación para crear escenarios de prueba complejos, ya que JMeter lo mantiene simple e intuitivo! Además, cuenta con funciones integradas de informes y visualización que facilitan el análisis de resultados y la identificación de cuellos de botella en el rendimiento. En general, JMeter es una herramienta confiable y fácil de usar que ayuda a garantizar que sus aplicaciones puedan manejar cualquier situación que se les presente.
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 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 necesita tener Java 8 o una versión superior instalada en su sistema. Confirme que su sistema operativo sea compatible con JMeter. JMeter está diseñado para funcionar en varios sistemas operativos, incluidos 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 asegura una configuración fluida 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 cumpla con todos los requisitos necesarios, proceda a descargar la última versión 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 proporcionan flexibilidad para la configuración manual y compilación por parte de desarrolladores o equipos. Normalmente, se prefieren las versiones binarias por su facilidad de instalación. Hay disponibles diferentes tipos de archivos para descargar, como .zip y .tgz.
Una vez que haya seleccionado su versión preferida, descárguela en su sistema. Luego puede abrir el archivo, moverlo a una ubicación designada o crear una carpeta nueva para acceder fácilmente en el futuro. Inicie el proceso de extracción, que puede tomar unos minutos. Tenga en cuenta que los pasos de instalación pueden variar según su sistema operativo, pero una vez instalado, la funcionalidad de JMeter se mantiene constante.
Paso 3: Crear un plan de prueba de carga
Los usuarios de JMeter pueden comenzar creando su plan de prueba de carga desde cero o también seleccionar entre varias plantillas de planes de prueba ubicadas en el menú desplegable Archivo. Las plantillas incluyen Plan de prueba SOAP WebService, Plan básico y avanzado de pruebas web, Plan de prueba FTP (Protocolo de transferencia de archivos), Plan de pruebas funcionales y muchos otros. Estas plantillas de prueba incluirán todos los elementos, secciones y campos específicos necesarios que utilizará para crear y construir su plan de prueba de carga.
Para crear un plan de prueba, simplemente navegue a Archivo y seleccione Nuevo o seleccione el botón Nuevo en la barra de herramientas. Es importante tener en cuenta que debe ejecutar JMeter en modo GUI para crear el plan de prueba. La CLI, o interfaz de línea de comandos, se utiliza para ejecutar la prueba de carga. A continuación, hablaremos sobre cómo especificar el número de usuarios para su prueba de carga, lo que también se conoce como 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 en Plan de prueba, pase el cursor sobre Hilos (Usuarios) y haga clic en Grupo de hilos.
En el cuadro de diálogo de Grupo de hilos que aparece, puede editar varias propiedades del hilo, como Número de hilos (usuarios), Periodo de incremento (en segundos) y Conteo de ciclos (iteraciones de la prueba). Además, especifique acciones como retrasos, establezca las horas de inicio y parada de la prueba y defina respuestas a errores del muestreador (Sampler). Las propiedades del hilo son:
-
- Número de hilos: Representa la cantidad de usuarios virtuales que se conectan al servidor.
- Periodo de incremento: Indica el tiempo que JMeter tarda en poner en estado de ejecución el número especificado de hilos.
- Conteo de ciclos: Indica el número de veces que cada hilo ejecuta la tarea.
- Conteo de ciclos infinito: Cuando está activado, ignora el conteo de ciclos, causando un ciclo infinito hasta que se detiene manualmente.
- Retrasar 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 programación para programar pruebas en tiempos 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 muestreador en JMeter
En JMeter, los Samplers 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í es donde ingresa detalles adicionales como el Protocolo (HTTP/S), Nombre del servidor o IP, Ruta (para una página web específica) y el tipo de solicitud, como GET, POST, HEAD, PUT, etc., que se pueden usar para pruebas de carga de API.
Paso 6: Configurar los oyentes (Listeners)
Para analizar los resultados del muestreador en JMeter, el siguiente paso implica configurar lo que se conoce como Listeners. En la ventana del plan de prueba de JMeter, puede elegir entre varios Listeners, incluidos Reporte Resumen, Gráfico Agregado, Ver Árbol de Resultados, Ver Resultados en Tabla y muchos otros, para inspeccionar y analizar a fondo los resultados de la prueba. Además, tiene la flexibilidad de añadir múltiples Listeners a un plan de prueba en 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 una configuración extensa, no se requiere configuración adicional. Sin embargo, si necesita una prueba que se asemeje estrechamente a las acciones de su usuario, deberá utilizar el Grabador de Script 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, grabando sus acciones a través de solicitudes HTTP/S. También puede incluir múltiples controladores de grabación por página, lo que le ahorra tiempo para no tener que añadir manualmente cada solicitud.
La desventaja es que su grabación se realiza con solicitudes HTTP/S y no se graba desde un navegador real desde la perspectiva del usuario. También puede grabar navegadores usando el servidor proxy de JMeter, pero este puede ser un proceso tedioso y difícil. Si busca una solución más sencilla e intuitiva, puede optar por usar LoadView, que tiene el Grabador EveryStep Web. El grabador de LoadView proporciona un scripting de apuntar y hacer clic usando navegadores reales sin la configuración compleja y que consume tiempo que requiere 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 simplemente puede 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 resultados de la prueba de carga
Verá los resultados de la prueba en la tabla, aunque esto puede depender del listener que utilice. 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 ubicaciones de errores o casos de tiempos lentos de carga.
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 las pruebas de diferentes APIs, como SOAP y REST APIs, 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 de API y discutiremos consideraciones importantes al realizar pruebas de API usando JMeter.
Pruebas REST API con JMeter
Las APIs RESTful, abreviatura de Representational State Transfer APIs, juegan 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 JMeter abierto, 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 agregar el número de usuarios (hilos), establecer el tiempo de ramp-up y el número de iteraciones de prueba (Conteo de ciclos) y editar muchas más propiedades.
Paso 3: Configurar muestreador
A continuación, necesitamos agregar el muestreador. Puede elegir entre algunos muestreadores 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 hará aparecer un menú desplegable. Elija Añadir, luego Muestreador. Aparecerá una lista de opciones de muestreador. Para pruebas de API, opte por Solicitud HTTP, abriendo la ventana de configuración donde puede nombrar su prueba y configurar los parámetros para su prueba REST API. 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 comenzar, ingrese la URL de la API en el campo Nombre del servidor o IP (solo el nombre de dominio), junto con el protocolo apropiado, y en el campo Ruta, agregue la ruta de la API.
Si 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 porción del URL en el campo Parámetros.
También puede incluirlo en el campo Ruta, sin embargo, al añadirlo en Parámetros, tiene opciones adicionales como ¿Codificar URL?, Tipo de contenido y ¿Incluir signo igual?
Para ciertas solicitudes, es necesario incluir encabezados de solicitud. Para lograr esto, vaya a la Solicitud HTTP en la ventana del plan de prueba. Haciendo clic derecho aparecerá un menú desplegable; seleccione Añadir, luego Elemento de configuración. Esto abre las opciones disponibles. En este caso, opte por el Administrador de encabezados HTTP. La ventana del Administrador de encabezados HTTP le permite ingresar sus encabezados API. Tras 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 mostrará un menú desplegable con más de 15 opciones para seleccionar. Las opciones populares incluyen Ver Árbol de resultados y Ver resultados en tabla. Es importante notar que los listeners que ofrecen representación gráfica, como Ver Árbol de resultados, pueden consumir más memoria y CPU. Después de 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 muestreador, presentando varios detalles, datos y métricas — como latencia, códigos de respuesta, tiempo de conexión, etc. — relativos a su prueba REST API.
Pruebas SOAP API con JMeter
SOAP (Simple Object Access Protocol) se distingue de una REST API ya que opera bajo su propio protocolo. Al realizar pruebas de carga en APIs SOAP, surgen consideraciones específicas, incluyendo seguridad y conformidad, requerimientos de ancho de banda (las APIs SOAP suelen demandar más recursos) y aspectos funcionales como lógica de reintentos, ausente en APIs REST.
Paso 1: Crear un plan de prueba de carga
JMeter ofrece una variedad 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.” Al elegir esta opción, se 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 ingrese los datos e información relevantes.
Paso 2: Introducir datos
De manera similar a lo discutido en la configuración de REST API, deberá ingresar el número de usuarios (hilos), periodo de ramp-up y ciclos (iteraciones de prueba) para la prueba SOAP API.
Dentro de un subgrupo del grupo principal de hilos, puede acceder a la configuración de Solicitud HTTP, similar a la configuración REST API que cubrimos anteriormente. Sin embargo, el diseño de esta sección difiere, mostrando por defecto el cuerpo de solicitud SOAP API. Esta sección también incluye sub-secciones para el Administrador de encabezados HTTP y Afirmaciones de respuesta. Al igual que en la configuración REST API, puede incorporar elementos de configuración adicionales, como el Administrador de autorización HTTP, si necesita incluir detalles de autorización específicos.
Paso 3: Agregar muestreador de solicitud HTTP
Para una prueba de carga SOAP API, deberá agregar el muestreador de solicitud HTTP. En esta ventana, necesitará 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, que mostrarán los resultados de su prueba. Nuevamente, puede agregar tantos listeners como desee y que considere apropiados para la prueba de carga SOAP API.
Paso 5: Ejecutar su prueba
Una vez configurado y establecidos los ajustes de su plan de prueba, finalmente puede ejecutar su prueba de carga SOAP API y revisar los resultados una vez que haya finalizado.
Conclusión
Para este momento, ya debería saber qué es JMeter, cómo hacer pruebas de carga con JMeter y cómo realizar pruebas de carga para APIs con JMeter. Como puede ver, configurar pruebas de carga con JMeter implica muchos diferentes pasos y opciones de configuración, lo que se traduce en mucho tiempo invertido en configurar pruebas, más que en ejecutarlas. Aunque JMeter es una solución de código abierto y gratuita, puede que necesite buscar otras herramientas de pruebas de carga que ofrezcan mejores características y se adapten a las necesidades de su negocio.
LoadView: La mejor alternativa a JMeter
LoadView se destaca como una de las mejores soluciones pagas de pruebas de rendimiento disponibles hoy en día, ofreciendo una variedad de características. Estas incluyen el grabador de scripts point-and-click EveryStep, acceso a una red global de servidores inyector 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 problemas. A diferencia de JMeter, que está limitado a pruebas de carga a nivel de protocolo, LoadView utiliza navegadores reales, lo que le permite evaluar el rendimiento real de sitios críticos, aplicaciones y APIs. Además, LoadView ofrece múltiples opciones, como la lista blanca de IPs estáticas de proxy o el uso de un agente en sitio, permitiendo pruebas en aplicaciones detrás de su firewall y brindando mayor flexibilidad para las pruebas de rendimiento.
LoadView ofrece informes y paneles de rendimiento fáciles de usar, con perspectivas claras sobre los factores que contribuyen al rendimiento subóptimo. Además, incluye un video de referencia para pruebas de páginas web y aplicaciones, 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, sin importar el plan elegido, lo que lo diferencia de algunas otras herramientas en el mercado.
Lleve sus pruebas de carga al siguiente nivel
Siguiente Nivel
Experimenta características inigualables con escalabilidad ilimitada. Sin tarjeta de crédito, sin contrato.