Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Pruebas de rendimiento: Poniendo a prueba tu aplicación

¿Qué son las pruebas de rendimiento? ¿Son las mismas que las de carga?¿Sabes en qué consiste el test de estrés de un entorno? ¿No? ¡Pues en el siguiente artículo tenemos las respuestas! 😊 

 Pruebas de rendimiento

Estas pruebas tienen como objetivo demostrar que un sistema cumple ciertos criterios en cuestión de rendimiento (como su propio nombre indica😅).

El Test de Rendimiento o Performance Test nos permite conocer la resistencia y calidad de respuesta sobre un entorno o aplicación determinada, facilitando además la identificación de posibles cuellos de botella y/o partes del sistema y bajo qué cuantía de carga de trabajo son susceptibles de reproducir un desempeño no deseado. Todo ello se fundamenta mediante el seguimiento de tiempos de respuesta de las peticiones, midiendo tiempos de carga, tiempos de acceso, y un largo etc. de parámetros cuidadosamente controlados que, además, podremos configurar. 

 Independientemente de la herramienta que utilicemos, este tipo de prueba siempre se llevará a cabo bajo un procedimiento similar; estudiando el comportamiento y respuesta del sistema que queramos probar, el cual es sometido a una serie de instrucciones que el mismo tester programará. Para ello se establece un número simulado de usuarios concurrentes que irán trabajando sobre la aplicación, realizando las peticiones que se estipule durante el tiempo que vaya a durar la prueba; el cual también es configurable.  

 En definitiva, estas pruebas nos ayudan a determinar la solidez de la aplicación en diferentes escenarios y bajo distintos tipos de demanda, englobando de esta forma distintos tipos de prueba relacionadas con las Performance Test. Tranquilos… sobre esas mismas pruebas pondremos algún ejemplo y aclararemos conceptos en este mismo artículo 😉 

Pruebas de carga 

 ¿Cómo va a responder mi aplicación cuando, de verdad, le toque emplearse a fondo? 

 Siguiendo el punto anterior, dentro de las pruebas de rendimiento contamos con las archiconocidas Pruebas de carga o Load Test. 

 En muchas ocasiones y según el contexto se utiliza el termino de “prueba de carga” y “prueba de rendimiento” de forma indistinta, no obstante, vamos a considerar la prueba de carga como uno de los tipos dentro de las pruebas de rendimiento; ya que persiguen un objetivo mucho más concreto, el cual explicamos a renglón seguido. 

 Las pruebas de carga son aquellas pruebas de rendimiento que nos ayudarán determinar y validar el comportamiento de la aplicación bajo una carga de usuarios y peticiones determinadas, normalmente semejante al ambiente de producción. 

Para llevar a cabo estas pruebas, siempre debemos contar con una aproximación del número máximo de usuarios que puede llegar a estar navegando simultáneamente sobre el entorno a probar, así como cuáles van a ser sus peticiones más recurrentes y/o más susceptibles de colapsarse. De esta manera, configuraremos una prueba de carga dotada de un número de usuarios virtuales similar (algo más elevada, aconsejablemente) que realizarán una serie de instrucciones determinada (como hemos explicado: aquellas de uso más frecuente o propensas a devolver error). 

Resumiendo, este tipo de pruebas (dentro de las pruebas de rendimiento), tiene el propósito de darnos a conocer cómo va a responder la aplicación en los supuestos momentos de carga extrema (real) a los que pueda verse enfrentado. 

Puesto que mediante la obtención de los resultados podremos conocer si la aplicación rendiría lo suficiente en caso de alcanzarse la carga probada; carga en la que, como explicamos anteriormente, procuraremos emular esos posibles picos de concurrencia en cuanto a peticiones/usuario. 

 Pruebas de estrés 

¿Hasta qué punto, o nivel de carga aguanta nuestro sistema sin “romperse””? 

 El propósito de la Prueba de estrés o Stress Test es conocer el limité de un sistema; es decir: el punto de carga a partir del cual un sistema deja de rendir de forma óptima. 

 Para este tipo de prueba, es vital programar una inyección de carga (peticiones/usuarios) gradual o escalonada a lo largo del tiempo en que hayamos programado la prueba, fijando su tope en un punto en el que, de antemano, conozcamos que el sistema va a colapsar.

De esta manera podrá observarse de forma muy gráfica cuál es el punto de ruptura, y el “máximo” que podemos pedirle. Conoceremos que el sistema se colapsa cuando por ejemplo los umbrales de tiempo máximo de respuesta se sobrepasen o comiencen a registrarse los time outs. 

 Hay que tener cuidado y no confundir las pruebas de estrés con pruebas de carga. Las de estrés tratan de llevar al límite un sistema. Mientras que las de carga, aunque nos puedan resultar parecidas, no buscan llegar al límite ni persiguen el mismo objetivo; únicamente estudiar el comportamiento del sistema en unas condiciones determinadas (la máxima carga posible/real esperada que explicábamos). 

 Pruebas de capacidad 

¿Y si el día de mañana necesito más…? 

 Las Pruebas de Capacidad o Capacity Testing consisten en pruebas de rendimiento orientadas a conocer el número máximo de usuarios/peticiones que puede soportar la aplicación sin fallar, o manteniendo el objetivo esperado sobre el rendimiento. 

Entendamos este tipo de prueba de rendimiento como algo muy similar a la prueba de carga, pero más orientadas al estudio de la capacidad del sistema, y al futuro crecimiento en cuanto a número de usuarios/peticiones. Se necesita saber cuál es la respuesta del sistema actual frente a futuras posibles cargas de trabajo más elevadas con tal de decidir si la actual app puede abordar esos volúmenes o debe ser reforzada en cuanto a recursos. 

Las pruebas de capacidad tienen su razón de ser a la hora de definir estrategias de escalado. Esto cobra sentido ya que los resultados de las pruebas de capacidad ayudan a decidir y planificar sobre la infraestructura que soporta el sistema, así como a validar y mejorar sus modelos. 

  Pruebas de resistencia

¿Cómo va a responder mi sistema cuando lo sometemos a una carga determinada (normalmente elevada) durante un tiempo prolongado de tiempo? 

 Tal y como en las pruebas anteriores, las Pruebas de Resistencia o Endurance Testing de un sistema,  se realizan a partir de la observación de ciertos parámetros obtenidos en los resultados de unas determinadas pruebas de rendimiento; en las que vamos a proponer una carga considerablemente exigente de forma sostenida. 

Mediante estas pruebas conseguiremos detectar cuáles son los problemas (errores sen las peticiones o fallos sobre el mismo rendimiento) derivados de un uso prolongado bajo unas peticiones repetidas.  

mm

Sobre Adrián Prats

Experto en Administración de Sistemas Informáticos en Red, Sharepoint y Windows Server 2012R2 (MCP 70-410 y MCP 70-497). Tengo amplia experiencia como Analista QA, realizando pruebas funcionales, test de carga y rendimiento, automatización de pruebas, pruebas unitarias (unit test), pruebas de integración, pruebas exploratorias, elaboración del test plan, etc. Actualmente soy Quality Assurance Specialist en ENCAMINA.
Esta entrada ha sido publicada en QA. Enlace permanente.
Suscríbete a Piensa en Sofware desarrolla en Colores

Suscríbete a Piensa en Sofware desarrolla en Colores

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores