martes, 14 de septiembre de 2010

Pruebas de Stress/JMeter

Introducción.
Jmeter es una herramienta que se ha hecho imprescindible para múltiples procesos e importante para el desarrollo de software.
En este espacio explicaremos su importancia, en qué consiste, sus características y ventajas, uso, funcionamiento por medio de un ejemplo.
¿En qué consiste la herramienta JMeter?
El JMeter es una herramienta libre, además es una herramienta Java, que permite realizar pruebas de Rendimiento y pruebas Funcionales sobre Aplicaciones Web. Es una herramienta de carga para llevar acabo simulaciones sobre cualquier recurso de Software.
JMeter una herramienta Java dentro del proyecto de Jakarta, que permite realizar pruebas de rendimiento y pruebas funcionales sobre aplicaciones web y bases de datos. Existe un gran número de herramientas para realizar pruebas gratuitas y de pago (LoadRunner), pero JMeter se destaca por su versatilidad, estabilidad, y por ser de uso gratuito. JMeter permite realizar pruebas web clásicas, pero también permite realizar test de FTP, JDBC, JNDI, LDAP, SOAP/XML-RPC y Web Service (en Beta). También permite la ejecución de pruebas distribuidas entre distintos ordenadores para realizar pruebas de rendimiento.
El JMeter muestra los resultados de las pruebas en una amplia variedad de informes y gráficas. Además facilita a una rápida detección de los cuellos de botella existentes debido al tiempo de respuesta excesivo. Todas estas herramientas pueden ser usadas para hacer las pruebas de eficiencia bajo carga intensiva, sin embargo hay algunas que poseen ventajas con respecto a las demás, por lo que son más óptimas a utilizar durante las pruebas en cuestión. En una aplicación es de vital importancia emplear algo de tiempo a preparar pruebas de eficiencia bajo carga y stress, antes de ser entregada. El tiempo invertido es recuperado con creces, ya que se detectaran los posibles efectos laterales y se podrá comprobar si esa nueva funcionalidad soporta la cantidad de usuarios concurrentes que se especificaban en los requisitos.
  • Estos son algunos objetivos específicos que se pueden tener:
  • Verificar que el sistema esté ajustado para soportar la máxima carga de trabajo posible usando la infraestructura actual.
  • Asegurar que, ante una carga de trabajo determinada, las páginas a las que se accede responden en menos del intervalo de tiempo especificado por el grupo de diseñadores.
  • Determinar el tiempo medio de respuesta que obtendrá el usuario.
  • Determinar el número máximo de usuarios concurrentes que pueden acceder a una página específica, o transacciones por segundo que la aplicación es capaz de soportar.
  • Identificar las páginas que responden más lentas y las más rápidas.
  • Identificar las páginas con una mayor desviación típica en sus tiempos de respuesta.
Las pruebas de eficiencia bajo carga intensiva deben de ejecutarse idealmente sobre un entorno estable, lo más similar posible al entorno final de producción, siguiendo los objetivos antes mencionados, siempre pudiendo ser agregados otros en dependencia del interés que se persiga.
  • Ventajas de la herramienta JMeter
  • De las herramientas gratis, es la más completa y útil para el tipo de pruebas en cuestión.
  • Es una herramienta que sirve para realizar pruebas funcionales, pero también sirve para realizar pruebas de regresión en aplicaciones web, algo, que a veces es verdaderamente complicado, según la aplicación, pero que es casi imprescindible en el mantenimiento y evolución de las aplicaciones, si se quiere asegurar un nivel de capacidad adecuado en la entrega del producto.
  • Tiene una estructura en árbol que le da potencia, permitiendo que sea la imaginación de quien la use la que ponga los límites a la hora de diseñar el plan de prueba. Y brinda mayor cantidad de variantes para recoger los resultados obtenidos, que el resto de las herramientas gratis, lo que permiten hacer un análisis exhaustivo de las pruebas realizadas.
    3. Ejecución de prueba de rendimiento al Registro de Actividades Diarias (RAD)
