JMeter: Performance Testing con JMeter – Parte 1


Mi mayor experiencia en pruebas de Performance se basa en JMeter. Esta herramienta Open Source permite fácilmente grabar y correr escenarios de performance de manera fácil.  Si bien su punto más débil es el reporte de resultados, es una herramienta muy útil y muy usada en el mundo de pruebas de Performance. Cabe aclarar que sus reportes son algo carentes de gráficos agradables y fáciles de entender pero esto no quiere decir que no nos brinde todos los valores  y estadísticos que necesitamos para luego procesarlos nosotros mismos con una planilla excel o algún programita que desarrollemos para esto.

Para empezar quiero destacar que podemos usar JMeter para cualquier aplicación que utilice los protocolos:

  • Web – HTTP, HTTPS
  • SOAP
  • Database via JDBC
  • LDAP (Lightweight Directory Access Protocol)
  • JMS (Java Message Service)
  • Mail – POP3

Los que nos da un gran abanico de aplicaciones a las cuales podemos aplicar pruebas de Performance.

Las ventajas que podemos observar son:

  • Muy pocos requerimientos de sistema (aunque estos aumenten a medida que aumentan la cantidad de VU – Virtual Users-)
  • Si bien es Open Source se cuanta con bastante documentación y una lista de mail muy activa donde podemos hacer nuestras preguntas.
  • El nombre y uso de los controles es intuitivo, lo que permite una curva de aprendizaje aceptable.
  • No he encontrado aplicación a la que no pueda ejecutar las pruebas (claro esta, que utilizan algunos de los protocolos antes descriptos 🙂 ) y estoy hablando de aplicaciones Java, .NET, Ajax y algunos hibridos de estas.

Para no idolatrar herramientas, esta de mas decir que tambien tiene desventajas:

  • La grabación se vuelve un poco tediosa al principio.
  • No es posible grabar paginas HTTPS. (Para solucionar este punto podemos utilizar Bad Boy para la grabación y luego exportarlo a JMeter)
  • No tiene un reporte de resultados muy agradable.
  • Es dificultoso el momento de parametrizar valores (sobre todo de aplicaciones Ajax)
  • A veces se vuelve inestable cuando el numero de VU es demasiado grande.
  • Es poco practico al momento de realizar acciones como arrastrar o copiar componentes.

Una vez dichos los PRO y CONTRA de esta herramienta quisiera seguir explicando como seria el proceso de las pruebas de Performance con JMeter.

Primordialmente el primer paso que debemos dar (sin importar la herramienta que utilicemos) es la definición del objetivo de las prueba de Performance: ¿Que medimos?¿Que se espera como resultado?¿Cuales son los requerimientos? y más(esto merece un capitulo aparte) para tener claro adonde debemos apuntar. Luego de que tenemos definido nuestro objetivo pasamos a la definición de los escenarios de Performance, los cuales pueden realizarse con la ayuda del cliente, de un usuario de la aplicación o de los tester funcionales.

Ahora ya estamos listos para utilizar JMeter, el paso a seguir es la grabación de los escenarios, para esto se utiliza el “Banco de Trabajo” añadiendo un elemento  “No de prueba” Servidor Proxy HTTP (próximamente voy a profundizar el tema de grabación de escenarios). Una vez que ya tenemos grabados los escenarios llego el momento de correrlos para poder obtener los resultados de estos. Algunos puntos a tener en cuenta al momento de correr los scripts:

Elemento “Grupo de Hilos”:  Este es el control mas importante al momento de correr las pruebas ya que determina el total de usuarios  que ejecutaran el escenario (Campo “Numero de Hilos”), cada cuanto tiempo un nuevo usuario ejecutara el escenario o rampup (Campo “Periodo de Subida”) el cual se calcula de la siguiente manera:

Carga de Usuarios (cada cuanto un nuevo VU ejecuta el escenario) = cantidad de Segundos(RampUp) / cant de VUs (total de VU de la prueba)

Simplificando:

Periodo de Carga = RampUp / Total de VUs

Es decir que cada “Carga de Usuarios” segundos arranca con el Test Plan un VU (Usuario Virtual)
Ej: Si quiero que entre un usuario cada 10 segundos hasta llegar a 50 usuarios, seria:
10= cantidad de Segundos/ 50 por lo que el ramp up debería ser de 10*50, es decir, 500 segundos.

Luego podemos encontrar más opciones que no vienen al caso. Ya tenemos definido cuantos usuarios van a correr el escenario y cada cuanto van a estar ingresando en el escenario, solo queda definir donde y como vamos a guardar los resultados, para esto debemos tener algun Listener con el cual podamos guardar los resultados de las pruebas. Yo uso y recomiendo los listeners “Ver Árbol de Resultados” y “Aggregate Graph“, paso a explicar cada uno:

“Ver Árbol de Resultados” nos permite observar el resultado de cada uno de los requests realizados por JMeter ademas de la pantalla (si aplica) a la que accedio cada request. También nos permite guardar el archivo JTL(escribiendo la ruta absoluta en el textbox) con los resultados de las pruebas, pudiendo configurar este con el boton “Configurar” y seleccionando las opciones que sean relevantes a las pruebas. Segun que seleccionemos podemos guardar el resultado en CSV (recomendado) o XML.

“Aggregate Graph” nos da el plus de obtener los estadisticos de las pruebas (ademas del JTL generado por el control anterior) presionando en el boton “Save Table Data” lo que nos genera un CSV con valores estadisticos como:

Muestras: Cantidad total de veces que se realiza un request.

Media: Media aritmética de los tiempos de respuesta(response time) de la aplicación.

Mediana: Mediana aritmética de los tiempos de respuesta(response time) de la aplicación.

Linea de 90%: Tiempo de respuesta en el que se encuentra el 90% de los requests.

Min: Minimo tiempo de respuesta para el request.

%Error: porcentaje de request con errores

Rendimiento: Es la cantidad de request que el servidor procesa por hora.

Kb/Sec: Cantidad de Kb que el servidor procesa por segundo

Max: Máximo tiempo de respuesta para el request.


Una vez que tenemos los reultados de las pruebas es el momento de pasar el CSV (o XML) con los resultados generales y el CSV con los estadisticos a una planilla (o aplicación) y procesarlos segun nuestro objetivo.

Anuncios

5 pensamientos en “JMeter: Performance Testing con JMeter – Parte 1”

  1. Gracias por el aporte, sin embargo no me queda claro los pasos para realizar una prueba preliminar. He descargado e instalado el aplicativo, lo ejecuto, sigo las indicaciones y noto un vacío en la redacción, talvez sea por que justamente Ud menciona que “próximamente voy a profundizar el tema de grabación de escenarios.” dado que no existen ejemplos concretos de como configurar el Servidor Proxy HTTP. Seguiré leyendo el siguiente post para tratar de entender mejor el funcionamiento de la herramienta.
    Saludo.

    Me gusta

    1. Marcela,

      Esta entrada solo busca dar una introducción a JMeter para pruebas de performance, si lo que estas buscando es información sobre como grabar escenarios, podes ver estos posts:

      https://josepablosarco.wordpress.com/2009/02/03/performance-testing-con-jmeter-paso-por-paso-para-grabar-escenarios/
      https://josepablosarco.wordpress.com/2009/09/21/performance-testing-con-jmeter-paso-por-paso-para-mejorar-los-escenarios-grabados/

      Espero que te sea de ayuda.

      Saludos,

      José

      Me gusta

  2. Algunas ideas sobre cómo hacer frente a las capacidades de presentación de informes JMeter débiles: hemos publicado plugin para JMeter, que permite cargar los resultados de las pruebas a nublar y observarlos en línea a través de panel interactivo.

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s