09. “Se cayó el sistema”: Pruebas de Rendimiento o Performance
Te damos la bienvenida a una nueva nota, en la que continuaremos conociendo los diferentes tipos de pruebas. Iniciamos por las pruebas funcionales, luego fue el turno de las automatizadas, y en este artículo haremos una introducción a las Pruebas de Rendimiento, también conocidas como de Performance.
¿Cuál es el objetivo de estas pruebas?
Comencemos por la famosa frase del título de este artículo. El principal objetivo del Testing de Rendimiento o Performance es evitar esas cuatro palabras tan incómodas: “se cayó el sistema”.
Probar la Performance es esencial en cualquier disciplina de la ingeniería, ya que permite medir el rendimiento de un sistema o proceso en términos de velocidad, capacidad, fiabilidad y eficiencia. Las pruebas se realizan para determinar la capacidad del sistema para manejar una carga de trabajo significativa, identificando de esta forma posibles problemas que se puedan presentar.
En la ingeniería civil o aeronáutica, estas pruebas son obligatorias en el proceso de construcción. Estas pruebas permiten a los ingenieros evaluar el comportamiento, resistencia, movimientos, etc. de las estructuras frente a distintas situaciones.
En el caso de la ingeniería aeronáutica, se realizan pruebas para verificar que las alas de los aviones tengan la flexibilidad adecuada para soportar las distintas situaciones a las que los factores climáticos puedan exponerlas. Por su parte, en la ingeniería civil, en particular la construcción de puentes, estos también son probados con carga significativa.
Cuando hablamos de la construcción de software, las pruebas de rendimiento pueden ser críticas para garantizar que las aplicaciones funcionen correctamente bajo ciertas condiciones de demanda, ya que permiten identificar problemas de rendimiento antes que se libere el software al público.
En síntesis, la medición de la Performance es importante porque permite identificar problemas, tomar medidas para mejorar el rendimiento y mejorar la calidad del producto o servicio final.
Arquitectura
La arquitectura de un sistema es un concepto fundamental para poder estudiar su Performance. Todo sistema de software tiene una arquitectura definida, se haya pensado en esta o no.
La arquitectura es el esqueleto del sistema e influye en los atributos de calidad definidos. Algunos atributos de calidad son propiedades externamente visibles, como la seguridad, usabilidad, latencia, o modificabilidad, entre otros.
Estructura y organización son las claves de la arquitectura de un sistema. Incluyen la interacción entre componentes y su distribución física, las estructuras de control, los protocolos de comunicación, la sincronización o el acceso a los datos, entre otros.
Los distintos elementos de la arquitectura se pueden pensar como motores de procesamiento. Cada uno de estos motores podrá procesar distintas tareas en un determinado tiempo, utilizando ciertos recursos. Para estudiar la Performance del sistema ante la solicitud de un usuario, será vital conocer el flujo de los datos asociados a esa solicitud a través de estos motores de procesamiento.
En consecuencia, la Performance global del sistema será el resultado, no lineal, de la Performance de los distintos componentes de la arquitectura. Por tal motivo, es importante conocer la arquitectura del sistema. Dependiendo de lo que se desee mejorar, habrá que centrarse en unos u otros componentes. En consecuencia, conociendo y monitoreando su comportamiento se logra detectar, aislar, ajustar y mejorar la Performance de cada componente y así la global del sistema.
Para hacer Testing de Performance hay que tener en cuenta los elementos estructurales del sistema, en ellos y sus interfaces/interacciones radican los posibles problemas de desempeño, los denominados cuellos de botella.
Tipos de pruebas de Rendimiento
En la industria se manejan distintas categorías de pruebas de Performance. Dependiendo de su objetivo, podemos clasificarlas principalmente en:
Pruebas de carga: se evalúa el comportamiento de un sistema o aplicación bajo una condición de carga normal o esperada. El objetivo es identificar problemas de Performance, optimizar la Performance, y entender cómo el sistema puede (o no) manejar la carga generada por los usuarios perdiendo el menor rendimiento posible.
Pruebas de estrés: se evalúa el comportamiento del sistema o aplicación bajo una condición de carga extrema no esperada. El objetivo es identificar los puntos de quiebre del sistema o puntos de falla y problemas potenciales que pueden causar si se somete a una condición extrema. Ayuda a optimizar y mejorar el rendimiento general, la escalabilidad y la estabilidad del sistema.
Pruebas de escalabilidad: es un caso particular de prueba de carga, donde se estudia la Performance que se logra aumentando y disminuyendo los recursos del sistema, por ejemplo, probando que mejoras se advierten al aumentar la CPU en el servidor de bases de datos.
Pruebas de volumen: es un caso particular de una prueba de carga, donde se estudia la Performance que se logra al incrementar el volumen de datos del sistema.
Lo más importante a tener en cuenta a la hora de pensar en una prueba de Performance no es en qué categoría cae, sino qué preguntas precisamos responder, qué información queremos obtener, qué riesgos queremos mitigar.
Palabras de experto
Federico es uno de nuestros expertos en pruebas de rendimiento y docente de la Especialización en Testing de Performance. Te invitamos a ver esta charla, en la que nos cuenta sobre los desafíos, estrategias y tendencias en Testing de Performance.
¿Qué temática será la próxima que abordemos? Recordá que recibimos tus sugerencias aquí o en nuestras redes. ¡Hasta la próxima!