¿Qué es JMeter?
Apache JMeter es una herramienta gratuita de pruebas de carga en Java. Cómo funcionan los planes, el modo CLI y los errores comunes.
¿Qué es Apache JMeter?
Apache JMeter es una herramienta gratuita y de código abierto para pruebas de carga, escrita en Java. Se crea un plan de pruebas, normalmente en su interfaz de escritorio, se guarda como archivo .jmx y se ejecuta para simular muchos usuarios sobre una aplicación web, una API, una base de datos u otro servidor, mientras registra tiempos de respuesta, rendimiento y errores.
Nació para aplicaciones web y hoy cubre más. Su manual de usuario menciona pruebas de web (HTTP/HTTPS), FTP, JDBC, LDAP, Java, JUnit y JMS (JDBC necesita el driver de su base de datos y JMS un jar cliente de su proveedor).
Cómo se construye una prueba de JMeter
- Test Plan: el contenedor de todo, guardado como archivo
.jmx. - Thread Group: cada hilo es un usuario virtual. Se define el número de hilos, el tiempo de ramp-up y cuánto o cuántas veces repiten. Vea la guía sobre el periodo de ramp-up en JMeter.
- Samplers: las peticiones en sí: HTTP Request, JDBC Request, JMS Publisher, etc.
- Config elements y timers: valores compartidos, CSV Data Set Config para los datos de prueba y temporizadores que simulan el tiempo de reflexión entre peticiones.
- Assertions: comprobaciones de cada respuesta, como el código de estado o un texto en el cuerpo.
- Listeners: recogen y muestran resultados. Útiles al depurar, pero conviene desactivar los pesados en una ejecución de carga real.
Ejemplo: una prueba de checkout
Quiere saber si el inicio de sesión y el checkout aguantan 200 usuarios. En un Thread Group configura 200 hilos con 120 segundos de ramp-up, añade un HTTP Request de login y otro de checkout, lee los usuarios de un archivo CSV y añade una aserción de que cada respuesta sea un 200. Depura el script en la interfaz con uno o dos usuarios y luego lo lanza desde la línea de comandos:
jmeter -n -t checkout.jmx -l results.jtl -e -o report-n ejecuta sin interfaz, -t indica el plan de pruebas, -l el archivo de resultados, y -e -o generan el informe HTML en una carpeta que no debe existir o debe estar vacía. Según la documentación de JMeter, la GUI sirve para crear y depurar el script y las pruebas de carga deben ejecutarse sin interfaz. La versión actual es la 5.6.3 y requiere Java 8 o superior (jmeter.apache.org).
Errores comunes
- Generar la carga desde la GUI. No está pensada para eso. Use la línea de comandos, como explica la guía del modo non-GUI de JMeter.
- Sobrecargar el generador de carga. Si a la máquina que ejecuta JMeter se le acaban la CPU o el heap, está midiendo su portátil y no su servidor. Vigílela durante la ejecución o reparta la carga entre varias máquinas.
- Datos y tokens fijos. Repetir un usuario con un mismo ID de sesión prueba su caché. Parametrice los usuarios y extraiga los valores dinámicos, como los tokens CSRF.
- Sin tiempo de reflexión. Usuarios que nunca se detienen envían muchas más peticiones que los reales.
- Mirar solo la media. Consulte los percentiles; la entrada sobre latencia explica por qué.
- Saltarse la prueba con un solo usuario. Un script roto da un "resultado" muy rápido, lleno de errores.
JMeter frente a k6
JMeter prioriza la interfaz gráfica y guarda las pruebas en XML, con amplia cobertura de protocolos. k6 prioriza el código: sus pruebas en JavaScript encajan bien en una pull request. La comparativa k6 vs JMeter repasa las diferencias en detalle.
Dónde encaja JMeter en las pruebas
El mismo script sirve para varios objetivos cambiando solo el Thread Group: una prueba de carga constante, un salto brusco para el spike testing o llamadas repetidas a un endpoint para las pruebas de API.
Ejecutar scripts de JMeter con LoadFocus
Una sola máquina genera una carga limitada. LoadFocus JMeter Load Testing ejecuta su .jmx desde 25 regiones en la nube: sube el archivo, define usuarios virtuales, duración y ramp-up en el navegador, y los archivos CSV y los plugins se incluyen. El plan Free permite hasta 10 usuarios concurrentes y pruebas de 60 segundos; las pruebas mayores requieren un plan de pago (vea los precios).
Antes de una ejecución grande, el validador gratuito de scripts JMeter revisa un .jmx en busca de errores de sintaxis y de configuración. Si aún no tiene script, los conversores gratuitos generan uno a partir de un comando cURL, un archivo HAR, una especificación OpenAPI o una colección de Postman.
Preguntas frecuentes: Apache JMeter
¿JMeter es gratis?
Sí. Apache JMeter es software de código abierto con licencia Apache. Solo paga por las máquinas donde lo ejecuta o por un servicio en la nube que lo ejecute por usted.
¿JMeter necesita Java?
Sí. JMeter es una aplicación Java y la versión 5.6.3 requiere Java 8 o superior. El manual recomienda un JDK en lugar de un JRE, porque grabar HTTPS necesita el keytool del JDK.
¿JMeter es solo para sitios web?
No. Empezó con aplicaciones web, pero también puede probar FTP, bases de datos JDBC, LDAP, JMS y servicios basados en Java.
¿Por qué no debo lanzar una prueba de carga en modo GUI?
La GUI consume recursos que la prueba necesita y está pensada para crear y depurar. Lance la carga en modo non-GUI con -n -t.
¿Puedo ejecutar mi script de JMeter en la nube sin servidores propios?
Sí. Suba el .jmx a LoadFocus, elija regiones y carga, y se aprovisionan los generadores de carga para la ejecución.
Términos relacionados
- Largest Contentful Paint (LCP): definición, umbrales y soluciones
- ¿Qué es la latencia?
- ¿Qué es el lazy loading (carga diferida)?
- ¿Qué es el load testing? Prueba de carga explicada
- Compresión sin pérdida: definición, algoritmos y web
- Compresión con pérdida
- ¿Qué son las conexiones de red en la velocidad de página?
- ¿Qué es la monitorización de red?
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus, la misma plataforma que potencia todo lo que acabas de leer.