Documente Academic
Documente Profesional
Documente Cultură
Jmeter es una herramienta Java dentro del proyecto Jakarta, que permite realizar
Pruebas de Rendimiento y Pruebas Funcionales sobre Aplicaciones Web.
Descarga:
http://jakarta.apache.org/jmeter/
Ej.: C:\java\jakarta-jmeter-2.0.2
Necesitamos tener una Maquina Virtual Java 1.3 o superior instalada en nuestro
sistema operativo (Windows en nuestro caso). En caso de problemas definir la
variable JAVA_HOME apuntando al path del JDK que tengamos instalado en
nuestra máquina, JAVA_HOME=C:\j2sdk1.4.1_02 , y añadir el directorio bin de
Java al path del sistema:
PATH=%JAVA_HOME%/bin;%PATH%
JMeter permite realizar pruebas Web clásicas, pero también permite realizar test
de FTP, JDBC, JNDI, LDAP, SOAP/XML-RPC, y WebServices (en Beta). JMeter
también permite la ejecución de pruebas distribuidas entre distintos ordenadores,
para realizar pruebas de rendimiento.
• Elementos jerárquicos:
o Listeners (elementos en escucha)
o Config Elements (elementos de configuración)
o Post-processors (post-procesadores)
o Pre-processors (pre-procesadores)
o Assertions (afirmaciones)
o Timers (cronómetros)
• Elementos ordenados:
o Controllers (controladores)
o Samplers (agentes de pruebas)
A continuación mostramos un ejemplo de uso, para que sea más fácil entender los
conceptos que maneja JMeter.
Sobre el Test Plan, pulsando botón derecho Add->Thread Group creamos un
“Thread Group” o grupo de hilos de ejecución para definir el número de usuarios a
simular:
JMeter, nos permite crear “Default http Request Properties”, para definir las
propiedades por defectos que tendrán nuestras peticiones http representadas por
“http Request Elements”. De esta forma cuando vayamos definiendo las distintas
request, no será necesario rellenar todos los campos de información, ya que
heredarán las propiedades por defecto definidas aquí. Por ejemplo, el nombre del
servidor, el puerto, el protocolo, y algún valor que sea necesario siempre arrastrar
en la request (cosa no habitual). Para ello seleccionamos el controlador
“Peticiones Home”, y con el botón derecho elegimos Add->Config Element->HTTP
Request Defaults
En nuestro caso esta configuración por defecto, se aplicará a todas las peticiones
que cuelguen de la rama “Peticiones Home”.
Soporte para COOKIES: Las aplicaciones Web suelen utilizar Cookies para
guardar información sobre la navegación del usuario. Para simular dicho
comportamiento, JMeter también nos propociona un elemento de soporte de
Cookies. Basta con añadir un “http Cookie Manager” al “Thread Group”.
Esto nos permite controlar las cookies, pudiendo borrar la cookie en cada iteración
del test, o establecer los valores que deseemos para las cookies.
Vamos a crear un controlador simple (“Simple Controller”) para agrupar una serie
de peticiones, y le damos un nombre: Add->Logic Controller-> Simple Controller
En esta pantalla, se nos permite controlar todos los parámetros de una request
http:
Otra cosa que permite JMeter, es activar o desactivar una parte del test, lo que es
muy útil cuando se está desarrollando un test largo, y se desea deshabilitar ciertas
partes iniciales que sean muy pesadas o largas.
Se pueden encadenar las Request que se deseen, y mover los elementos dentro
del árbol:
En este caso, hemos creado una nueva http request, que solicita otra página,
Y hemos añadir una nueva “Response Assertion” llamada “Assertion Guia”
verificando el contenido de un texto,
• Assertion Results: Muestra la URL de cada petición e indica los errores que se
produzcan (Assertions que no se han cumplido) en el test.
• Graph Full Results: Simplemente muestra el tiempo
• Graph Results: Muestra un gráfico con los tiempos medio, desviación,
throughput, etc. de la ejecución del plan de prueba.
• Mailer Visualizar: Permite enviar un e-mail si el plan de pruebas falla o no, o
supera un determinado valor de fallos o éxitos.
• Monitor Results: Sólo funciona en Tomcat 5
• Simple Data Writer: Vuelca los resultados a un fichero.
• Spline Visualizer: Gráfico de tiempos como spline.
• Aggregate Report: Muestra una tabla con una fila por cada URL solicitada,
indicando el tiempo min, max, medio, etc. Es una tabla que totaliza por URL.
• View Results in Table: Muestra una tabla con todas las respuestas, la URL,
tiempo y resultado de ejecución de cada una de ellas.
• View Results in Tree: Muestra un árbol con todas las respuestas y sus tiempos.
Por último no olvidemos grabar el plan de pruebas: File -> Save Test Plan
Generación automática del caso de prueba:
Otra forma que tiene JMeter de generar un caso de prueba es a través de una
navegación de usuario. Para ello, indicamos que Jmeter actué como proxy, para
capturar la navegación del caso de prueba. Pulsamos en WorkBench con el botón
derecho y elegimos “Non-Test Elements”-> http Proxy Server.
Podemos indicar que nos almacene sólo la primera “request” de cada petición de
la navegación. De esta forma descartamos las imágenes.
Una vez configurado, pulsamos el botón “Start” para arrancar el Seridor Proxy.
Ahora nos vamos al navegador, y configuramos el proxy (localhost, 8080)
Y tecleamos la URL de la Web a probar. Ej: www.autentia.com.
Automáticamente, Jmeter irá capturando las “request” que el navegador realice al
proxy de Jmeter, y de esta forma Jmeter se queda con una copia del “response”
de la web que estemos probando.
Y movemos las “http Request” al “Simple Controller”, arrastrando cada una con el
ratón, y seleccionando “Add as Child”:
Y nos quedaría así:
Ahora eliminamos o modificamos los “http Head Manager” de cada request, ya que
de lo contrario el test puede que no funcione, al tener grabado en la cabecera
valores de otra sesión.
También es recomendable añadir un “http Cookie Manager”, delante del
controlador.
Ahora creamos un listener “Aggregate Report”, para ver los resultados de la
prueba:
Cómo hemos visto JMeter puede ser una herramienta muy útil, para realizar
pruebas funcionales, pero también para realizar pruebas de regresión en nuestras
aplicaciones, algo, que a veces es verdaderamente complicado, según la
aplicación, pero que es casi imprescindible en el mantenimiento y evolución de las
aplicaciones si queremos asegurar un nivel de calidad adecuado en nuestras
entregas de producto.