Apache JMeter
Hacía ya tiempo que quería escribir algo sobre Apache JMeter, y aprovecharé que anoche estuve haciendo algunas pruebas con Opina para explicar cómo realizar un prueba de rendimiento. Como según se indica en la página de la herramienta, es una aplicación de escritorio desarrollada en java para realizar pruebas de rendimiento. Diseñada originalmente para trabajar con aplicaciones web pero en sus últimas versiones se ha ido ampliando el catálogo de funcionalidades y se puede usar para trabajar con otro tipo de aplicaciones.
La prueba que he preparado consiste en coger un cuestionario que tenía previamente preparado y simular que “alguien” lo está cumplimentando múltiples veces. Para simular este proceso, lo primero que necesitamos conocer son las peticiones HTTP que se tienen que realizar sobre Opina. En esta ocasión esto hubiera resultado muy sencillo porque el cuestionario carece de autenticación y proceso de registro, simplemente:
- Solicitar el cuestionario
- Nos redirige a una pantalla con la bienvenida y descripción del cuestionario
- Nos muestra la única página con la que cuenta este cuestionario. Cumplimentarlo.
- Y confirmar que hemos terminado para que nuestros datos se almacenen.
En lugar analizar la comunicación entre el cliente web y la aplicación, JMeter hará el trabajo por nosotros. La herramienta se encargará de grabar las peticiones que corresponden con la secuencia antes descrita. Los pasos a seguir son:
- Ejecutamos JMeter.

- Sobre el plan de pruebas añadimos un grupo de hilos
- Sobre el banco de pruebas añadimos un elemento NoDePrueba, concretamente Servidor Proxy HTTP que debemos configurar:
- Nombre: indicaremos un nombre para el proxy
- Puerto: puerto en el que estará disponible el servicio de proxy
- Luego encontraremos varias opciones (capturar cabeceras http, establecer Keep-alive, etc) esto dependerá de lo que se pretenda realizar. En esta ocasión he seleccionado las dos primeras.
- Controlador objetivo: Plan de pruebas -> Grupo de hilos
- Patrones a incluir: .* (lo incluiremos todo)

- Sobre el grupo de hilos añadimos un elemento de configuración: Valores por defecto para petición HTTP
- Nombre: un nombre de referencia para esta configuración
- Nombre del servidor o IP: servidor sobre el que realizaremos las peticiones, en mi prueba: www.ebabel.info
- Puerto: puerto sobre el que se realizarán las peticiones (por defecto es el 80), en mi prueba: 80
- Protocolo: HTTP o HTTPS, en mi prueba: HTTP. Si las peticiones tuvieran que realizar sobre HTTPS, algunas de las opciones de monitorización (cabeceras HTTP, etc) se perderían.
- Path: camino a partir del cual se realizarán las peticiones.
- Ahora debemos configurar nuestro navegador para que use el servidor proxy HTTP que hemos configurado.
- Arrancamos el servidor proxy HTTP desde la herramienta y con nuestro navegador reproducimos el proceso que deseamos simular. Todas las peticiones irán quedando registradas en nuestro grupo de hilos que previamente hemos creado.

