JMeter, pruebas de stress sobre aplicaciones web: Grabando y reproduciendo navegaciones
Introducción.
En este tutorial vamos a mostrar como grabar sobre Apache JMeter una navegación real sobre una aplicación web para posteriormente poder reproducirla con distintos número de usuarios concurrentes con el fin de obtener información de como se comporta nuestra aplicación bajo esas situaciones.
Empezemos
Ejecutamos jmeter y realizamos los siguientes pasos:
-
- Agregar un grupo de hilos para indicar el número de usuarios concurrentes y de repeticiones que posteriormente ejecutarán la navegación que grabaremos.
Para ello selecciona el plan de pruebas haces clic con el botón derecho del ratón y seleccionas la opción
Add » Thread Group
. - Si tu aplicación usa cookies deberás agregar un gestor de cookies al grupo de hilos, para ello seleccionas el grupo de hilos, haces clic con el botón derecho y seleccionas
Add » Config Element » HTTP Cookie Manager.
Hay un tipo deCookie Manager
por cada tipo de cookie:rfc2119, netscape, etc.
. - Agregar un gestor de cabeceras al grupo de hilos, para ello seleccionas el grupo de hilos, haces clic con el botón derecho y seleccionas
Add » Config Element » HTTP Header Manager.
- Agregar un gestor de caché al grupo de hilos, para ello seleccionas el grupo de hilos, haces clic con el botón derecho y seleccionas
Add » Config Element » HTTP Cache Manager.
- Agregar los informes que desees
(Add » Listener » <el informe que desees>)
para tratar los resultados obtenidos al ejecutar el test. - Agregar un
HTTP Proxy Server
, para ello seleccionas elWorkBench
y luego haces clic enAdd » Non-Test-Element » HTTP Proxy Server
El HTTP Proxy grabará todas las peticiones http (las https NO) que vayamos realizando posteriormente con nuestro navegador, para ello debemos hacer las configuraciones que se muestran resaltadas en la siguiente imagen:- El parámetro
port
indica el puerto en el que escuchará las peticiones a grabar (posteriormente diremos al navegador que navege a través de ese puerto). - El parámetro
Target controller
indica que grupo de hilos (puede haber varios) serán el que ejecuten posteriormente la navegación. - El parámetro
Grouping
indica como se agruparán una petición y las subpeticiones relacionadas, por ejemplo: Una página HTML, hace que se soliciten imágenes, JS, CSS, etc. - El parámetro
HTTP Sampler Type
, indica el API de cliente que usaremos para enviar las peticiones..HTTPClient que ofrece más posibilidades. Puedes ver un tutorial aquí.
- El parámetro
- Configuras tu navegador favorito para que navege a través de un proxy, por ejemplo para FireFox, deberás dirigirte al menú
Herramientas » Opciones » Avanzado » pestaña Red:
Sí estás probando una aplicación en tu máquina local, también deberás usar el proxy, por lo que deberás borrar el contenido del cuadro de texto
No usar proxy para
. - Haces click en el botón
Start
que se encuentra en el panel de configuración deHTTP Proxy Server
y comienzas a navegar por la aplicación web.En la siguiente imagen se muestra una navegación básica de cinco páginas de una aplicación Web construida con PHP:
- Agregar un grupo de hilos para indicar el número de usuarios concurrentes y de repeticiones que posteriormente ejecutarán la navegación que grabaremos.
Ahora podrás reproducir lo grabado M veces con N usuarios, revisar los informes y sacar conclusiones en base a ellos.
Conclusiones
Desde mi punto de vista JMeter es una de esas aplicaciónes de código abierto con grandes posibilidades pero con carencias en cuanto a documentación… por lo que para sacarle todo su potencial hay que tirarse horas probando para exprimir sus posibilidades.
Grabando y reproduciendo navegaciones junto con los informes apropiados y otras técnicas y herramientas (Glassbox, JMX..) podemos tener información suficiente para realizar optimizaciones en nuestros sistemas.
Si tus sistemas no van todo lo rápido que te gustaría, te animo a que contactes con nosotros (Autentia) y seguramente consigamos incrementar en poco tiempo el rendimiento en un alto porcentaje.
Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.
Esta aplicación tiene algun listado de incompatibilidades con algunos lenguajes o procedimientos, por ejemplo Javascript, AJAX , etc.?
Gracias por la ayuda de antemano.
Saludos Cordiales.
El tutorial está muy bueno, solo que me gustaría saber como hacer un análisis de los resultados de rendimiento. Existe algún standar para decir si es bueno o no el rendimiento de una aplicación web.
Wow, Carlos excelente, justo lo que estaba buscando. Gracias por compartir la informacion.
Excelente tutorial, tengo una consulta.. las computadoras ya tiene definido un ip en el proxy, quisiera saber si eso afecta al jmeter porque estoy intentando grabar los escenario y no sale nada.
Hola creo que me enfrentaré a la misma situación, has podido resolverlo?
Hola, muy claro el tutorial, pero tengo una inquietud ¿con aquellas aplicaciones que requieren login, también sirve?
Gracias… pero agradecería empezar por el principio, indicando como se ejecuta.
Pues con lo que aquí se dice a mi no me funciona, no me graba nada.
Gracias Carlos, muy buen artículo
Lo que no entiendo es: «Que es lo que graba»
en que momento se ingresa la URL de la aplicación ? y cuando se detiene?
leí EMPEZEMOS y no pude seguir leyendo….
Hola como puedo cambiar el navegador por ejemplo necesito grabar el flujo en Internet explorer??
saludos