El sistema de gestión de la información de los Modelos de Actividades Diarias (RAD) forma parte en la actualidad del conjunto de aplicaciones desarrolladas para el Sistema de Información para la Salud (SISalud) en el área temática de APS de la facultad 7. Dentro de los requisitos No Funcionales que rigen al desarrollo de la aplicación, se tiene por ejemplo, el número de terminales, el número esperado de usuarios simultáneamente conectados, número de transacciones por segundo que deberá soportar el sistema, etc. Todos estos requisitos deben ser mensurables. Debe indicarse en por ciento (%) relacionado con su tiempo.
RNF 1: El sistema debe soportar la conexión simultánea de más de 60 000 usuarios.
RNF 2: El sistema debe soportar un tiempo de respuesta menor o igual a 30 segundos.
RNF 3: El sistema debe soportar respuestas SOAP que no deben exceder los 50 Kbyte en el tiempo de respuesta al usuario.
Características que otorga JMeter en Pruebas de Stress
1.- Configuración y Definición a base de "Elementos"
Jmeter maneja el concepto de "Element" y en una estructura en "Tree", donde cualquier rama o parte del árbol puede ser guardada de forma independiente, para reutilizarlas en otras pruebas.
Los "Elementos" nos permiten configurar y definir el plan de pruebas.
Los "Elementos" se dividen es dos conjuntos
  • Elementos jerárquicos:
    • Listeners (elementos en escucha)
    • Config Elements (elementos de configuración)
    • Post-processors (post-procesadores)
    • Pre-processors (pre-procesadores)
    • Assertions (afirmaciones)
    • Timers (cronómetros)
  • Elementos ordenados:
    • Controllers (controladores)
    • Samplers (agentes de pruebas)

2.- Pauta para Realizar Pruebas con Jmeter Manualmente.

Pasos Previos


a).- Para estrezar una prueba de test, se debe configurar un Plan de Pruebas.
b).- Eligiendo aquellos casos mas importantes y que denoten prioridad.

Ejemplo:

Tomaremos el Plan de Prueba PP-PROY- XXXXX-SPRINT 1-Solicitar DigiPass o DigiCard.xls
De este Plan de Pruebas seleccionaremos un caso a estrezar.

Caso 1: Cliente solicita Tarjeta de Coordenadas por primera vez
(o Cliente tiene otro dispositivo diferente a DigiCard activado)
para entrega a un domicilio dentro de territorio Nacional.

Configurando en JMeter el Plan de Pruebas - Caso 1

Paso 1: Seleccionar el ícono Plan de Pruebas a la derecha del panel.

                                                                  
Paso 2: Añadir Grupo de Hilos al Plan de Prueba para definir el número
de usuarios a simular.

Desde el ícono Plan de Prueba con el botón derecho,
seleccionar "Añadir>Grupo de Hilos"

                                                                               
En esta pantalla se puede observar

a).- Núméro de hilos a ejecutar en paralelo.
b).- Número de iteraciones que hará cada hilo.
c).- Se puede 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.
d).- También se realiza la acción en caso de error en el test por un hilo
(o para todos los hilos).

                                                                     
Paso 3: Definir las propiedades por defecto para las Peticiones HTTP que
puedan aparacer en un Plan de Pruebas.

De esta manera al definir una petición http, no es necesario rellenar
todos los campos de información, ya que heredan las propiedades por defecto definidas.

Desde el ícono Grupo de Hilos con el botón derecho,
seleccionar "Añadir>Elementos de Configuración>Valores por defecto para Petición HTTP"

                                                                             
En esta pantalla se puede observar
a).- Nombre de Servidor o IP, para este caso ingresamos la IP de la aplicación.
b).- Protocolo ingresando HTTP.
c).- Definimos Path de la aplicación.
d).- Añadimos los usuarios que intervienen para la prueba.

                                                                   
Paso 4: En un Plan de Pruebas, se puede simular el comportamiento de las Cookies.
Añadiendo un "Gestor de Cookies HTTP al Grupo de Hilos".

También se puede borrar la cookie en cada iteración del test, o
establecer los valores que se deseen para las cookies.

Desde el ícono Grupo de Hilos con el botón derecho,
seleccionar "Añadir>Elementos de Configuración>Gestor de Cookies HTTP"

                                                                         
En esta pantalla se puede observar

a).- Selección de la política de Cookie (compatibility, rfc2965, default
ignorecookies, netscape, rfc2109).
b).- Ingreso de valores en el gestor (nombre, valor, dominio, path,seguro).

Paso 5: Jmeter posee dos tipos de Controladores de la pruebas:


a).- Muestradores, que permiten enviar peticiones a un servidor. Se configuran usando
"Elementos de Configuración".

b).- Controladores Lógicos, que permiten controlar el comportamiento de la prueba para
tomar decisiones en función de situaciones , valores, condiciones, etc. Cada con_
trolador puede tener uno o más "Elementos por defecto"

Desde el ícono Grupo de Hilos con el botón derecho,
seleccionar "Añadir>Controlador Lógico>Controlador Simple"

                                                                       

Paso 6:
Definimos una Petición HTTP, para lo cual se selecciona sobre el controlador
simple que se ha creado.

Desde el ícono Controlador Simple con el botón derecho,
seleccionar "Añadir>Muestreador>Petición HTTP"

                                                                     

En esta pantalla se puede observar

a).- Método: Get o Post.
b).- Path del recurso a pedir.
c).- Redirección automática.
d).- Seguir las redirecciones indicadas por el resultado de
la petición.
e).- Usar KeepAlive: Mantener la conexión viva entre peticiones.
f).- Envío de parámetros en la request.
g).- Envío de un fichero adjunto a la request.
h).- Los parámetros que no se completen serán heredados del elemento
de configuración "Valores por Defecto para peticiones HTTP".

                                                                     
Paso 7: A una petición se le puede añador asersiones que comprueban que la ejecución
de la petición es correcta.

Desde el ícono Petición HTTP con el botón derecho,
seleccionar "Añadir>Asersiones>Asersión de Respuesta"

                                                                         
Se pueden añadir los siguientes tipos de "Aserciones".

a).- Asersió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.

b).- Aserción de duración , para indicar un tiempo máximo de ejecución.
c).- Aserción HTML, para verificar que el html, xml o xhtml esté
correctamente construído (utiliza Tiny).
d).- Aserción MD5Hex, para verificar que la suma MD5 es la especifícada.
e).- Aserción de tamaño, para verificar que el tamaño <,>,=, etc que uno especificado.
f).- Aserción XML, para verificar que el resultado es un XML bien formado.
g).- Aserción Beanshell, para programación de pequeños shell scripts que realizan
verificaciones a medida.

Paso 8: Para lanzar un test de forma interactiva desde un servidor Proxy y grabando desde el Navegador

Desde el ícono Banco de Trabajo con el botón derecho,
seleccionar "Añadir>Elementos No de Prueba>Servidor Proxy HTTP"


Algunos de los tipos de Listener:

a).- 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.
b).- Gráfico de Resultados completo permite mostrar el tiempo.
c).- Gráfico de Resultado permite mostrar un grádico con los tiempos medio,
desviación, throughput, etc de la ejecución del plan de prueba.
d).- Monitor de Resultados, solo funciona con Tomcat 5.
e).- Escrito de datos simple: Vuelca los resultados a un fichero.
f).- Visualizador Spline: Gráfico de tiempos como spline.
g).- 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.
h).- 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.
i).- Vista de Resultados en Árbol: Muestra un árbol con todas las respuestas
y sus tiempos.

Paso 9:
Para ejecutar el Plan de Prueba se pulsa la opción del menú Lanzar>Arrancar.

La ejecución del Plan de Pruebas ejecuta los hilos configurados en "Grupo de Hilos".

Paso 10: Una vez arrancada el Plan de Prueba se obtienen resultados que se detallan a continuación:

GRAFICO DE RESULTADOS


VISUALIZADOR SPLINE


VER ÁRBOL DE RESULTADOS



VER RESULTADOS EN ÁRBOL



INFORME AGREGADO



3.- Pauta para Realizar Pruebas con Jmeter Grabando la Navegación.

Reglas para Transferencia en el filtro.
=======================================

1.- Si Monto [1...infinito] => Hacer transferencia con OTP.
2.- Si Monto [1....200.000] => Hacer transferencia con DigiCard.
3.- Si Monto [1....500.000] => Hacer transferencia con DigiPass.
4.- Si Monto [1....500.000] => Hacer transferencia con DigiMovil.


Característica del usuario
==========================

Usaurio = prueba
Usuario con estado 0001 en IDG.
Artefactos-->DigiCard
-->DigiPass
-->DigiMovil
-->No tiene OTP.


Descripción del Caso del Plan Integración con Vacman en Filtro.

Caso 5:
=======
Cliente nuevo procede a realizar una transferencia.


Condiciones Iniciales
=====================
1.- Usuario existente con código de estado 0001 en IDG (Token en IDG).
2.- Usuario posee artefactos DigiCard, DigiPass y DigiMóvil activos.
3.- Cliente accede al filtro y observa sus artefactos activos.


Efecto Esperado
===============

1.- Se deben mostrar todos los dispositivos activados
a).- DigiPass.
b).- DigiCard.
c).- DigiMovil.


Flujo del Caso 5
================

Pasos Datos de entrada Resultado Esperado
======================================================================================================================================================

1.- Ir a la página Incial http://serverbch:9900/AuthenticationFilterDemo/TransferenciaServlet.do 1.- Que Cargue la página sin problemas
2.- Ingresar user el campo Usuario = prueba 2.- Que se despliegue la página "Banco en Línea"
Presionar el Botón Click en "Aceptar"
"Aceptar".
3.- Ingresar monto de Monto Transferencia = 200.000 1.- Que se despliegue página "Transferencia de Fondos"
$200.000 en el campo click en "Aceptar"
Monto Transferencia
Presionar botón
"Aceptar"
4.- Ver lista de artefactos
sin datos de entradas 1.- Que se muestre en área "Factores de Autenticación"
activos los artefactos DigiCard, DigiPass o DigiMóvil.

Técnica de Stress
=================
Pruebas Grabadas con Proxy HTTP Server.

Paso 1: Crear Plan de Prueba.

Paso 2: Crear Grupo de Hilos.
a).- Números de Hilos = 5
b).- Periodo de Subida = 1
c).- Contador del bucle = 1

Paso 3: Crear Gestor de Cookies HTTP
a).- Nombre = Ingreso del Gestor de Cookies.
b).- Comentarios = Opcional ingresar comentarios.
c).- Check en Limpiar las cookies en cada iteración.
d).- Cookie Policy = default.


Paso 4: Crear Valores por Defecto para Pettición HTTP.
a).- Nombre = Ingreso del nombre del Valor
b).- Comentarios = Opcional ingreso de comentarios.
c).- Nombre de Servidor o IP = serverbch
d).- Protocolo = http
e).- Path = "/"

Paso 5: Agregar configuración HTTP Proxy Server.
(imagen HTTP Proxy Server)

a).- Nombre = Servidor Proxy HTTPue
b).- Comentarios = Ingresar comentarios.
c).- Puerto = 7777
d).- Controlador Objetivo = "Utilizar COntrolador Recording".
e).- Agrupación = "No agrupar muestradores".
f).- Type = Petición HTTP
g).- Check en Seguir Redirecciones, Utilizar KeepAlive.
h).- Agregar en URL Patrones a Excluir: .* \. Jpg, .* \. JS, .* \. Png, .* \. Gif ', .* \. Ico, CSS \. .*

Paso 6: Generar Solicitudes (Petición) HTTP por defecto.
(imagen solicitud http por defecto)

a).- Arrancar desde Servidor Proxy HTTP.
b).- Navegar por el browser configurado.
c).- Parar la nevegación seleccionando el botón Parar del Servidor Proxy HTTP

Paso 7: Agregar Listener

a).- Por cada petición generada automàticamente agregar:
-Botón derecho del mouse>Añadir>Listener>Gráfico de Resultados.
-Botón derecho del mouse>Añadir>Listener>Ver Resultados en Árbol.
-Botón derecho del mouse>Añadir>Listener>Ver Árbol de Resultados.

Paso 8: Lanzar el Plan de Pruebas.

a).- Menú Lanzar>Arrancar.
b).- Esperar que se detenga el lanzamiento.

Paso 9: Verificar los resultados.

3 comentarios:

  1. Buenas tardes,
    Estoy leyendo su log y no puedo visualizar las imagenes. Como puedo acceder a ellas
    Gracias
    Raquel

    ResponderEliminar
    Respuestas
    1. Hola Raque:

      Estoy trabajando en la actualización de este artículo, esto rescatando las imágenes que se perdieron y mejorando el conocimiento de esta herramienta.

      Gracias por el reporte

      Eliminar