miércoles, 2 de julio de 2008

Estresando aplicaciones

Una de las pruebas clásicas para determinar el rendimiento de una aplicación web es la prueba de estrés.

Las pruebas de estrés sirven para obtener una medida del rendimiento de la aplicación en diferentes escenarios de carga haciendo especial énfasis en la robustez, disponibilidad y tolerancia a fallos. El objetivo de estas pruebas es comprobar que la aplicación es capaz de seguir funcionando en situaciones de servicio extremas con mucha concurrencia o poca capacidad computacional.

Tipos de prueba

Existen varios tipos de pruebas de estrés, dependiendo de como se modeliza la carga de prueba:

- Pruebas con carga constante, que estresan la aplicación aplicando un volumen de usuarios concurrentes constante en el tiempo. Este tipo de prueba es el típico y sirve para comprobar como se comporta el sistema bajo una carga elevada (o no).

- Pruebas con carga creciente, donde el número de usuarios concurrente se va incrementando con el tiempo. Estas pruebas son útiles para detectar los puntos de saturación de una aplicación.

- Pruebas de carga variable, donde el número de usuarios concurrentes varía con el tiempo. SOn similares a las primeras pero permiten estudiar el comportamiento de una aplicación ante picos de carga.

Métricas

A la hora de hacer las pruebas de estrés lo que nos interesa es recoger información suficiente para valorar el rendimiento y la robustez del aplicativo analizado.

Hay muchas métricas posibles cuando se estudia la respuesta de una aplicación web, pero las más utilizadas son:
  • Tiempo de respuesta.
  • Número de páginas servidas por segundo.
  • Número de sesiones por segundo.
  • % de errores.
  • Número de hits por segundo
Otro tipo de métricas interesante a la hora de evaluar el rendimiento de una aplicación, corresponde al comportamiento del servidor de aplicaciones. Estás métricas incluyen:
  • Número de sesiones creadas.
  • Número de transacciones
  • Comportamiento de los pools de conexiones
  • Respuesta de la CPU
  • Consumo de memoria

Herramientas

Para hacer las pruebas y obtener los datos deseados es necesario escoger una buena herramienta.

Las características principales que debería tener una buena herramenta de estrés serían : flexibilidad para definir escenarios de prueba, potencia y versatilidad para crear los scripts de prueba y amplia recolección de datos de respuesta.

Entre las muchas herramientas disponibles destacaría las siguientes:

- JMeter de Apache. Viene a ser la herramienta estándar para las pruebas de estrés de aplicaciones web. Esta hecho en Java por lo que corre sobre cualquier entorno. Es bastante potente en el aspecto de creación de scripts. Además es extensible y gratuito.

- BadBoy también es muy popular y más fácil de usar que JMeter. La interficie gráfica es bastante amigable y las herramientas para crear scripts y escenarios son versátiles. Tiene versiones de pago y gratuita.

- WAPT de SoftLogica. La apuesta de la casa. Es una herramienta de pago que proporciona unos resultados numéricos y gráficos muy potentes y fáciles de comprender. Además permite la ejecución el paralelo de diferentes escenarios.

En definitiva, como un paso más para garantizar la calidad de una aplicación web, es importante realizar este tipo ed pruebas, con el doble objetivo de encontrar posibles problemas en la implementación de la aplicación y demostrar la robustez de la solución final.

No hay comentarios: