Aug 11
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.








August 17th, 2007 at 21:31
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
August 20th, 2007 at 09:42
*Gracias* por la cuenta que me trae ;-). Voy a hacer la prueba con web-services …
February 15th, 2008 at 10:33
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