lunes, 1 de octubre de 2018

JMeter Revista de Actualidad Septiembre 2018


Introducción

(Interior, día. El escenario es una oficina con amplios ventanales, pero donde siempre está encendida la luz eléctrica. Para que luego digan que lo del cambio horario sirve para ahorrar energía)
(Antonio está enfrascado en revisar una documentación cuando recuerda que hace ya tiempo que no ha mirado el blog qatecnico y se dice …qué demonio, le voy a dar un ojo)
(Antonio) Vamos a ver, última entrada ¡Junio de 2017!. Caray, esto lo tenemos dejadillo, al menos nadie ha entrado para ponernos publicidad de Viagra o inversiones en fondos de banca…¡creo que ya toca actualizarlo!)

Y así amigos llegamos a esta nueva entrada : Revista de actualidad Septiembre de 2018!

Recientemente, Apache ha liberado la última versión de JMeter, la 5.0.

En las características de la release indica que se han resuelto algunos problemas relacionados con la implementación de los HTTP Request Samplers, que es la base de la generación de carga en la herramienta
  • Multipart/form-data requests:  ahora se pueden usar con peticiones PUT, DELETE … (previamente sólo para POST)
  • Se puede enviar un JSON Body con un fichero adjunto
  • Se pueden usar conjuntamente la pestaña de Parametros y la de Body (al contrario que antes en la que no podían coexistir)
  • Se ha añadido la inclusión automática a los grupos de threads en pruebas distribuidas de la IP y puerto del agente remoto. Asi podemos distinguir de dónde viene la carga y se suman adecuadamente todos los threads usados para dar el total de la prueba
  • También se ha actualizado las APIS usada por HTTP Components y se eliminan dependencias de APIs obsoletas.
  • También y esto es muy interesante, se ha añadido en los flujos de control la capacidad de desglosar el comportamiento respecto del thread y del total de la prueba




Manejo y usabilidad

Desde el punto de vista de la interfaz es prácticamente idéntico a las previas (3.X y 4) ,con el interfaz “darcula” por defecto que al menos para mí es más relajante para la vista, recuperando los terminales
Unix , ya que para el ojo es menos cansado un fondo oscuro y las letras en blanco reluciente.
También a la hora de realizar las grabaciones, se ha mejorado añadiendo una “ventana flotante” con la que indicar dónde grabar



Esto agiliza la creación de controladores de transacción para identificar los pasos de navegación del caso de prueba.
Otra mejora en la usabilidad en el listener de “Ver Árbol de Resultados” , es la diferenciación con el uso de pestañas específicas entre las cabeceras y cuerpo de petición y respuesta



Como el total de los cambios, correcciones y demás relativos a la herramienta es bastante extenso, os remitimos a la página de Apache que  refleja todos estos http://jmeter.apache.org/changes.html


Plugins

Desde el punto de vista de la recopilación y análisis de información, se han incluido algunos plugins bastante interesantes. Vamos a describirlos

Directory Listing Config


Este plugin permite generar un listado de carpetas y ficheros e ir actualizándolos en variables. Es útil para los casos de prueba que requieran del envio de ficheros .
Las principales características
  • "Use full path" – Si esta casilla no está seleccionada, se introducirá solo el path relativo de la ruta origen a la variable
  • "Random order" – La lista de paths será accedida aleatoriamente
  • "Recursive listing" – Accederá a las subcarpetas dentro de la ruta origen
  • "Rewind on end of list" -  Vuelve a recorrer toda la lista de ficheros y carpetas una vez llegue al final
  • "Re-read directory on the end of list" – Vuelve a cargar la lista en cada iteración: esto es útil si se va actualizando el contenido de las carpetas
  • "Independent list per thread" – Se indica si cada thread tendrá su propia lista de paths o si se compartirá entre todos.






Plugin Synthesis Report


Este plugin mezcla las capacidades de los informes resumen estándar y agregado ,junto con opciones para señalar la presentación de  qué llamadas o transacciones se quieren mostrar
Este informe permite mostrar las estadísticas más usadas en cuanto a número de muestras , tiempos de respuesta y valores estadísticos asociados

  • Samples
  • Average
  • Min
  • Max
  • 90%
  • Line
  • Std. Dev
  • Error %
  • Throughout
  • KB/sec
  • Avg.Bytes
Disponemos además de la capacidad de seleccionar mediante expresiones regulares qué peticiones,identificadas por URL o nombre de transacción se quieren mostrar en esta vista de informe


Como podemos ver, en la etiqueta podemos incluir una expresión regular para que sólo muestre  las peticiones o transacciones cuya etiqueta empiecen por “P” y un dígito.


Page Data Extractor


Este plugin puede resultar muy interesante de cara a obtener resultados de monitorización o seguimiento de una aplicación web sobre la que estemos haciendo una prueba.

Imaginemos que estamos realizando una prueba de carga sobre una página en la que realizamos una consulta sobre diversos criterios, como fecha, identificador de cliente…que estén parametrizados o tipificados de algún modo

Si en la página, cada vez que hacemos la consulta, aparece un mensaje o texto con el número de registros, podemos establecer una relación entre el criterio de consulta, el tamaño de la respuesta (el número de registros en este caso) y con el tiempo de respuesta obtenido por la transacción de búsqueda como información significativa del comportamiento de la aplicación.

Para obtener ese tipo de métrica podemos o bien, mediante expresiones regulares sobre los resultados de las peticiones extraer dicho número y luego, volcarlo a un fichero junto con el tiempo de la prueba, para desarrollar un gráfico…

Mucho trabajo, ¿no? . Para solventarlo podemos usar el plugin “Page Data Extractor”(categoría “Listeners” , el cual puede actuar de la misma manera , seleccionando la expresión regular adecuada y representarlo gráficamente , salvando el resultado a un fichero de resultados estándar de JMeter.



Por ejemplo, al hacer una búsqueda en Google podríamos usar las siguientes expresiones regulares para obtener
  • Numero de páginas por el criterio de búsqueda

  • Tiempo de respuesta de la búsqueda de Google





Se puede incluso desde el modo de línea de comandos generar un XML sobre el que acceder y consultar el estado sin necesidad de tener que acceder al fichero de resultados


jmeter -n -Jjmeter.save.saveservice.response_data=true -t PaginaEjemplo.jmx -l out.jtl



SSHMon Samples Collector


Este plugin permite realizar conexiones SSH contra una máquina que use dicho protocolo y ejecutar comandos remotos, ya sean de monitorización o para realizar alguna comprobación (número de ficheros creados , usuarios..etc.)
El modo de uso es sencillo , pero evidentemente tiene algunos requisitos previos

  • La máquina desde la que se ejecute tiene que tener acceso por protocolo SSH a la máquina objetivo (IP y puerto)
  • Se requiere de un usuario y clave para iniciar sesión
  • Si la conexión requiere de un certificado, disponer del mismo
  •  Los comandos o sentencias ejecutados deben devolver un valor numérico representable, sin texto o caracteres que no sean numéricos (dígito o . para decimales)

La configuración del plugin es la siguiente




  • Label es el identificador del valor capturado por el comando a ejecutar
  • Host es un campo parametrizable con la IP o nombre de la máquina objetivo de conexión
  • Port: El puerto de conexión
  • Username (autoexplicativo)
  • Private Key (PEM) : El certificado a usar
  • Password (premio para el que lo adivine)
  • Command: La sentencia a ejecutar con las restricciones comentadas y adaptadas evidentemente a la plataforma y versión del sistema operativo objeto e la conexión


Bueno, creo esto da bastante juego. Lo que no me da más juego es el tiempo, pero espero que os sea de utilidad.

3 comentarios:

  1. Para cuando van a abandonar la gestión por hilos y funcionar utilizando aync io como gatling o k6?
    Un saludo

    ResponderEliminar
  2. Hola
    Pues hasta ahí no llegamos, pero desde luego lo que viene siendo la capacidad de mostrar información legible y usar varios inyectores supera a Gatling ampliamente. De todos modos, esto no deberia ser una competición , entendemos que la capacidad de gestionar por código todos y cada uno de los objetos de Gatling (o Pycharm y similares) da una potencia en la gestión de pruebas muy elevada..aunque también requeire de perfiles enfocados casi más a Desarrollo que a prueba "pura y dura"
    Nos alegra que comentes en este blog y por supuesto, estamos abiertos a todo tipo de aportaciones y opiniones.
    Saludos y gracias!

    ResponderEliminar
  3. Dejaos de juguetitos y probad la primera división :-p

    ResponderEliminar