Apache JMeter

August 11th, 2007

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:

  1. Solicitar el cuestionario
  2. Nos redirige a una pantalla con la bienvenida y descripción del cuestionario
  3. Nos muestra la única página con la que cuenta este cuestionario. Cumplimentarlo.
  4. 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:

  1. Ejecutamos JMeter.
    Captura de pantalla de la herramienta JMeter
  2. Sobre el plan de pruebas añadimos un grupo de hilos
  3. Sobre el banco de pruebas añadimos un elemento NoDePrueba, concretamente Servidor Proxy HTTP que debemos configurar:
    1. Nombre: indicaremos un nombre para el proxy
    2. Puerto: puerto en el que estará disponible el servicio de proxy
    3. 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.
    4. Controlador objetivo: Plan de pruebas -> Grupo de hilos
    5. Patrones a incluir: .* (lo incluiremos todo)
      Captura de la pantalla de la herramienta JMeter
  4. Sobre el grupo de hilos añadimos un elemento de configuración: Valores por defecto para petición HTTP
    1. Nombre: un nombre de referencia para esta configuración
    2. Nombre del servidor o IP: servidor sobre el que realizaremos las peticiones, en mi prueba: www.ebabel.info
    3. Puerto: puerto sobre el que se realizarán las peticiones (por defecto es el 80), en mi prueba: 80
    4. 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.
    5. Path: camino a partir del cual se realizarán las peticiones.
  5. Ahora debemos configurar nuestro navegador para que use el servidor proxy HTTP que hemos configurado.
  6. 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.
    Captura de pantalla de la herramienta JMeter
  7. 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.
  8. 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.

Categories: Herramientas Tags:
  1. August 17th, 2007 at 21:31 | #1

    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

  2. ffbl
    August 20th, 2007 at 09:42 | #2

    *Gracias* por la cuenta que me trae ;-) . Voy a hacer la prueba con web-services …

  3. Antonio Muñiz
    February 15th, 2008 at 10:33 | #3

    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 ;)

  4. Gustavo
    May 26th, 2009 at 01:41 | #4

    El link a Opina (http://trac.ebabel.info/projects/eBabel) tira “Environment not found”

    Saludos

  5. May 26th, 2009 at 09:11 | #5

    Hola Gustavo:

    Muchas gracias, actualizaré la referencia.

    Un saludo

  6. PATRICIA
    February 19th, 2010 at 14:20 | #6

    Buenas, tengo un duda los scripts de prueba que tengo que realizar para jmeter, como los hago?? Gracias, un saludo!

  7. February 19th, 2010 at 14:40 | #7

    @PATRICIA

    Si explicas más detalladamente lo que necesitas, quizás pueda ayudarte.

    Un saludo

  8. PATRICIA
    February 19th, 2010 at 14:48 | #8

    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

  9. February 19th, 2010 at 14:50 | #9

    @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.

  10. PATRICIA
    February 19th, 2010 at 20:22 | #10

    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 :)

  11. February 19th, 2010 at 21:34 | #11

    @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

  12. PATRICIA
    February 20th, 2010 at 12:35 | #12

    Gracias, entonces, es necesario hacerlo con un servidor local, no??

  13. February 21st, 2010 at 15:30 | #13

    @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

  14. PATRICIA
    February 22nd, 2010 at 13:10 | #14

    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.

  15. PATRICIA
    February 22nd, 2010 at 13:46 | #15

    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

  16. February 22nd, 2010 at 13:56 | #16

    @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

  17. PATRICIA
    February 22nd, 2010 at 14:15 | #17

    ahhh, un segundo que creo pq es el error, si la página es https, seria el mismo procedimiento???

  18. PATRICIA
    February 22nd, 2010 at 15:00 | #18

    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??

  19. PATRICIA
    February 22nd, 2010 at 17:34 | #19

    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 :)

  20. Juanjo
    February 23rd, 2010 at 15:19 | #20

    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….

  21. constanza lópez
    July 21st, 2010 at 23:59 | #21

    quiero saber si jmeter permite probar el marco de navegación de un aplicación web y como lo hace?

  22. July 22nd, 2010 at 00:05 | #22

    @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

  23. July 22nd, 2010 at 00:06 | #23

    @constanza lópez

    Podrías ser más explícita?

    Un saludo

  24. Sergio
    December 15th, 2010 at 20:40 | #24

    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

  25. December 15th, 2010 at 20:51 | #25

    @Sergio

    Hola Sergio:

    No entiendo cuando mencionas “los datos que se transfieren entre las páginas”.

    Un saludo

  26. Sergio
    January 5th, 2011 at 14:54 | #26

    Me refiero a los datos que se envian por los metodos post o get

    saludos

  27. daniel carpio
    July 19th, 2011 at 23:39 | #27

    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.

  28. July 20th, 2011 at 01:36 | #28

    @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

  29. daniel carpio
    July 21st, 2011 at 00:50 | #29

    @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.

  30. July 21st, 2011 at 09:42 | #30

    @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

  1. No trackbacks yet.

Switch to our mobile site