what is scalability testing
Introducción a las pruebas de escalabilidad:
La prueba de escalabilidad es una metodología de prueba no funcional en la que el rendimiento de una aplicación se mide en términos de su capacidad para aumentar o reducir el número de solicitudes de usuario u otros atributos de medida de rendimiento similares.
Las pruebas de escalabilidad se pueden realizar a nivel de hardware, software o base de datos.
Los parámetros utilizados para esta prueba difieren de una aplicación a otra, para una página web, podría ser el número de usuarios, uso de CPU, uso de red, mientras que para un servidor web sería el número de solicitudes procesadas.
Este tutorial le dará una descripción completa de Prueba de escalabilidad junto con sus atributos y los diversos pasos involucrados en la realización de la prueba con ejemplos prácticos que le permitirán comprender el concepto de una mejor manera.
Lo que vas a aprender:
- Pruebas de escalabilidad frente a pruebas de carga
- Atributos de prueba de escalabilidad
- Pasos para probar la escalabilidad de una aplicación
- Conclusión
- Lectura recomendada
Pruebas de escalabilidad frente a pruebas de carga
La prueba de carga mide la aplicación bajo prueba bajo la carga máxima a la que el sistema se bloqueará. El objetivo principal de las pruebas de carga es identificar el punto máximo después del cual los usuarios no podrían utilizar el sistema.
Tanto la carga como la escalabilidad se rigen por la metodología de pruebas de rendimiento.
La escalabilidad se diferencia de las pruebas de carga en el hecho de que la prueba de escalabilidad mide el sistema en las cargas mínima y máxima en todos los niveles, incluidos los niveles de software, hardware y base de datos. Una vez que se determina la carga máxima, los desarrolladores deben responder de manera adecuada para asegurarse de que el sistema sea escalable después de una carga en particular.
que aplicación te permite descargar videos de youtube
Ejemplo: Si las pruebas de escalabilidad determinan que la carga máxima es de 10,000 usuarios, entonces, para que el sistema sea escalable, los desarrolladores deben tomar medidas en factores como disminuir el tiempo de respuesta después de que se alcanza el límite de 10,000 usuarios o aumentar el tamaño de la RAM para adaptarse a los crecientes datos de los usuarios.
Las pruebas de carga implican colocar una carga máxima en las aplicaciones desarrolladas de una sola vez, mientras que las pruebas de escalabilidad implican aumentar gradualmente la carga durante un período de tiempo progresivamente.
Las pruebas de carga determinan el punto en el que se bloquea la aplicación, mientras que la escalabilidad intenta identificar el motivo del bloqueo de la aplicación y tomar medidas para resolver el problema.
En resumen, las pruebas de carga ayudan a identificar los problemas de rendimiento, mientras que las pruebas de escalabilidad ayudan a identificar si el sistema puede escalar al creciente número de usuarios.
Atributos de prueba de escalabilidad
Los atributos de las pruebas de escalabilidad definen las medidas de rendimiento en función de las cuales se realizarán estas pruebas.
A continuación, se muestran algunos de los atributos comunes:
1) Tiempo de respuesta:
- El tiempo de respuesta es el tiempo entre la solicitud del usuario y la respuesta de la aplicación. Esta prueba se realiza para identificar el tiempo de respuesta del servidor bajo carga mínima, carga umbral y carga máxima para identificar el punto en el que la aplicación se rompería.
- El tiempo de respuesta puede aumentar o disminuir según la carga variable de usuarios en la aplicación. Idealmente, el tiempo de respuesta de una aplicación se reduciría a medida que aumenta la carga de usuarios.
- Se puede considerar que una aplicación es escalable si puede ofrecer el mismo tiempo de respuesta para diferentes niveles de carga de usuarios.
- En el caso de entornos agrupados en los que la carga de la aplicación se distribuye entre varios componentes del servidor, las pruebas de escalabilidad deben medir hasta qué punto el equilibrador de carga distribuye la carga entre varios servidores. Esto asegurará que un servidor no se sobrecargue con solicitudes mientras que el otro servidor está inactivo esperando que ingrese una solicitud.
- El tiempo de respuesta de cada componente del servidor debe medirse cuidadosamente si la aplicación está alojada en un entorno en clúster y las pruebas de escalabilidad deben asegurarse de que el tiempo de respuesta de cada componente del servidor sea el mismo independientemente de la cantidad de carga colocada en cada servidor.
- Ejemplo: El tiempo de respuesta se puede medir como el tiempo en el que el usuario ingresa la URL en un navegador web hasta el tiempo que tarda la página web en cargar el contenido. Cuanto menor sea el tiempo de respuesta, mayor será el rendimiento de una aplicación.
2) Rendimiento:
- El rendimiento es la medida de una serie de solicitudes procesadas durante una unidad de tiempo por la aplicación.
- El resultado del rendimiento puede diferir de una aplicación a otra. Si se trata de una aplicación web, el rendimiento se mide en términos del número de solicitudes de usuario procesadas por unidad de tiempo y si se trata de una base de datos. el rendimiento se mide en términos de una serie de consultas procesadas en unidad de tiempo.
- Se considera que una aplicación es escalable si puede ofrecer el mismo rendimiento para distintos niveles de carga en las aplicaciones internas, el hardware y la base de datos.
3) Uso de CPU:
- El uso de la CPU es una medida de la utilización de la CPU para realizar una tarea por una aplicación. La utilización de la CPU generalmente se mide en términos de la unidad MegaHertz.
- Idealmente, cuanto más optimizado sea el código de la aplicación, menor será la utilización de CPU observada.
- Para lograr esto, muchas organizaciones utilizan prácticas de programación estándar para minimizar la utilización de la CPU.
- Ejemplo: Eliminando el código muerto en la aplicación y minimizando el uso de Thread. Los métodos de suspensión son una de las mejores prácticas de programación para minimizar la utilización de la CPU.
4) Uso de memoria:
- El uso de memoria es una medida de la memoria consumida para realizar una tarea por una aplicación.
- Idealmente, la memoria se mide en términos de bytes (MegaBytes, GigaBytes o Tera Bytes) que utiliza la aplicación desarrollada para acceder a la memoria de acceso aleatorio (RAM).
- El uso de memoria de una aplicación se puede minimizar siguiendo las mejores prácticas de programación.
- Ejemplos de mejores prácticas de programación serían no usar bucles redundantes, reducir los accesos a la base de datos, usar el caché, optimizar el uso de consultas SQL, etc. Se considera que una aplicación es escalable si minimiza el uso de la memoria para la máxima extensión posible.
- Ejemplo: Si el espacio de almacenamiento disponible para un número específico de usuarios se queda sin memoria, el desarrollador se verá obligado a agregar almacenamiento de base de datos adicional para compensar la pérdida de datos.
5) Uso de la red:
- El uso de la red es la cantidad de ancho de banda consumida por una aplicación bajo prueba.
- El objetivo del uso de la red es reducir la congestión de la red. El uso de la red se mide en términos de bytes recibidos por segundo, tramas recibidas por segundo, segmentos recibidos y enviados por segundo, etc.
- Las técnicas de programación, como el uso de técnicas de compresión, pueden ayudar a reducir la congestión y minimizar el uso de la red. Se considera que una aplicación es escalable si puede funcionar con una congestión de red mínima y ofrecer un alto rendimiento de la aplicación.
- Ejemplo: En lugar de seguir un mecanismo de cola para procesar las solicitudes del usuario, un desarrollador puede escribir el código para procesar las solicitudes del usuario a medida que la solicitud llega a una base de datos.
Aparte de estos parámetros, hay algunos otros parámetros menos utilizados, como el tiempo de respuesta de la solicitud del servidor, el tiempo de ejecución de la tarea, el tiempo de la transacción, el tiempo de carga de la página web, el tiempo para obtener la respuesta de la base de datos, el tiempo de reinicio, el tiempo de impresión, el tiempo de la sesión, la transición de pantalla , transacciones por segundo, hits por segundo, solicitudes por segundo, etc.
Los atributos de las pruebas de escalabilidad pueden diferir de una aplicación a otra, ya que la medida de rendimiento de las aplicaciones web puede no ser la misma que la de una aplicación de escritorio o cliente-servidor.
Pasos para probar la escalabilidad de una aplicación
La principal ventaja de realizar esta prueba en una aplicación es comprender el comportamiento del usuario cuando se alcanza la carga máxima y las formas de resolverla.
Además, esta prueba permite a los probadores identificar la degradación del lado del servidor y el tiempo de respuesta con respecto a la carga de usuarios de la aplicación. Como resultado, esta prueba se prefiere en varias organizaciones en todo el mundo.
A continuación se muestra la lista de pasos para probar la escalabilidad de una aplicación:
- Cree escenarios de prueba repetibles para cada uno de los atributos de prueba de escalabilidad.
- Pruebe la aplicación para diferentes niveles de carga, como cargas bajas, medias y altas, y verifique el comportamiento de una aplicación.
- Cree un entorno de prueba que sea lo suficientemente estable como para soportar todo el ciclo de prueba de escalabilidad.
- Configure el hardware necesario para realizar esta prueba.
- Defina un conjunto de usuarios virtuales para verificar el comportamiento de una aplicación con una carga de usuarios variable.
- Repita los escenarios de prueba para varios usuarios en diferentes condiciones de aplicaciones internas, hardware y cambios en la base de datos.
- En el caso de un entorno en clúster, valide si el equilibrador de carga está dirigiendo las solicitudes del usuario a varios servidores para asegurarse de que ningún servidor esté sobrecargado por una serie de solicitudes.
- Ejecute los escenarios de prueba en el entorno de prueba.
- Analizar los informes generados y verificar las áreas de mejora, si las hay.
Conclusión
En una palabra,
=> La prueba de escalabilidad es una metodología de prueba no funcional para verificar si una aplicación puede escalar hacia arriba o hacia abajo a los diferentes atributos. Los atributos utilizados para esta prueba variarán de una aplicación a otra.
=> El objetivo principal de esta prueba es determinar cuándo una aplicación comienza a degradarse con una carga máxima y tomar las medidas adecuadas para garantizar que la aplicación desarrollada sea lo suficientemente escalable para adaptarse a los cambios en las aplicaciones internas, el software, el hardware y también la base de datos. cambios en el futuro.
=> Si esta prueba se realiza correctamente, se pueden descubrir errores importantes con respecto al rendimiento en el software, hardware y base de datos en las aplicaciones desarrolladas.
=> Una gran desventaja de esta prueba sería su limitación de almacenamiento de datos, con límites en el tamaño de la base de datos y el espacio del búfer. Además, las limitaciones de ancho de banda de la red pueden ser un impedimento para las pruebas de escalabilidad.
=> El proceso de prueba de escalabilidad difiere de una organización a otra, ya que los atributos de prueba de escalabilidad de una aplicación serán diferentes de las otras aplicaciones.
Lectura recomendada
- Pruebas de carga con los tutoriales de HP LoadRunner
- Pruebas de rendimiento frente a pruebas de carga frente a pruebas de estrés (diferencia)
- Diferencia entre pruebas de escritorio, cliente-servidor y pruebas web
- Pruebas de carga, estrés y rendimiento de aplicaciones web con WAPT
- Mejores herramientas de prueba de software 2021 (Herramientas de automatización de pruebas de control de calidad)
- Guía de pruebas de seguridad de aplicaciones web
- Pruebas de aplicaciones: ¡los conceptos básicos de las pruebas de software!
- Instale su aplicación en el dispositivo y comience a probar desde Eclipse