¿Qué son las pruebas de escalabilidad? Aprende con el ejemplo

⚡ Resumen inteligente

Las pruebas de escalabilidad miden cómo se comporta una aplicación cuando la carga de usuarios, el volumen de datos o la tasa de transacciones aumentan o disminuyen, revelando el punto exacto en el que el rendimiento deja de escalar e identificando el cuello de botella responsable.

  • 🔘 Definición: Una prueba no funcional que verifica si un sistema sigue funcionando de manera aceptable a medida que aumenta la demanda.
  • ☑️ Dos direcciones: El escalado vertical aumenta la potencia de una máquina; el escalado horizontal añade más máquinas detrás de un equilibrador.
  • ✅ Métricas clave: El tiempo de respuesta, el rendimiento, el uso de CPU y memoria, y la utilización de la red son tracked en cada paso de carga.
  • 🧪 Método: La carga aumenta en incrementos planificados hasta que una métrica supera su umbral, lo que marca el límite de escalabilidad.
  • 🛠️ Estampación: JMeterk6, Gatling, Locust y LoadRunner generan carga distribuida y registran los resultados automáticamente.
  • 📈 Resultado: La planificación de la capacidad se basa ahora en datos concretos en lugar de conjeturas, de modo que las versiones sobreviven a los picos de tráfico.

¿Qué son las pruebas de escalabilidad?

¿Qué son las pruebas de escalabilidad?

Pruebas de escalabilidad Es un método de prueba no funcional que mide el rendimiento de un sistema o red al aumentar o disminuir el número de solicitudes de los usuarios. El objetivo de las pruebas de escalabilidad es garantizar que el sistema pueda gestionar un aumento previsto en el tráfico de usuarios, el volumen de datos y la frecuencia de las transacciones. Evalúa la capacidad del sistema para satisfacer la creciente demanda.

Las pruebas de escalabilidad son un subtipo de pruebas de rendimiento, por lo que se centra en el comportamiento de una aplicación cuando se implementa en un sistema más grande o se ejecuta bajo una carga excesiva. Ingeniería de SoftwareLas pruebas de escalabilidad miden el punto en el que una aplicación deja de escalar e identifican la razón que lo provoca.

¿Por qué realizar pruebas de escalabilidad?

Los problemas de capacidad rara vez aparecen durante las pruebas funcionales. Suelen surgir en el día de mayor actividad comercial del año, cuando se lanza una campaña de marketing o cuando un conjunto de datos que creció silenciosamente durante dos años finalmente ralentiza todas las consultas. Las pruebas de escalabilidad exponen esos límites primero en un entorno controlado. En concreto, le ayudan a:

  • Determina cómo se adapta la aplicación a medida que aumenta la carga de trabajo y dónde se estabiliza esa curva.
  • Determina el límite de usuarios simultáneos para la aplicación web antes de que los tiempos de respuesta se vuelvan inaceptables.
  • Determinar la degradación del rendimiento en el lado del cliente y la experiencia del usuario final bajo carga, como por ejemplo la lentitud en la renderización de la pantalla.
  • Determinar la robustez y la degradación del servidor, incluyendo la saturación de la CPU, las fugas de memoria y el agotamiento del grupo de conexiones.

La relación se puede visualizar más fácilmente como una curva: el rendimiento aumenta a medida que se añade carga hasta que un recurso se satura, después de lo cual los usuarios adicionales solo alargan la cola.

Las pruebas de escalabilidad miden el rendimiento del sistema a medida que aumenta la carga de trabajo.

Tipos de pruebas de escalabilidad

La escalabilidad no es una propiedad única, por lo que un plan de pruebas suele abarcar más de una dimensión. Los cuatro tipos que se describen a continuación son los que la mayoría de los equipos miden, y los dos primeros determinan la configuración del entorno de pruebas.

Tipo ¿Qué se escala? Lo que demuestra la prueba
Escalabilidad vertical (aumentar proporcionalmente) CPU, memoria o almacenamiento añadidos a un único servidor ¿Cuánta carga adicional absorbe una máquina mejorada y dónde se sitúa el límite de un solo nodo?
Escalabilidad horizontal (ampliar) Servidores, contenedores o nodos adicionales detrás de un balanceador de carga. Ya sea que el rendimiento aumente aproximadamente en proporción a los nodos agregados, o que los recursos compartidos lo limiten.
Escalabilidad funcional Nuevas funciones, módulos o servicios Si la funcionalidad añadida puede absorberse sin degradar las transacciones existentes.
Escalabilidad administrativa Usuarios, inquilinos, equipos o entornos para gestionar Si la incorporación de nuevos usuarios, los permisos y la monitorización seguirán siendo viables a medida que la organización crezca.

