Graficas para JMeter – Loadsophia

En general, cualquier plan de pruebas contemplará al menos tres hitos o fases intermedias claramente diferenciadas. Una fase inicial de preparación del entorno necesario, programación de los scripts, configuración de las herramientas necesarias, etc. El siguiente punto será la propia ejecución de las pruebas siguiendo el plan diseñado y finalmente, habrá una fase de análisis y reporte de datos, en la cual se deberá analizar todos los datos obtenidos durante las ejecuciones anteriores y presentarlos de manera que aporten la mayor información posible.

Para esta fase final de análisis y reporte de resultados se pueden utilizar multitud de herramientas y formatos. Por la naturaleza de este tipo de pruebas, quizás la manera más intuitiva y fácil de analizar los resultados sea dibujando estos gráficamente. En pruebas de rendimiento muchas veces se obtiene más información analizando la tendencia y progresión del test que conociendo un valor concreto. Para ello, Loadsophia nos ofrece una manera fácil, gratuita y cómoda de obtener buenas gráficas.

 ¿Qué es loadosophia?

Básicamente un servicio de análisis de resultados de pruebas de rendimiento y generación de gráficas. A partir de los datos extraidos de herramientas como Apache JMeter o Apache Benchmark podremos obtener una serie de gráficas útiles para nuestro informe final.

 ¿Cómo funciona?

Sigue leyendo

Anuncios

Modularizar con JMeter

En esto del desarrollo, es por todo conocidos que dividir, importar, reutilizar, … son acciones que nos reportarán un gran beneficio en el futuro, haciendo que nuestro código sea mucho más simple, se mantenga de una manera más sencilla, se eviten inter-dependencias, etc. Trabajando con JMeter en proyectos de cierto tamaño, es normal que el plan de pruebas de rendimiento empiece a crecer a poco que diseñes unos cuantos workflows o tengas numerosas peticiones a tu sistema.

En estos casos, es muy útil identificar aquellos escenarios genéricos que utilices en múltiples sitios, bien sea configuración para distintos escenarios, un conjunto de peticiones que siempre deben hacerse conjuntamente y en el mismo orden, o cualquier otro que consideres reutilizable.  Una vez identificados estos casos, podemos crear un pequeño repositorio de funciones que posteriormente podrás incluir en cualquier punto de tu plan de pruebas, así, si algo cambia, solo tendrás que tocar en un sitio, reduciendo el trabajo y sobre todo la posibilidad de cometer errores.

Cómo modularizar en JMeter

Haremos uso de un par de controladores. El primero de ellos, “Controlador simple”, nos servirá para agrupar todos aquellos recursos que queramos reutilizar, este será nuestro pequeño repositorio. Solo añade un controlador simple, desactiva su ejecución y bajo el, añade los módulos que quieras tener disponibles en el resto del plan de pruebas, utilizando también controladores simples

jmeter_1

Una vez tengamos nuestro repositorio creado, cuando necesitemos incluir ese “trozo” de código en nuestro plan de pruebas, bastará con añadir un “Controlador de módulo” y seleccionar el módulo que queramos incluir en ese punto, quedando el plan de pruebas como sigue.

jmeter_2

Además, tal y como se hace para el resto de controladores, si necesitas añadir alguna particularidad en un determidado punto, bastará con añadir como hijo del controlador aquel elemento que necesites, de modo que sus valores sobrescribirán a los definidos en el módulo importado. Por ejemplo, en la imagen anterior podemos ver como se ha añadido un elemento de configuración de cabecera HTTP, cuyos datos sobrescribirán a los definidos en el módulo inicial.

Con estos pequeños cambios, conseguiremos tener un plan de pruebas mucho más simple y facil de mantener.

Optimizando JMeter

jmeter-logo-g2khostingEn el diseño de un plan de pruebas de rendimiento, uno de los puntos a los que hay que prestarle gran atención es al diseño del sistema encargado de la generación del volumen de carga necesario. Antes de llegar a acciones más costosas y elaboradas como puede ser utilizar servicios en la nube, distribuir un grid de nodos, … podemos optimizar los recursos disponibles para obtener el máximo partido de ellos.

Una de las herramientas más utilizadas cuando trabajamos con pruebas de rendimiento es Apache JMeter. Código abierto, muy extendido entre los equipos de testing y respaldado por una gran comunidad. Los problemas más habituales comentados en los foros sobre el uso de esta herramienta suelen estar relacionados con el uso de memoria y CPU, los cuales se pueden reducir en gran parte siguiendo una serie de recomendaciones.

Es fácil ver que todos los recursos utilizados en el pre y post-procesado de las peticiones, reduce los recursos disponibles para las necesidades reales, por lo tanto, todo lo que puedas hacer antes/después, hazlo. Es más eficiente cargar un fichero de datos que tener que calcular estos durante la ejecución del plan. Otro punto a tener en cuenta son los listeners. Deshabilitalos todos, no los necesitas durante las pruebas de carga. Ya nos encargaremos de formatear los resultados una vez finalizado el test.

¿Qué más podemos mejorar?

Sigue leyendo

Pruebas de rendimiento, workflows

Leia en Google Testing Blog “If you can’t build a web service that scales, testing is not your biggest problem!”  Pero, para definir la vía de escalada a seguir, debemos conocer cómo se comporta el sistema bajo una gran carga de trabajo.

La definición del plan de pruebas deberá hacerse con el objetivo de simular del modo más exacto posible el uso real del sistema bajo distintas situaciones. Para ello se definen workflows, basados en el comportamiento habitual de los usuarios frente a la aplicación. Los datos para su definición pueden ser obtenidos mediante sesiones de interacción, del análisis de log, gestión de auditoría, etc. Estos flujos serán las guías a seguir para el diseño de los scripts, planes de trabajo, etc, del plan de pruebas.

Para diseñar un detallado plan de pruebas de rendimiento, existen numerosos conceptos y variables con las que podemos jugar para conseguir el workflow requerido. Entre ellos, destacan los siguientes como los más importantes:

Sigue leyendo

ContiPerf – test de rendimiento

ContiPerf es una librería para enfocada a pruebas de rendimiento utilizando test creados bajo JUnit4. Diseñada por Volker Bergmann, artífice también algunas otras herramientas: The Feed4 Tools ó Mad For DB. Se basa en la misma filosofía de anotaciones que se utiliza en JUnit4 para gestionar los distintos test. Algunas de las funciones que ofrece son:

  • Repetición de test por tiempo o por número de ejecuciones
  • Assert para tiempos de respuesta (máximo, media, percentil, …)
  • Informes HTML y CSV de los resultados obtenidos
  • Integración con Maven

Una vez creados los test unitarios con JUnit, podemos reutilizar estos para ampliar la calidad del testing añadiendo pruebas de rendimiento. No solo necesitamos que un test se ejecute correctamente, sino que este debería cumplir unos criterios de rendimiento (tiempo de respuesta, ejecuciones en paralelo sin bloqueos,…). Estos son divididos por ContiPerf según sean:

Sigue leyendo