≡En resumen
- JMeter genera carga simulando usuarios virtuales (hilos) que lanzan peticiones HTTP, a API, bases de datos y otros protocolos.
- Es gratuito, de código abierto y mantenido por la Apache Software Foundation.
- No es un navegador: trabaja a nivel de protocolo y no ejecuta el JavaScript de las páginas.
- La interfaz gráfica sirve para crear el test; las pruebas de carga reales se lanzan en modo línea de comandos.
- Se escribe JMeter, aunque se busque como «jmetter», «j meter» o «jemeter».
01 ¿Qué es JMeter?
La primera versión de JMeter la escribió Stefano Mazzocchi en 1998. Nació dentro del proyecto Jakarta de la Apache Software Foundation y después se convirtió en proyecto propio. Está escrito al 100 % en Java y se distribuye con licencia Apache 2.0, así que es open source y gratuito, también para uso comercial.
Aunque se diseñó para aplicaciones web, hoy prueba muchos otros protocolos. Es habitual encontrarlo escrito como jmetter, j meter, jemeter o jemter: todos se refieren a la misma herramienta.
Web
HTTP y HTTPS: páginas, formularios, sesiones y cookies.
Servicios web
API REST y SOAP, con JSON o XML.
Bases de datos
Consultas vía JDBC a MySQL, PostgreSQL, Oracle y otras.
Mensajería y correo
JMS, SMTP, POP3 e IMAP.
Otros
FTP, LDAP, TCP, comandos del sistema y objetos Java.
02 ¿Para qué sirve JMeter? Tipos de pruebas
| Tipo de prueba | Pregunta que responde | Cómo se configura |
|---|---|---|
| Carga (load test) | ¿Aguanta el tráfico esperado? | Usuarios concurrentes previstos durante un tiempo fijo |
| Estrés (stress test) | ¿Dónde se rompe? | Carga creciente hasta que aparecen errores |
| Picos (spike test) | ¿Soporta un pico repentino? | Subida brusca de usuarios en pocos segundos |
| Resistencia (soak test) | ¿Se degrada con el tiempo? | Carga media durante horas para detectar fugas de memoria |
| Funcional de API | ¿Devuelve lo correcto? | Peticiones con aserciones sobre la respuesta |
03 Cómo funciona JMeter: elementos de un plan de pruebas
Todo en JMeter se organiza en un plan de pruebas (archivo .jmx), un árbol de elementos que se ejecutan en orden. Conocer estos bloques es lo que separa un test útil de uno que da números engañosos.
| Elemento | Para qué sirve | Ejemplo |
|---|---|---|
| Thread Group | Define usuarios, tiempo de subida (ramp-up) y repeticiones | 500 usuarios en 60 segundos, 10 iteraciones |
| Sampler | La petición que se envía | HTTP Request a /api/productos |
| Config Element | Valores comunes: servidor, cookies, cabeceras, datos CSV | HTTP Request Defaults, CSV Data Set Config |
| Timer | Pausas entre peticiones para imitar a una persona | Constant o Gaussian Random Timer |
| Assertion | Comprueba que la respuesta es correcta | Código 200 o texto «Pedido confirmado» |
| Extractor | Captura datos de una respuesta para reutilizarlos | Token de sesión con JSON Extractor |
| Listener | Recoge y muestra los resultados | Summary Report, Aggregate Report |
04 Cómo usar JMeter: instalación y primer test paso a paso
-
1
Instala Java
JMeter necesita Java 8 o superior. Comprueba tu versión con el comando java -version.
-
2
Descarga JMeter
Baja el binario (.zip o .tgz) desde jmeter.apache.org, verifica su checksum y descomprímelo. No necesita instalador.
-
3
Abre la interfaz
Ejecuta jmeter.bat en Windows o bin/jmeter en macOS y Linux.
-
4
Crea el Thread Group
Clic derecho en Test Plan, Add, Threads, Thread Group. Fija usuarios, ramp-up y duración.
-
5
Añade las peticiones
Añade HTTP Request con el servidor, el método y la ruta. También puedes grabar una navegación con el HTTP(S) Test Script Recorder.
-
6
Valida y guarda
Añade aserciones, prueba con 1 usuario y el listener View Results Tree, y guarda el plan como .jmx.
-
7
Lanza la carga por consola
Ejecuta jmeter -n -t plan.jmx -l resultados.jtl -e -o informe para correr sin interfaz y generar el informe HTML.
-
8
Analiza el informe
Revisa percentiles de tiempo de respuesta, rendimiento (peticiones por segundo) y porcentaje de errores.
05 Cómo interpretar los resultados de JMeter
| Métrica | Qué mide | Qué vigilar |
|---|---|---|
| Average | Tiempo medio de respuesta | Engaña: una media buena puede esconder picos |
| 90th / 95th / 99th pct | Tiempo por debajo del cual está el 90, 95 o 99 % de las peticiones | La métrica que mejor refleja la experiencia real |
| Throughput | Peticiones por segundo que procesa el sistema | Si deja de crecer al subir usuarios, has tocado techo |
| Error % | Porcentaje de peticiones fallidas | Cualquier valor por encima de 0 merece revisión |
| Latency | Tiempo hasta el primer byte de respuesta | Valores altos apuntan al servidor o a la base de datos |
Con 300 usuarios, el percentil 95 del endpoint de búsqueda es de 450 ms y no hay errores. Con 600 usuarios, sube a 4,2 s, el throughput se estanca en 180 peticiones por segundo y aparecen errores 503. Conclusión: el cuello de botella está entre 300 y 600 usuarios; toca revisar consultas a la base de datos, caché y recursos del servidor. Si el problema está en la carga de la página, el trabajo pasa por mejorar la velocidad web.
06 Buenas prácticas para que tus pruebas con JMeter sean fiables
- ✓Define antes el objetivo: usuarios esperados, tiempo de respuesta aceptable y tasa de errores máxima.
- ✓Prueba en un entorno lo más parecido posible a producción, con datos realistas.
- ✓Usa CSV Data Set Config para que cada usuario virtual tenga credenciales y búsquedas distintas.
- ✓Añade timers: usuarios que no hacen pausas generan una carga irreal.
- ✓Extrae tokens y parámetros dinámicos (correlación) en lugar de dejarlos fijos en el guion.
- ✓Desactiva los listeners gráficos durante la carga y analiza el archivo .jtl después.
- ✓Vigila CPU y memoria de la máquina que genera la carga: si se satura ella, los resultados no valen.
- ✓Si una sola máquina no basta, reparte la carga con el modo distribuido de JMeter entre varios equipos.
JMeter se amplía con plugins: el Plugins Manager de la comunidad añade grupos de hilos más flexibles, gráficos adicionales y nuevos samplers. Úsalos con moderación y documenta qué versión empleas, para que cualquier persona del equipo pueda repetir el test.
07 JMeter vs. k6, Gatling y Locust
| Herramienta | Cómo se escriben los tests | Punto fuerte |
|---|---|---|
| Apache JMeter | Interfaz gráfica y archivos .jmx | Muchos protocolos, gran comunidad y plugins |
| Grafana k6 | Scripts en JavaScript | Encaja en CI/CD y en equipos de desarrollo |
| Gatling | Código en Java, Scala o Kotlin | Muy eficiente generando carga e informes claros |
| Locust | Scripts en Python | Sencillo de programar y de distribuir |
JMeter sigue siendo la opción más completa cuando necesitas probar varios protocolos o cuando el equipo prefiere una interfaz a escribir código. Si tu proyecto es una plataforma con miles de usuarios, las pruebas de carga deberían formar parte del ciclo de desarrollo de aplicaciones web a medida desde el principio, no al final.
Preguntas frecuentes sobre JMeter
Es una herramienta de código abierto de la Apache Software Foundation para hacer pruebas de carga y rendimiento. Simula muchos usuarios concurrentes contra webs, API, bases de datos y otros servicios.
Sirve para saber cuántos usuarios soporta un sistema, cómo responde bajo carga y dónde están sus cuellos de botella, antes de un lanzamiento o de un pico de tráfico.
Sí. Se distribuye con licencia Apache 2.0, así que es gratuito y de código abierto, también para uso comercial.
La última versión estable es Apache JMeter 5.6.3, publicada el 9 de enero de 2024 y todavía vigente en septiembre de 2026. Requiere Java 8 o superior.
Solo la parte del servidor. JMeter no ejecuta JavaScript ni renderiza la página, así que para la velocidad percibida en el navegador usa PageSpeed Insights o Lighthouse.
No para tests básicos: se crean desde la interfaz gráfica. Para lógica avanzada se usan scripts en Groovy y conocimientos de HTTP.
El nombre correcto es JMeter, con una sola t. Jmetter, j meter o jemeter son errores de escritura frecuentes.
Fuentes consultadas
Sobre el autor
Germán Gutiérrez
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil en LinkedIn ↗