- Esto depende un poco del tipo de prueba, pero si las pruebas se están realizando sobre una aplicación en la que haya control de sesiones, recomiendo configurar un gestor de cookies HTTP. Para esta prueba lo he configurado haciendo que se limpien las cookies por cada iteración.
- El número de iteraciones podemos configurarlo en el grupo de hilos.
En breve publicaré un screencast con la prueba. Para cualquier duda, un correo o un comentario.
He preparado un screencast con el ejemplo de uso que exponía en el anterior post sobre Apache JMeter. La verdad es que el screencast no está demasiado trabajado, pero la experiencia preparando el screencast ha sido un poco frustante. Despu&e
*Gracias* por la cuenta que me trae
. Voy a hacer la prueba con web-services …
El how-to me parece muy bueno y sobre todo útil. Acabo de probarlo sobre una aplicación web en cuyo funcionamiento entra en juego AJAX y a primera vista parece que está capturando bien todas las peticiones.
Solo una cosilla, el proxy que hay que configurar en el navegador es 127.0.0.1, ese pequeño detalle se te fue
El link a Opina (http://trac.ebabel.info/projects/eBabel) tira “Environment not found”
Saludos
Hola Gustavo:
Muchas gracias, actualizaré la referencia.
Un saludo
Buenas, tengo un duda los scripts de prueba que tengo que realizar para jmeter, como los hago?? Gracias, un saludo!
@PATRICIA
Si explicas más detalladamente lo que necesitas, quizás pueda ayudarte.
Un saludo
Pues tengo que probar en JMeter una serie de pasos de una página web, de la cual no tengo nada, me refiero a nada de código, me valdría utilizar jmeter con las urls correspondientes y probar mediante eso, o tendria que crearme los scripts de prueba?? Gracias
@PATRICIA
Precisamente esta entrada describe los pasos que debes seguir para grabar una secuencia de peticiones HTTP con el objetivo de reproducirlas posteriormente.
Sigo sin entender tu problema.
Muchas gracias, una ultima pregunta, el path en mi caso seria la url de la página que quiero comprobar?? y en el nombre del servidor o ip, que pondria exactamente ,la ip que estoy utilizando en mi equipo, o un servidor local… gracias de nuevo por su atención
@PATRICIA
Efectivamente. En el caso de http://www.mihost.es/app1/usuario/12/cv, “app1/usuario/12/cv” sería el path.
Eso depende del entorno, pero debes indicar el host o IP donde se encuentra la aplicación web o servicio que intentas procesar.
Te recomiendo que veas:
http://www.manuelrecena.com/blog/archives/93
Un saludo
Gracias, entonces, es necesario hacerlo con un servidor local, no??
@PATRICIA
No, no es necesario. Tengo la sensación de que no has entendido como funciona. JMeter, actuando como proxy, lo que hace es “grabar” tus peticiones para posteriormente reproducirlas.
Un saludo
Si lo entendí, lo único que antes de mirarme el funcionamiento de jmeter, me habian comentado que se probaba mediante scripts de prueba, no desde la url de la página directamente.
Perdona de nuevo, pero al configurar el proxy tal como dice en el screencast, me dice que: Firefox está configurado para usar un servidor proxy que está rechazando las conexiones. Sabria decirme a que se debe? Gracias, un saludo
@PATRICIA
Comprueba que efectivamente hay un proxy escuchando en el puerto que indicaste. Simplemente tendrías que hacer un telnet a ese host y esa ip.
Un saludo
ahhh, un segundo que creo pq es el error, si la página es https, seria el mismo procedimiento???
Perdona por las molestias, pero es por el protocolo, he probado una web http, y no he tenido problemas pero con la https me sale en error del proxy que te comenté antes, porque podrá ser??
Buenas, siento molestarle tanto, pero tengo una presentación esta semana. Las grabaciones jmeter no podia hacerlas porque el protocolo utilizado es https, por lo tanto he utilizado Badboy para grabarlas y despúes exportarlas a jmeter. Hasta ahí todo perfecto, el problema es que el seguimiento será distinto no? o también tengo que crear un grupo de hilos y demás pasos que anteriormente has citado… porque ahora no es necesario navegar para obtener las grabaciones sino que tengo que abrir un fichero. Gracias, espero su respuesta
Entre “the grinder” y “jmeter”. ¿Con cual te quedarías en la actualidad?
Yo hace año y medio tuve que elegir y elegí “the grinder”, pero veo que últimamente los clientes quieren jmeter y no se si habrá mejorado….
quiero saber si jmeter permite probar el marco de navegación de un aplicación web y como lo hace?
@Juanjo
Juanjo, nosotros usamos los dos, pero sí es cierto que le hemos dedicado más tiempo a The Grinder. Nos justa el potencial que tiene el jython.
Un saludo
@constanza lópez
Podrías ser más explícita?
Un saludo
Estimados
Necesito realizar de pruebas a un sitio que tiene ajax con gwt, grabe el escenario de prueba con el jmeter 2.4 y badboy, pero al revisar las peticiones guardadas no veo los datos que se transfieren entre paginas si alguien tiene alguna idea del problemas agradeceré su ayuda
@Sergio
Hola Sergio:
No entiendo cuando mencionas “los datos que se transfieren entre las páginas”.
Un saludo
Me refiero a los datos que se envian por los metodos post o get
saludos
Hola a todos.
Quisiera saber donde puedo conseguir info o algun tutorial que explique el significado de los reportes que genera JMeter o la manera en como interpretar esos datos, para saber por ejemplo si mi aplicacion tiene o no buen rendimiento.
@daniel carpio
Hace tiempo que no uso la herramienta y no estoy al tanto de las novedades, pero quizás pueda ayudarte a entender alguna gráfica concreta.
Otra opción que te recomiendo es que preguntes en este grupo:
https://groups.google.com/group/ecosistemas-software
Un saludo
@Manuel Jesús Recena Soto Gracias por responder. Como ya había comentado quisiera saber específicamente la interpretación de los resultados de reportes como: Aggregate Graph, Ver Árbol de Resultados, Ver Resultados en Árbol, Visualizador Spline y Gráficos de Resultados, los cuales puedo ver que son los más usados según lo que estuve revisando.
@daniel carpio
Sin tener unos ejemplos delante, difícilmente podré ayudarte. Recuerdo que en su momento también nos costó interpretar algunos resultados, pero haciendo pruebas entendimos lo que representaba.
Siento no poderte ayudar.
Un saludo