jueves, 7 de marzo de 2013

Jmeter : Revista de actualidad . Revisando la versión 2.9



Saludos a todos los jotaemeteros. Como bien sabrán nuestros lectores habituales, la información proporcionada sobre la utilidad de pruebas Jmeter es una de las especialidades de este blog. Por lo que, siguiendo nuestra línea de oportunismo y descaro habituales, aprovecharemos para hacer un nuevo artículo que, creemos  será útil para los usuarios habituales y visitantes ocasionales.


Jmeter versión 9.


Analizamos en este post la última versión  disponible de Jmeter publicada en la web oficial. En concreto es la 2.9 r1437961
 
Introducción

En anteriores entradas de nuestro monográfico de Jmeter, hemos estado trabajando con las versiones 2.4 y 2.5.1 . Tras diversas experiencias en el día a día con las mismas sacamos algunas conclusiones acerca de su fiabilidad para pruebas con diversas navegaciones y en el aprovechamiento de recursos.

Estas conclusiones se pueden resumir en
  • Un elevado uso de recursos en la ejecución de pruebas con el interfaz de usuario gráfico iniciado
  • Problemas con la ejecución de escenarios que reflejen navegaciones múltiples de usuario.
  • Falta de compatibilidad con scripts grabados con  versiones  distintas a la del inyector.
  • Tasa de errores elevada de la versión 2.5.1 con peticiones HTTP sobre AJAX.
Sigue sin resolverse el problema de compatibilidad, siendo al parecer inherente a esta utilidad ,aunque ya desde la versión 2.8 ,se solventó el de las peticiones HTTP sobre AJAX

Cambios en el interfaz.

Hasta la versión 2.6 no se introdujo la “barra gráfica “ que adorna el interfaz de usuario de Jmeter. En este aspecto, no se observan prácticamente cambios entre versiones,salvo la marcada con el circulo rojo

Gráfica 1. Barra de herramientas UI JMeter v 2.6
Gráfica 2.Barra de herramientas UI JMeter v 2.9


 
El principal cambio podemos observarlo en la inclusión de un visualizar de logs en la propia interfaz de usuario . Es una facilidad que nos permite ver el jmeter.log y los errores que aparecen en el mismo. Se puede habilitar y deshabilitar pulsando sobre el signo de exclamación .

Nuevamente observamos que los scripts creados entre versiones no son directamente compatibles, siendo necesario realizar mezclas con scripts nativos para conseguir recuperar el código de los de versiones previas.

A continuación, nos explayaremos acerca de algunas de las características a nuestro juicio más interesantes de esta versión.



Elemento de configuración : Gestor de cookies

Podemos observar que en esta nueva versión, se mantienen los  modos de compatibilidad, pero se añade una nueva opción desplegable: Implementación

Gráfico 3.Gestor cookies v 2.6
 La diferencia con la versión 2.9
Gráfico 4. Gestor cookies v 2.9
Esta nueva opción permite gestionar cookies para sites que estén implementados para el protocolo IP v6  (con las IP en el formato adecuado a esta versión que superan las limitaciones del número disponible de direcciones),seleccionando el valor HC4CookieHandler del desplegable.





Preprocesadores: RegEx User Parameters (“Parámetros de usuario de expresión regular”)


Gráfico 5. . Preprocesador parametros de usuario por expresión regular JMeter v 2.9

Este nuevo preprocesador  permite, en unión con un pre y postprocesador de expresiones regulares asociadas a peticiones http , asociar pares nombre de variable y valor , de manera que puedan ser referenciados en dichas peticiones 


La explicación de los campos es la siguiente


Campo
Descripción
Requerido
Nombre
Nombre descriptivo del elemento en el árbol
No
Regular Expression Reference Name
Nombre identificativo de la expr regular
Si
Parameter names regexp group number
Número del grupo de la expr. regular usada para extraer los nombres de los parámetros
Si
Parameter values regex group number
Numero del grupo de la expr. regular usada para extraer los valores de los parámetros
Si
  Tabla 1. Parámetros de uso de Preprocesador parámetros de usuario por expresión regular




