Las pruebas de escalabilidad son las pruebas de una aplicación de software para medir su capacidad para escalar o escalar en términos de cualquiera de sus capacidades no funcionales.
Las pruebas de rendimiento , escalabilidad y confiabilidad generalmente las agrupan los analistas de calidad del software .
Los principales objetivos de las pruebas de escalabilidad son determinar el límite de usuarios para la aplicación web y garantizar que la experiencia del usuario final , bajo una gran carga, no se vea comprometida. Un ejemplo es si se puede acceder a una página web de manera oportuna con un retraso limitado en la respuesta. Otro objetivo es comprobar si el servidor puede hacer frente, es decir, ¿se bloqueará el servidor si está bajo una carga pesada? [1]
Dependiendo de la aplicación que se esté probando, se prueban diferentes parámetros. Si se está probando una página web, se probará el mayor número posible de usuarios simultáneos. [2] También dependen de la aplicación que se esté probando los atributos que se prueban; estos pueden incluir el uso de la CPU , el uso de la red o la experiencia del usuario.
Las pruebas exitosas proyectarán la mayoría de los problemas que podrían estar relacionados con la red, la base de datos o el hardware / software. [3]
Creando una prueba de escalabilidad
Al crear una nueva aplicación, es difícil predecir con precisión el número de usuarios en 1, 2 o incluso 5 años. Aunque se puede hacer una estimación, no es un número definitivo. Un problema con un número creciente de usuarios es que puede crear nuevas áreas de falla. Por ejemplo, si tiene 100.000 visitantes nuevos, no es solo el acceso a la aplicación lo que podría ser un problema; también puede experimentar problemas con la base de datos donde necesita almacenar todos los datos de estos nuevos clientes. [4]
Incrementar cargas
Por eso, al crear una prueba de escalabilidad, es importante escalar en incrementos. Estos pasos se pueden dividir en cargas pequeñas, medianas y altas. [5]
Debemos escalar en incrementos ya que cada etapa prueba un aspecto diferente. Las cargas pequeñas aseguran que el sistema funcione como debería en un nivel básico. Las cargas medias prueban que el sistema puede funcionar a su nivel esperado. Las cargas elevadas prueban que el sistema puede hacer frente a una carga elevada. [6]
Entorno de prueba
El entorno debe ser constante durante las pruebas para proporcionar resultados precisos y fiables. Si la prueba es un éxito, deberíamos ver un cambio proporcional en el rendimiento. Por ejemplo, si duplicamos los usuarios en el sistema, deberíamos ver una caída en el rendimiento del 50%. [7]
Alternativamente, si se miden estadísticas del sistema como la memoria o el uso de la CPU a lo largo del tiempo, esto puede tener un gráfico diferente que no es proporcional, ya que los usuarios no se trazan en ninguno de los ejes.
Resultados de las pruebas de escalabilidad
Una vez que hayamos recopilado los datos de nuestras diversas etapas, podemos comenzar a trazar los resultados en varios gráficos para mostrar los resultados. Sin embargo, los gráficos pueden variar según lo que se esté trazando.
Resultado desproporcionado
En la Figura 1, podemos ver un gráfico que muestra el uso de recursos (en este caso, memoria) a lo largo del tiempo. El gráfico no es proporcionado, pero aún puede considerarse una prueba aprobada, ya que inicialmente hay una fase de aceleración cuando el sistema comienza a funcionar; sin embargo, a medida que se agregan más usuarios, hay pocos cambios en el uso de la memoria. [8] Esto significa que la capacidad de memoria actual puede hacer frente a las 3 etapas de la prueba.
Resultado proporcional
En la figura 2, podemos ver un aumento más proporcional, comparando el número de usuarios con el tiempo necesario para ejecutar un informe. Con una carga baja de 20 usuarios, el tiempo promedio es de 5.5 segundos, a medida que aumentamos la carga a media (40 usuarios) y una carga alta (60 usuarios), el tiempo promedio aumenta a 9.5 y 18 segundos respectivamente. [7]
En algunos casos, puede haber cambios que deban realizarse en el software o hardware del servidor. Una vez que se han realizado las actualizaciones necesarias, debemos volver a ejecutar las pruebas para asegurarnos de que las actualizaciones hayan sido efectivas para abordar los problemas planteados anteriormente. [9]
Cuando tenemos un resultado proporcional, no hay cuellos de botella a medida que escalamos y aumentamos la carga bajo la que se coloca el sistema. [10]
Escala vertical y horizontal
Como resultado de las pruebas de escalabilidad, se pueden requerir actualizaciones de software y hardware. Estas actualizaciones se pueden dividir en escala vertical u horizontal.
El escalado vertical, también conocido como escalado, es el proceso de reemplazar un componente con un dispositivo que generalmente es más poderoso o mejorado. Por ejemplo, reemplazar un procesador por uno más rápido. El escalado horizontal, también conocido como escalado horizontal, es configurar otro servidor, por ejemplo, para que se ejecute en paralelo con el original para que compartan la carga de trabajo. [11]
Ventajas y desventajas
Hay ventajas y desventajas en ambos métodos de escalado. Aunque la ampliación puede ser más sencilla, la adición de recursos de hardware puede dar como resultado una disminución de los rendimientos . [12] Esto significa que cada vez que actualizamos el procesador, por ejemplo, no siempre obtenemos el mismo nivel de beneficios que el cambio anterior.
Sin embargo, el escalado horizontal puede ser extremadamente costoso, no solo el costo de sistemas completos como los servidores, sino que también debemos tener en cuenta sus costos de mantenimiento regular. [12]
Referencias
- ^ "Planificación de pruebas de carga" . docs.oracle.com . Consultado el 23 de octubre de 2015 .
- ^ "Pruebas de escalabilidad" . Blog de rendimiento . Consultado el 25 de octubre de 2015 .
- ^ Joshi, Prateek. "¿Por qué necesitamos pruebas de rendimiento?" . Enigma perpetuo . Consultado el 25 de octubre de 2015 .
- ^ "Descubriendo las métricas adecuadas para las pruebas de escalabilidad" . www.theserverside.com . Consultado el 25 de octubre de 2015 .
- ^ "ESCALAR HACIA ARRIBA VS. ESCALAR HACIA FUERA EN UN ENTORNO QLIKVIEW" . 2012.
- ^ 'Cytowski' 'Bernardini', 'Maciej' 'Matteo' (2013). "Análisis de escalabilidad de Prac" (PDF) . Asociación para la informática avanzada en Europa .
- ^ a b "Prácticas probadas de IBM Cognos: diseño de una prueba de rendimiento y escalabilidad exitosa para IBM Cognos BI" . www.ibm.com . 2011-11-17 . Consultado el 25 de octubre de 2015 .
- ^ "Rendimiento empresarial y resultados de las pruebas" (PDF) . Serena . 2011.
- ^ "Prueba de escalabilidad: comprobar si el rendimiento de un sitio puede escalar" . support.smartbear.com . Consultado el 28 de octubre de 2015 .
- ^ "El blog de tecnología de Netflix: evaluación comparativa de la escalabilidad de Cassandra en AWS: más de un millón de escrituras por segundo" . techblog.netflix.com . Consultado el 4 de noviembre de 2015 .
- ^ Bondi, André (2014). Fundamentos de la ingeniería de rendimiento de software y sistemas: procesos, modelado de rendimiento, requisitos, pruebas, escalabilidad y práctica. Sección 11.2 . ISBN 0321833821.
- ^ a b "Pruebas de escalabilidad" (PDF) . Educación Comp Nus .
enlaces externos
- Diseño de aplicaciones distribuidas con Visual Studio .NET: escalabilidad