Jmeter para Aplicaciones Web

21,768 views
21,481 views

Published on

Jmeter para Aplicaciones Web

  1. 1. Pautas para realizar preubas con JMETER
  2. 2. Jmeter <ul><li>http://jakarta.apache.org/jmeter/ </li></ul><ul><li>Apache JMeter is a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. </li></ul><ul><li>What can I do with it? - Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load. </li></ul>Es una buena herramienta para probar el rendimiento de aplicaciones web
  3. 3. Plan de Pruebas <ul><li>Para realizar un test, se debe configurar un plan de pruebas. </li></ul><ul><li>Para ello se pincha sobre el icono que aparece en el marco de la izquierda denominado “Plan de Pruebas”. Aparece en el marco de la derecha un nuevo panel en el que se puede configurar diversos parámetros. </li></ul>
  4. 4. PASOS A REALIZAR
  5. 5. Grupo de hilos <ul><li>Lo primero que se añade al plan de pruebas es un grupo de hilos de ejecución que permita definir el número de usuarios a simular. </li></ul><ul><li>Se puede especificar: </li></ul><ul><ul><li>Número de hilos a ejecutar en paralelo. </li></ul></ul><ul><ul><li>Número de iteraciones que hará cada hilo. </li></ul></ul><ul><ul><li>Planificar la ejecución de la prueba, indicando hora de arranque y parada, duración del test en segundos y tiempo de arranque del mismo. </li></ul></ul><ul><ul><li>Acción a realizar en caso de error en el test por un hilo(para el hilo o parar todos). </li></ul></ul>
  6. 6. Grupo de hilos
  7. 7. Grupo de hilos
  8. 8. Peticiones HTTP <ul><li>Se pueden definir las propiedades por defecto para las peticiones HTTP que puedan aparecer en un plan de pruebas.De esta forma al definir una petición http, no es necesario rellenar todos los campos de información, ya que heredarán las propiedades por defecto definidas. </li></ul>
  9. 9. Grupo de hilos
  10. 10. Grupo de hilos
  11. 11. Gestión de Cookies <ul><li>En un plan de pruebas, se puede simular el comportamiento de las Cookies, añadiendo un “Gestor de Cookies HTTP” al Grupo de hilos. </li></ul><ul><li>Se puede borrar la cookie en cada iteración del test, o establecer los valores que se deseen para las cookies. </li></ul>
  12. 12. Gestión de Cookies
  13. 13. Gestión de Cookies
  14. 14. Controladores <ul><li>Jmeter posee dos tipos de controladores de la pruebas: </li></ul><ul><ul><li>Muestreadores  Permiten enviar peticiones a un servidor. Se configuran usando “Elementos de Configuración”. </li></ul></ul><ul><ul><li>Controladores lógicos  Permiten controlar el comportamiento de la prueba, y tomar decisiones en función de situaciones, valores, condiciones, etc. Cada controlador puede tener uno o más “Elementos por defecto”. </li></ul></ul>
  15. 15. Controlador Simple <ul><li>Como ejemplo, se va a ser crear un controlador simple para agrupar una serie de peticiones. </li></ul><ul><li>Para ello se selecciona sobre el Grupo de hilos, y con botón derecho se elige Añadir  Controlador Lógico  Controlador Simple </li></ul>
  16. 16. Controlador Simple
  17. 17. Controlador Simple
  18. 18. Petición HTTP <ul><li>A continuación, se define una petición HTTP, para lo cual se selecciona sobre el controlador simple que se ha creado, y con botón derecho se elige la opción de Añadir  Muestreador  Petición HTTP, y se le da un nombre </li></ul>
  19. 19. Petición HTTP
  20. 20. Petición HTTP
  21. 21. Petición HTTP <ul><li>En la pantalla de Petición HTTP se pueden configurar los siguientes parámetros: </li></ul><ul><ul><li>Método: GET o POST </li></ul></ul><ul><ul><li>Path del recurso a pedir. </li></ul></ul><ul><ul><li>Redirección automática. </li></ul></ul><ul><ul><li>Seguir las redirecciones indicadas por el resultado de la petición. </li></ul></ul><ul><ul><li>Usar KeepAlive: Mantener la conexión viva entre distintas peticiones. </li></ul></ul><ul><ul><li>Envío de parámetros en la request. </li></ul></ul><ul><ul><li>Envío de un fichero adjunto a la request. </li></ul></ul>
  22. 22. Petición HTTP <ul><li>Los parámetros que no se completen serán heredados del elemento de configuración “Valores por Defecto para peticiones HTTP”. </li></ul>
  23. 23. Aserciones <ul><li>A una petición se le puede añadir aserciones que comprueban que la ejecución de la petición es correcta. </li></ul><ul><li>Para ello se selecciona la petición HTTP, y con botón derecho se hace click sobre Añadir  Aserciones  Aserción de Respuesta. </li></ul>
  24. 24. Aserciones <ul><li>Se pueden añadir los siguientes tipos de “Aserciones”: </li></ul><ul><ul><li>Aserción de respuesta, para comprobar la respuesta. Puede comprobarse el texto, o la URL, o el código de respuesta, o el mensaje de respuesta, e indicar si coincide con una serie de patrones, o no. </li></ul></ul><ul><ul><li>Aserción de duración, para indicar un tiempo máximo de ejecución. </li></ul></ul><ul><ul><li>Aserción HTML, para verificar que el HTML, XML o XHTML esté correctamente construido (utiliza Tiny). </li></ul></ul><ul><ul><li>Aserción MD5Hex, para verificar que la suma MD5 es la especificada. </li></ul></ul><ul><ul><li>Aserción de tamaño, para verificar que el tamaño es <,>, =, etc que uno especificado </li></ul></ul><ul><ul><li>Aserción XML, para verificar que el resultado es un XML bien formado. </li></ul></ul><ul><ul><li>Aserción Beanshell, para programación de pequeños shell scripts que realizan verificaciones a medida. </li></ul></ul>
  25. 25. Aserciones
  26. 26. Aserciones <ul><li>Por ejemplo se puede añadir una aserción de respuesta, en la que se establece la condición de que el código de respuesta sea 200, corresponde a una página servida correctamente. </li></ul>
  27. 27. Aserciones
  28. 28. Preprocesadores <ul><li>En un plan de pruebas se pueden añadir preprocesadores que realicen acciones antes de enviar la Request: </li></ul><ul><ul><li>Contador: Para crear una variable contador, que puede ser referenciada en cualquier parte del test </li></ul></ul><ul><ul><li>Parámetros de usuario: parámetros definidos por el Usuario, que nos van a permitir definir una especie de constantes dentro del test. </li></ul></ul><ul><ul><li>Parser de enlaces HTML: Parsea la respuesta HTML del servidor, y extrae los links y forms. </li></ul></ul><ul><ul><li>Máscara de parámetros HTML. </li></ul></ul><ul><ul><li>Modificador de reescritura HTTP URL. </li></ul></ul><ul><ul><li>Modificador de parámetros de usuario HTTP. </li></ul></ul>
  29. 29. Posprocesadores <ul><li>En un plan de pruebas se pueden añadir postprocesadores que realicen acciones después de enviar la Request: </li></ul><ul><ul><li>Extractor de Expresiones regulares: Extrae cadenas de la respuesta (contenido o cabeceras) que cumplan una expresión regular </li></ul></ul><ul><ul><li>Manejador de acción para status de resultados: Permite indica la acción a tomar después de que se produzca un error: continuar, parar el thread, o parar el test. </li></ul></ul><ul><ul><li>Almacenar respuesta en un archivo: Permite almacenar en un fichero la respuesta obtenidas (todas o sólo las erróneas) </li></ul></ul><ul><ul><li>Generar resumen de resultados: Resumen de información que se envía a la salidad cada cierto tiempo (utilizado en modo batch) </li></ul></ul>
  30. 30. Otras características <ul><li>Permite activar o desactivar una parte del test, lo que es útil cuando se está desarrollando un test largo, y se desea deshabilitar ciertas partes iniciales que sean muy pesadas o largas. </li></ul><ul><li>Se pueden encadenar las Request que se deseen, y mover los elementos dentro del árbol.Aquellas acciones más externas afectan a las más internas del árbol de test </li></ul>
  31. 31. Listener <ul><li>Para lanzar un test de forma interactiva, se necesita crear un listener que recupere información , dentro del “Grupo de hilos”. </li></ul>
  32. 32. Listener <ul><li>Algunos de los tipos de Listener: </li></ul><ul><ul><li>Resultados de aserciones: Muestra la URL de cada petición e indica los errores que se produzcan (aserciones que no se han cumplido) en el test. </li></ul></ul><ul><ul><li>Gráfico de Resultados completo: Simplemente muestra el tiempo </li></ul></ul><ul><ul><li>Gráfico de Resultados: Muestra un gráfico con los tiempos medio, desviación, throughput, etc. de la ejecución del plan de prueba. </li></ul></ul><ul><ul><li>Monitor de Resultados: Sólo funciona en Tomcat 5 </li></ul></ul><ul><ul><li>Escrito de datos simple: Vuelca los resultados a un fichero. </li></ul></ul><ul><ul><li>Visualizador Spline: Gráfico de tiempos como spline. </li></ul></ul><ul><ul><li>Informe Agregado: Muestra una tabla con una fila por cada URL solicitada, indicando el tiempo min, max, medio, etc. Es una tabla que totaliza por URL. </li></ul></ul><ul><ul><li>Vista de Resultados en Tabla: Muestra una tabla con todas las respuestas, la URL, tiempo y resultado de ejecución de cada una de ellas. </li></ul></ul><ul><ul><li>Vista de Resultados en Árbol: Muestra un árbol con todas las respuestas y sus tiempos. </li></ul></ul>
  33. 33. Listener <ul><li>Para ello se selecciona el “Grupo de Hilos”, y se clickea sobre Añadir  Listener  Informe Agregado </li></ul>
  34. 34. Listener
  35. 35. Listener
  36. 36. Ejecución <ul><li>Para ejecutar se pulsa sobre la opción del menú Lanzar  Arrancar. </li></ul><ul><li>La ejecución del Plan de Pruebas ejecuta los threads configurados en “Grupo de hilos”. Posicionando el ratón sobre “Informe Agregado” se ve la información sobre la prueba. </li></ul>
  37. 37. Preparación de pruebas con Proxy <ul><li>Otra forma para generar un caso de prueba es a través de una navegación de usuario. </li></ul><ul><li>Para ello hay que indicar a Jmeter que actué como proxy, para capturar la navegación del caso de prueba. </li></ul><ul><li>Se pulsa en Banco de Trabajo con el botón derecho y se elige “Elementos no de Prueba”-> Servidor Proxy Http. </li></ul>
  38. 38. Preparación de pruebas con Proxy
  39. 39. Preparación de pruebas con Proxy <ul><li>Se configuran los parámetros del Proxy en la pantalla que aparece en el marco de la derecha. </li></ul>
  40. 40. Preparación de pruebas con Proxy
  41. 41. Preparación de pruebas con Proxy <ul><li>Se arranca el Proxy, usando el botón “Arrancar” que aparece en el mismo. </li></ul>
  42. 42. Preparación de pruebas con Proxy
  43. 43. Preparación de pruebas con Proxy <ul><li>Se configura el navegador que se use para que utilice el Proxy para filtrar las peticiones. </li></ul><ul><li>Por ejemplo, configuramos el firefox. </li></ul>
  44. 44. Preparación de pruebas con Proxy
  45. 45. Preparación de pruebas con Proxy
  46. 46. Preparación de pruebas con Proxy <ul><li>Una vez configurado el servidor y el navegador, tan sólo hay que ir navegando por las diferentes páginas sobre las que se quiere realizar las pruebas. De forma automática, Jmeter,irá registrando en la consola del Jmeter las páginas sobre las que se quiere realizar las pruebas. </li></ul>
  47. 47. Preparación de pruebas con Proxy <ul><li>Como ejemplo vamos a hacer una navegación sobre Proyecto Agrega, y desde allí se va a realizar la búsqueda de un contenido, su previsualización, y por último la descarga del contenido. </li></ul><ul><li>Para ello basta realizar la interacción comentada con el navegador. </li></ul>
  48. 48. Preparación de pruebas con Proxy
  49. 49. Preparación de pruebas con Proxy
  50. 50. Preparación de pruebas con Proxy
  51. 51. Preparación de pruebas con Proxy
  52. 52. Preparación de pruebas con Proxy
  53. 53. Preparación de pruebas con Proxy <ul><li>Internamente en Jmeter se han ido generando los siguientes elementos de prueba en el Banco de Pruebas </li></ul>
  54. 54. Preparación de pruebas con Proxy
  55. 55. Preparación de pruebas con Proxy <ul><li>A continuación, se puede parar el Proxy, y preparar diferentes pruebas con los casos de pruebas generados. </li></ul><ul><li>Por ejemplo se puede preparar una prueba de crear 5 hilos en paralelo, subidos en el momento de lanzamiento, tiempo 0, y realizar 2 iteraciones. Además pegamos en el grupo de hilos,los casos de prueba generados. </li></ul>
  56. 56. Preparación de pruebas con Proxy
  57. 57. Preparación de pruebas con Proxy <ul><li>Añadimos un par de salidas para mostrar los resultados de las pruebas. Por ejemplo podemos mostrar un “Gráfico de resultados”, “Summary Report”, y “Ver Resultados en Árbol” </li></ul>
  58. 58. Preparación de pruebas con Proxy
  59. 59. Explotación de la información <ul><li>A partir de los datos que se recuperan se puede estudiar diferentes características relativos al rendimiento. Por ejemplo un dato que hemos observado al hacer estas pruebas, es que el logo de las CCAA, falla en un 100% de los casos, o por ejemplo que hay una ralentización importante al realizar las búsquedas. </li></ul>
  60. 60. Explotación de la información <ul><li>Otra forma de explotarlo consiste en variar los parámetros de los grupos de hilos, y hacer una comparativa conjunta de lo que resulta en cada caso, viendo como responden los nodos al aumento de usuarios concurrentes. </li></ul>

×