Como ya hemos indicado, este preprocesador permite  hacer referencia a juegos de pares nombre – valor, por los preprocesadores y postprocesadores de expresiones regulares:
Así si definimos el Nombre como "listaParametros", el pre y postprocesador asociados, que deben llamarse igual, pueden hacer referencia  a las variables capturadas con el número indicados en los campos de “Parameter Names” y “Parameter Values”
  


Muestreador Petición http



El cambio más destacado es el del comportamiento por defecto en el tipo de implementación de gestión: En esta versión, si no se elige ninguno de los valores del desplegable, se toma la implementación estándar del protocolo http. En la versión 2.6, se selecciona la implementación de Java.

Se añade en el desplegable de Método, a las ya consabidas opciones la del método PATCH (no compatible con la implementación Java) .Este método  se emplea para modificar parcialmente un recurso ya existente en el servidor, es similar a PUT, salvo que incluye las modificaciones a realizar sobre el URI objeto de la petición HTTP

Gráfico 6. Nuevos métodos protocolo HTTP en muestrador peticion HTTP JMeter v 2.9


Muestreador: OS Process Sampler

Permite la ejecución en la máquina local donde se esté ejecutando de un comando de sistema operativo. Esto puede ser útil para recopilar determinada información de estado de la máquina o de logs, salidas de sistema...etc.

Gráfico 7. Muestrador de ejecución de procesos en S.O. JMeter v 2.9


Como podemos ver, el ejemplo ha sido elegido sobre un sistema operativo tipo Unix y es bastante intuitivo (este muestreador  también se puede aplicar a comandos de DOS).


Campo
Descripción
Command
Comando a a ejecutar
Working directory
Directorio desde el que ejecutarlo
Command parameter
Parámetros del comando (uno en cada línea ). Los botones de esta sección de la ventana permiten añadir más líneas a los parámetros, e incluso añadirlo desde el “corta y pega “
Enviroment variables
Variables de entorno que tomará el comando para la ejecución (por ejemplo, el idioma, un PATH, …)
Standard input
Nombre del fichero de entrada que puede tomar el comando
Standard Output
Fichero de salida.Si se omite, devuelve los valores de salida al flujo de la ejecución de Jmeter
Standard Error
Fichero de errores.Si se omite, la salida de este flujo se devuelve a JMeter
Check Return Code
Permite establecer una comparación entre el valor de retorno del comando y un valor esperado , para compriobar si ha ido como esperábamos o no
   Tabla 2.Campos OS Process Sampler JMeter v 2.9




Receptor : Monitor de Servidor

Aunque ya estaba disponible en las versiones previas, incluimos una referencia al receptor de Monitor de servidor.

Este monitor se basa en la capacidad del servidor de aplicaciones Tomcat para enviar resúmenes de estado a través de servlets que soporten JMX (Java Management Extensions).

En este caso, la documentación propia de Jmeter es bastante clarificadora (sorpresa) y dejamos el enlace para que se pueda seguir los pasos indicados para la misma

                      http://jmeter.apache.org/usermanual/build-monitor-test-plan.html

De todos modos, recordamos que este paso implicará la participación de sistemas para habilitar JMX en el servidor.

Nuevamente , esperamos haber podido ser útiles para ampliar vuestros conocimientos de esta utilidad de pruebas de carga.

