testing de performance

 ¿Recordás aquella vez que el penúltimo capítulo de Game Of Thrones no se pudo ver durante la primera media hora porque "El sistema tuvo problemas para cargar el video"? ¿O fuiste de los que descargaron Disney+ en su primer día de release y no pudiste acceder al contenido detrás del mensaje "Contenido no disponible"?
Tanto desde HBO como desde Disney atribuyeron este error a una "gran demanda que no esperaban" para la cual la aplicación no estaba preparada.
En este post introduciremos una de las prácticas para preparar una aplicación a este tipo de situaciones: el testeo de performance.

 

¿Qué es?

 

Es una práctica dentro de las pruebas no funcionales de un sistema de software donde se evalúa con diferentes herramientas y métricas cómo responde ante una determinada carga de trabajo. Entre los factores que se evalúan dentro de estas prácticas, están el tiempo de respuesta del sistema ante peticiones desde la red, cantidad de consultas a base de datos y lectura/escritura de archivos, volumen de usuarios que podrían utilizar el sistema. 

El objetivo del testeo de performance radica en evaluar la relación entre las características técnicas del sistema y el crecimiento del negocio. ¿Qué ganancia genera al negocio el funcionamiento técnico del sistema? ¿Qué podría mejorarse de estos requerimientos que impacte directa o indirectamente con la tasa de conversión? ¿Qué partes del sistema significan una posible pérdida al negocio?

Con este fin, existen diferentes tipos de testeos de performance que miden cómo responde el sistema dado las condiciones esperadas de su uso.

Pruebas de carga 

También conocidos como load testing, las pruebas de carga miden cómo responde el sistema dadas diferentes cantidades específicas de usuarios. Puede pensarse como la manera de responder a "¿Cuántos usuarios con acceso y usando la aplicación son soportados?"

Pruebas de stress

Las pruebas de stress evalúan cómo se comporta la aplicación pasado su límite de carga. ¿Continúa funcionando cómo esperaba hasta el límite de usuarios que espera y no para el resto? ¿Deja de ejecutar procesos? ¿Se cae el sistema? ¿Se reinicia si se cae?

Pruebas de capacidad 

También conocido como soak testing o endurance testing, las pruebas de capacidad evalúan el comportamiento de la aplicación sostenida una carga (usuarios virtuales usándola y procesos ejecutándose) por un largo período de tiempo. ¿Continúa funcionando cómo espero la aplicación con esa misma carga sostenido en el tiempo? ¿Cómo espero que se comporte si cambia pasado un tiempo en específico? 

Pruebas de volumen

Las pruebas de volumen buscan evaluar el comportamiento de una aplicación dado diferentes volúmenes de datos y lecturas  y escrituras de archivos. ¿Cómo espero que funcione el sistema dados volúmenes específicos de datos? ¿Cómo se comporta pasado un volumen específico? ¿Cuántas lecturas/escrituras de archivos espero que realice?

Pruebas de picos

Las pruebas de picos evalúan el comportamiento del sistema tras una subida y bajada repentina de carga (accesos a la app): ¿Cuánta carga soporta la app dado un pico determinado? ¿Hasta qué altura no puede responder como se espera o requiere que lo haga? ¿Cómo se comporta en la bajada de la carga? 

 

Métricas

Existen varios parámetros que queremos que el sistema maneje con nuestros tests, y es importante definirlos antes de comenzar a testear. 

Entre ellos, se encuentran: 

  • Cantidad de tiempo que ocupa el procesador ejecutando hilos
  • Uso de memoria
  • El tiempo de lectura/escritura en disco
  • Cantidad de memoria virtual usada
  • Cantidad de páginas leídas/escritas en disco
  • Tiempos de respuesta de peticiones
  • Rango de peticiones por segundo
  • Número de peticiones de usuario con pools de conexión respondidas
  • Número de transacciones a base de datos por proceso
  • Cantidad de accesos a archivos específicos
  • Concurrencia de usuarios
  • Cantidad de memoria disponible 

 

Realizar testing de performance se trata de evaluar las características técnicas de un sistema para verificar que se está comportando de la manera que se espera. ¿Cuál es esa manera? Aquella que esté definida según el negocio. ¿El negocio requiere que el sistema responda a una gran cantidad de usuarios concurrentes siempre? ¿Es posible dejar de exigirle en algún momento del día? ¿Hay procesos dentro del sistema que aportan mayor valor que otros? ¿Cuál es el volumen de datos a manejar? ¿Un archivo que sea muy consultado por los usuarios y baja su performance? Según estas respuestas, es que se evaluará qué técnica de testeo aportará mejor performance del sistema y se obtiene el impacto que tiene en el negocio, y qué planes podemos generar para cumplir con esos requisitos.

Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!