Pruebas de rendimiento, ¿hasta dónde llega tu aplicación?

Las pruebas de rendimiento, o performance testing, quizá no están teniendo últimamente la repercusión que deberían, pero, en una época Cloud y con cada vez más servicios alojados en estos entornos es importante evaluar si deberíamos prestarles más atención.

Es fundamental que empresas como Netflix, Amazon, Aliexpress o Microsoft, no tengan agujeros de seguridad, pero, ¿qué ocurriría si no pudieran abastecer la demanda de los usuarios para utilizar sus servicios?

Sí, posiblemente no sería tan catastrófico como exponer los datos bancarios de sus clientes, pero posiblemente, también acaben perdiendo un importante número de clientes, ya que el rendimiento forma parte de la experiencia de usuario al utilizar un software.

Performance testing

Para ponerle solución, las pruebas de rendimiento ayudan (como la mayoría de las pruebas) a que no haya imprevistos en la puesta en producción.

¿Qué son las pruebas de rendimiento?

Las pruebas de rendimiento abarcan varios tipos de pruebas enfocados en el rendimiento y la capacidad de respuesta de un sistema o componente bajo diferentes volúmenes de carga.

Dicho de otra forma, las pruebas de rendimiento determinan como se comporta un sistema en términos de respuesta y estabilidad sobre una carga de trabajo concreta.

Por ponerlas en contexto sobre otras pruebas, irían después de realizar las pruebas unitarias y las pruebas de integración.

Tipos de pruebas de rendimiento

Existen varios tipos de pruebas de rendimiento, entre los que podríamos destacar:

Pruebas de carga

Las pruebas de carga son aquellas que se enfocan en la habilidad de un sistema para gestionar niveles de carga (posibles en la realidad) de forma anticipada a que ocurran.

Se realizan a través del incremento de solicitudes generadas por un número controlado de usuarios o procesos

Pruebas de estrés

En este caso, lo que se trata es de medir la capacidad que tiene un sistema o un componente, para gestionar una carga máxima que, o bien está en su límite, o bien lo sobrepasa.

Se puede utilizar para medir la capacidad de dicho sistema o componente en caso que no disponga de suficientes recursos (como por ejemplo ancho de banda, procesador, memoria, etc…)

También se conocen como pruebas de esfuerzo.

Pruebas de capacidad

Estas pruebas son similares a las de estrés. Una carga se incrementa en un sistema monitorizado sobre condiciones de fallo predeterminadas.

De esta forma, las pruebas de capacidad pueden medir el número, por ejemplo, de usuarios, que se podrá tratar sin disminuir el rendimiento o, aunque lo haga, que no deje de cumplir los objetivos mínimos establecidos.

Pruebas de escalabilidad

En las pruebas de escalabilidad, el objetivo es medir si un sistema será capaz de cumplir con los objetivos de rendimiento posibles en un futuro.

Gracias a estas pruebas, es posible determinar si un sistema podrá crecer (aumentando el número de usuarios, de conexiones concurrentes, etc…) sin que se produzcan errores o cumpliendo las expectativas planificadas.

Spike testing

En este tipo de pruebas, el procedimiento se lleva a cabo, incrementando o reduciendo, de forma repentina, la carga generada por un elevado número de usuarios, mientras se monitoriza el comportamiento del sistema.

Con esta prueba, es posible ver si el rendimiento se ve afectado ante cambios drásticos e inesperados de carga.

Pruebas de resistencia

En este caso, nos encontramos con un tipo de pruebas enfocadas en la estabilidad del sistema durante un periodo de tiempo específico dentro de un contexto del sistema operativo concreto.

Para que se entienda mejor, estas pruebas miden la capacidad del sistema para afrontar situaciones concretas de demandas de recursos, es decir, que no hayan fugas de memoria, problemas con el número de las conexiones de bases de datos, grupos de hilos, etc…

Pruebas de concurrencia

Las pruebas de concurrencia se centran en el impacto que podrían tener situaciones concretas cuando ocurren de forma simultánea sobre un sistema.

Por ejemplo, un elevado número de software de terceros, realizando la misma llamada sobre una API, o muchos usuarios enviando el mismo formulario de contacto.

Qué objetivos tienen las pruebas de rendimiento

Las pruebas de rendimiento sirven para investigar, medir, validar o verificar otros atributos de la calidad del sistema, como podrían ser la escalabilidad o la fiabilidad.

Sirven para mostrar si un sistema puede afrontar unos criterios de trabajo planificados para situaciones futuras.

Además, también es útil para poder comparar dos sistemas o componentes, lo que podría ayudarte a determinar cuál es más oportuno utilizar.

Por último, también te pueden ayudar a detectar qué partes de un sistema empiezan a fallar primero ante un incremento de la carga recibida.

Herramientas para realizar pruebas de rendimiento

Las herramientas de performance testing incluyen las siguientes categorías:

  • Generadores de carga: Estas herramientas, a través del IDE o editor de código, crean y ejecutan varias instancias que simulan los comportamientos de clientes acuerdo a un determinado perfil.
  • Consola de gestión de la carga: Con este tipo de herramientas, se realizan las tareas encargadas de iniciar o detener las determinadas cargas que aplicaremos al sistema objeto de las pruebas.
  • Herramientas de monitorización:Son imprescindibles ya que, gracias a ellas, es posible supervisar, grabar y analizar el comportamiento del sistema ante las pruebas.

Herramientas de pruebas de rendimiento que se podrían destacar son

JMeter

Es Opensource y quizá la más utilizada. Es un proyecto de Apache que puede medir el desempeño de varios tipos de servicios, pero está orientada a aplicaciones web.

Puedes encontrar más información en su sitio web.

LoadRunner

Esta herramienta es propietaria, está desarrollada por Micro Focus y apareció en 1993

Muy útil para las pruebas de concurrencia. Disponible en para Windows y Linux, en 11 idiomas, y desde su versión 12.55 se pueden ejecutar scripts de Apache JMeter.

Puedes encontrar más información y solicitar un prueba gratuita aquí.

Neoload

Neoload también es software propietario, está desarrollado en Java, y disponible para Windows, Linux, MacOS y Solaris.

Sus scripts se desarrollan a través de una interfaz de forma más intuitiva que con las anteriores herramientas.

Destaca también por la velocidad de ejecución de sus pruebas.

Puedes ver más sobre esta herramienta o descargar una demo desde su página web.

Fuentes:

Deja un comentario