El escalado vertical es más sencillo porque la arquitectura rara vez cambia, pero una sola máquina siempre tiene un límite. El escalado horizontal elimina ese límite y mejora la tolerancia a fallos, a costa de la latencia de la red, la consistencia de los datos y la sobrecarga de coordinación; todo lo cual debe medirse en la prueba, en lugar de asumirse.

Qué probar en las pruebas de escalabilidad

La escalabilidad se evalúa mediante mediciones, no por impresiones. Registre los siguientes atributos en cada paso de carga para que se pueda observar la tendencia, y no solo el resultado final.

Atributo Lo que te dice
Response time Tiempo transcurrido entre la solicitud del usuario y la respuesta del sistema; este tiempo debería mantenerse constante a medida que aumenta la concurrencia.
Transición de pantalla Con qué rapidez una página o vista da paso a la siguiente bajo carga
Throughput Volumen de solicitudes procesadas por unidad de tiempo; una meseta marca el límite de escalabilidad.
mediciones de tiempo Tiempo de sesión, tiempo de reinicio, tiempo de impresión, tiempo de transacción y tiempo de ejecución de tareas.
Rendimiento en función del número de usuarios Cómo evoluciona cada métrica a medida que se añaden usuarios concurrentes de forma incremental.
Solicitar tarifas Solicitudes por segundo, transacciones por segundo y visitas por segundo
Uso de la red Ancho de banda consumido y latencia de paquetes entre niveles
Uso de CPU y memoria Costo de recursos por transacción; una cifra que aumenta constantemente suele indicar una fuga.
contadores de servidor web Solicitudes y respuestas por segundo, profundidad de la cola y conexiones rechazadas.
Rendimiento bajo carga Comportamiento combinado una vez que todas las métricas se leen juntas en el pico

Estrategia de pruebas para pruebas de escalabilidad

La estrategia de prueba para las pruebas de escalabilidad difiere según el tipo de aplicación que se esté probando. Si una aplicación accede a una base de datos de CRISPR Medicine NewsLos parámetros de prueba incluirán el tamaño de la base de datos en relación con el número de usuarios, etcétera.

Requisitos previos para las pruebas de escalabilidad

  • Capacidad de distribución de carga — Compruebe si la herramienta de prueba de carga permite generar la carga a partir de varias máquinas y controlarla desde un punto central.
  • Operating sistema — Comprueba qué sistemas operativos Los agentes de generación de carga y el maestro de pruebas de carga se ejecutan bajo.
  • Procesador — Compruebe qué tipo de CPU se requiere para el agente de usuario virtual y el maestro de pruebas de carga.
  • Salud Cerebral — Comprueba cuánta memoria sería suficiente para el agente de usuario virtual y el maestro de pruebas de carga.
  • Entorno de prueba — Compruebe que el entorno de prueba reproduce la producción con la suficiente fidelidad como para que los resultados sean transferibles.

Cómo hacer pruebas de escalabilidad

  1. Defina un proceso repetible para ejecutar pruebas de escalabilidad a lo largo del ciclo de vida de la aplicación.
  2. Determinar los criterios de escalabilidad.
  3. Haga una lista corta de las herramientas de software necesarias para ejecutar la prueba de carga.
  4. Establecer el entorno de pruebas y configurar el hardware necesario para ejecutar pruebas de escalabilidad.
  5. Planifique los escenarios de prueba, así como las pruebas de escalabilidad.
  6. Cree y verifique el script del usuario virtual.
  7. Crear y verificar los escenarios de prueba de carga.
  8. Ejecutar las pruebas
  9. Evaluar los resultados
  10. Generar los informes necesarios

Plan de prueba de escalabilidad

Antes de crear las pruebas, elabore un plan de pruebas detallado. Este es un paso importante para garantizar que la prueba cumpla con los requisitos de la aplicación.

A continuación se presentan los atributos para crear una estrategia bien definida. Plan de prueba para pruebas de escalabilidad.

  • Pasos para los guionesEl script de prueba debe contener pasos detallados que determinen las acciones exactas que realizaría un usuario.
  • Datos en tiempo de ejecuciónEl plan de pruebas debe determinar cualquier dato de tiempo de ejecución que sea necesario para interactuar con la aplicación.
  • Pruebas basadas en datosSi los scripts necesitan datos variables en tiempo de ejecución, es necesario comprender todos los campos que requieren estos datos.

Ejemplo de prueba de escalabilidad

Imaginemos una tienda online que espera 2,000 compradores simultáneos durante una venta de temporada. El equipo acuerda primero un criterio de aprobación: la transacción de pago debe completarse en menos de tres segundos para el 95 % de los usuarios, con una tasa de error inferior al uno por ciento.

La prueba ejecuta el mismo script de búsqueda, carrito y pago con 250, 500, 1,000, 1,500 y 2,000 usuarios virtuales. El tiempo de respuesta se mantiene cerca de dos segundos hasta los 1,000 usuarios, aumenta a 2.8 segundos con 1,500 y alcanza los nueve segundos con 2,000, mientras que la CPU de la base de datos se sitúa en el 98 %. Por lo tanto, el límite de escalabilidad es de aproximadamente 1,500 usuarios, y el cuello de botella reside en la capa de la base de datos, no en los servidores de aplicaciones que el equipo tenía previsto añadir.

Herramientas de prueba de escalabilidad

Las pruebas de escalabilidad requieren una herramienta capaz de generar carga en varias máquinas simultáneamente e informar los resultados de forma centralizada. La elección suele depender del lenguaje de programación principal del equipo y de los protocolos que se estén probando.

scripting Mejores adecuados para
Apache JMeter Planes de prueba GUI más XML, Java basado Amplia cobertura de protocolos, incluidos JDBC, JMS, LDAP y SOAP.
Grafana k6 JavaGuión o TypeScript Pruebas de API y microservicios integradas en un pipeline de CI/CD.
Gatling Java, Kotlin o Scala DSL Alto número de usuarios virtuales por inyector con informes HTML detallados.
Langosta Natural Python Python equipos que necesitan extender el cliente más allá de HTTP
LoadRunner Scripts tipo C grabados en VuGen Grandes entornos empresariales con aplicaciones heredadas y empaquetadas.

Ejecutores alojados en la nube como BlazeMeterLoadView y Gatling Enterprise se sitúan sobre varios de estos motores y merece la pena considerarlos cuando una prueba requiere decenas de miles de usuarios virtuales o tráfico de múltiples regiones geográficas. Un análisis más amplio de la categoría está disponible en la guía. herramientas de prueba de rendimiento.

Desafíos y mejores prácticas en las pruebas de escalabilidad

Resultados de escalabilidad más decepcionantes tracVolver a la configuración de prueba en lugar de a la aplicación. Estos son los problemas recurrentes y los hábitos que los previenen.

Desafíos comunes

  • Entornos de tamaño reducido — Un banco de pruebas con la mitad de la memoria de producción informa de un cuello de botella que no existe en producción.
  • Modelos de carga de trabajo poco realistas — Los scripts sin tiempo de espera ni variación de datos acceden a cachés que los usuarios reales no alcanzarían.
  • Resultados ruidosos — El escalado automático, la recolección de basura y el hardware compartido en la nube hacen que dos ejecuciones idénticas no coincidan.
  • Observabilidad delgada — Sin métricas del lado del servidor, un resultado lento muestra que algo falló, pero no qué.
  • Costo — Generar una concurrencia muy alta requiere su propia flota de generadores de carga, lo cual es fácil de subestimar en el presupuesto.

Mejores prácticas

  • Acuerden los criterios de aprobación, como un percentil de tiempo de respuesta y un límite máximo de tasa de error, antes de la primera ejecución.
  • Aumente la carga gradualmente, siguiendo un plan preestablecido, y mantenga cada paso el tiempo suficiente para que el sistema se estabilice.
  • Varíe los datos de prueba para cada usuario virtual, de modo que el almacenamiento en caché no distorsione los resultados.
  • Recopile métricas de la aplicación, la base de datos y la infraestructura junto con los datos del lado del cliente.
  • Almacene los scripts de prueba en un sistema de control de versiones y ejecute una breve comprobación de escalabilidad en cada compilación, seguida de una ejecución completa antes del lanzamiento.
  • Compare las tendencias entre diferentes compilaciones en lugar de juzgar un solo informe de forma aislada.