9 comentarios:

  1. gracias,buena descripcion de los parametros de jmeter. Sin duda es uno de los mejor softwares libres para hacer pruebas.

    ResponderEliminar
    Respuestas
    1. Gracias a tí por tu visita y comentario. Esperamos poder ofrecer más entradas próximamente,siempre que el trabajo nos lo permita .

      Saludos

      Eliminar
  2. JMeter es compatible con

    1.- Sistema Negocios/ Servidor de Aplicaciones Jaguar / Lenguaje de Programación PowerBuilder / Base de Datos SQL Server
    2.- Sistema Bantotal / Servidor de Aplicaciones Tomcat / Lenguaje de Programación Genexus(RPG-Java) / Base de Datos AS 400
    3.- Sistema PeopleSoft / Servidor de Aplicaciones Weblogic / Lenguaje de Programación Peoplecode / Base de Datos Oracle
    4.- Sistema ICS / Servidor de Aplicaciones Tomcat / Lenguaje de Programación Java / Base de Datos Oracle sobre linux
    5.- Sistema SAF / Servidor de Aplicaciones EA Server / Lenguaje de Programación PowerBuilder 9.0/ Base de Datos SQL Server

    ResponderEliminar
  3. Muchas gracias, muy bueno.

    Una pregunta, yo estoy intentando grabar un escenario donde tengo que subir un archivo excel y llego a la pantalla ( http://prntscr.com/9e0i5l ), selecciono el archivo y cuando presiono "Aceptar" me queda en la misma página, escribiendo de nuevo que no seleccioné ningún archivo. Sabes por qué puede ser esto? Estoy trabajando con Genexus X Evolution 1 con Java 6 y Oracle 12 con JBoss.

    Muchas gracias,
    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola,
      ¿has probado alguna de las siguientes opciones?:
      1) Modificar la versión java de grabación HTTP en la configuración del proxy jmeter.
      2) Incluir el fichero que quieras subir en la ruta [path_jmeter]/bin y repetir la grabación.

      Eliminar
    2. Hola,

      Muchas gracias por responder. Esta parte no se bien por qué ahora a veces me anda y a veces no, no se bien dependiendo de qué. A veces paro de grabar, doy arrancar de nuevo y funciona y a veces no. La cosa es que logré grabar un escenario con el archivo :)

      Ahora tengo un problema que es peor y me apareció en dos lados. Una, al ejecutar este escenario, en esta parte de cargar el excel y otra al presionar confirmar en una pantalla alternativa a ésta que hace la misma funcionalidad pero manualmente en lugar de con un excel.

      El problema es el siguiente: Me dice "java.io.IOException: Not in GZIP format".
      Según vi es un problema conocido y no se qué hacer para solucionarlo o hacer un workaround (http://wiki.genexus.com/commwiki/servlet/wiki?Stress+Test+Tips,).

      He probado:
      1)Modificar la versión java de grabación HTTP en la configuración del proxy jmeter y a la hora de ejecutarlo también.
      2)Incluir el fichero que quieras subir en la ruta [path_jmeter]/bin y repetir la grabación porque al principio me pasaba con el excel y ahora veo que me pasa en el caso manual también así que no ayudó.
      3) Quitarle de la cabecera del pedido: "Accept-Encoding: gzip, deflate" pero eso pasa a darme otro error: 403 Forbidden

      Seguramente probé alguna otra cosa que no recuerde.
      No se si aporta algo pero tengo un HTTP Cookie Manager con política Default, Implementación HC3CookieHandler y marqué la opción de limpiar en cada iteración. Creo que eso no he cambiado para intentar solucionar, ni se si tiene algo que ver pero por las dudas menciono.

      Muchas gracias! Y perdón por las molestias.

      Saludos.

      Eliminar
    3. Hola! Aun con un poco de desconocimiento por las características del entorno ,puedes intentar probar con otra implementación de la petición que hace el método POST (por ejemplo ,cambiar a HttpClien4 o a Java) .
      También puedes probar a mandarlo en el body de la petición o ,creo recordar ,indicarlo como parámetro .
      ¡Espero que te pueda servir de ayuda!. Recuerda que muchas veces es cuestión de método de prueba y error (¡así de triste es la vida!).
      Suerte y si necesitas más ayuda intentaremos darte alguna respuesta.

      Eliminar
    4. Hola :)
      Muchas gracias por la respuesta. Seguiré intentando entonces, probando y errando hasta que en algún momento deje de errar (esperemos).
      Saludos

      Eliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar