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:

  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.

30 thoughts on “Apache JMeter

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

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

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

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

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

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

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

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

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

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>