Pruebas de escalabilidad frente a pruebas de carga

A menudo se confunden porque ambos aplican carga. La diferencia radica en la pregunta que responde cada uno: las pruebas de escalabilidad preguntan hasta dónde puede crecer el sistema, mientras que Prueba de carga pregunta si puede soportar la carga ya prevista.

Base Pruebas de escalabilidad Prueba de carga
Enfócate Se centra en el rendimiento de sus sitios web, software, hardware y aplicaciones cuando se realizan cambios en el tamaño o el volumen del sistema para satisfacer una necesidad creciente. Las pruebas de carga se centran en probar una aplicación bajo cargas elevadas para determinar en qué punto falla el tiempo de respuesta del sistema.
Patrón de carga La carga se incrementa por etapas, y se pueden agregar recursos entre etapas. La carga se mantiene en un pico previsto durante una duración fija.
Pregunta respondida ¿Hasta dónde puede crecer este sistema y qué lo limita? ¿Este sistema cumple hoy con los objetivos acordados?
Salida típica Un límite de escalabilidad, un cuello de botella y un plan de capacidad. Aprobado o suspenso en relación con los objetivos de tiempo de respuesta y rendimiento.

Ambos se sientan debajo del pruebas no funcionales paraguas junto a pruebas de estrés, pruebas de inyección, prueba de resistencia y pruebas de volumeny una estrategia de rendimiento madura suele ejecutar varias de ellas contra los mismos scripts.

Preguntas Frecuentes

Los modelos de aprendizaje automático leen datos históricos de ejecución para identificar qué métrica se desvió primero, separar las regresiones reales del ruido en la nube y pronosticar el nivel de carga en el que un recurso se saturará. Varias plataformas comerciales ahora ofrecen esto como un análisis automatizado posterior a la ejecución.

Sí. Copiloto y agentes similares redactan k6 En escenarios como el de Locust, se generan datos de prueba parametrizados y se configuran rápidamente los pasos del pipeline de CI. Un ingeniero de rendimiento aún debe establecer tiempos de espera, combinaciones de cargas de trabajo y criterios de aprobación realistas, ya que estos se derivan del comportamiento en producción.

La escalabilidad es la capacidad de crecer al añadir recursos, ya sea en minutos o meses. La elasticidad es la capacidad de añadir y liberar esos recursos automáticamente según cambie la demanda, para luego volver a la configuración inicial más reducida.

Comience con un valor muy inferior al pico esperado, generalmente entre un diez y un veinte por ciento, para confirmar que el script y el sistema de monitoreo funcionan correctamente. Aumente el conteo gradualmente hasta alcanzar el objetivo y superarlo, ya que el comportamiento interesante se observa entre dos pasos, no en un solo valor.

Un solo ordenador de oficina no puede generar decenas de miles de sesiones, ni puede reproducir la latencia que experimenta un usuario en otra región. Pruebas en la nube Suministra generadores de carga en varias regiones bajo demanda y los libera cuando finaliza su funcionamiento.

Realiza una comprobación rápida en cada compilación para que las regresiones se detecten en un plazo de 24 horas, y una prueba completa paso a paso antes de cualquier lanzamiento que modifique la arquitectura, el esquema de la base de datos o las expectativas de tráfico. Esperar hasta la semana anterior al lanzamiento no deja tiempo para corregir los errores detectados en la prueba.

Además de las transacciones perdidas durante el período de inactividad, las páginas lentas desvían a los visitantes hacia la competencia y perjudican el posicionamiento en los motores de búsqueda. En el sector minorista y de venta de entradas, la falla suele ocurrir el día de mayor facturación del año, precisamente cuando el tráfico era predecible.

Scripting en JavaTexto, Python or JavaConocimientos prácticos de HTTP y del comportamiento de las bases de datos, facilidad para interpretar las métricas de servidores y contenedores, y conocimientos estadísticos suficientes para distinguir un percentil de una media. La familiaridad con la nube y la integración y entrega continuas (CI/CD) se ha vuelto casi esencial.

Resumir este post con: