¿Qué son las pruebas de ESTRÉS en las pruebas de software?

⚡ Resumen inteligente

Las pruebas de estrés llevan una aplicación más allá de sus límites operativos normales para encontrar el punto de ruptura, confirmar que los fallos se gestionan correctamente y demostrar que el sistema se recupera sin problemas una vez que se elimina la carga extrema.

  • 🔘 Definición: Las pruebas de estrés miden la robustez y el manejo de errores bajo cargas mucho mayores que las que genera el tráfico de producción.
  • ☑️ Objetivo: La prueba localiza el punto exacto de fallo y verifica la capacidad de recuperación una vez que la carga vuelve a la normalidad.
  • Alcance: Las variantes distribuidas, de aplicación, transaccionales, sistémicas y exploratorias ponen de relieve cada una una capa diferente del sistema.
  • 🧪 Proceso: Planificar, escribir el guion, ejecutar, analizar y luego ajustar: normalmente, a lo largo de tres o cuatro ciclos completos antes de alcanzar los objetivos establecidos.
  • 🛠️ Estampación: LoadRunner, Apache JMeter, StressTester y NeoCargar, generar usuarios virtuales simultáneos y capturar datos de respuesta.
  • 📊 Métrica: El rendimiento, las páginas por segundo, el tiempo de acceso, el tiempo hasta el primer byte y las conexiones fallidas cuantifican el resultado.

Pruebas de estrés en las pruebas de software

¿Qué son las pruebas de estrés?

Pruebas de estrés Las pruebas de estrés son un tipo de prueba de software que verifica la estabilidad y confiabilidad de una aplicación. Su objetivo es medir la robustez y la capacidad de manejo de errores del software bajo cargas extremadamente pesadas, y garantizar que no falle en situaciones críticas. Se realizan pruebas que van más allá de los límites normales de operación y se evalúa el comportamiento del software en condiciones extremas.

En las pruebas de estrés, la aplicación bajo prueba (AUT) se somete a una carga excesiva durante un breve periodo de tiempo para determinar su capacidad de resistencia. El uso más común de las pruebas de estrés es determinar el límite de fallos del sistema, el software o el hardware. También se comprueba si el sistema gestiona eficazmente los errores una vez superado dicho límite.

In Ingeniería de SoftwareLas pruebas de estrés a menudo se enumeran junto con... Pruebas de resistencia, pero ambas difieren: las pruebas de estrés aplican una carga anormalmente alta en un breve lapso para encontrar el punto de ruptura, mientras que las pruebas de resistencia (o de inmersión) mantienen una carga moderada durante horas para revelar la degradación gradual.

La captura de pantalla que aparece a continuación muestra un gran bloque de datos que se copia desde una página web.

Copiar un bloque de datos muy grande de una página web para poner a prueba una aplicación de escritorio.

La aplicación bajo prueba se somete a una prueba de estrés al copiar 5 GB de datos del sitio web y pegarlos en el Bloc de notas. El Bloc de notas se ve entonces sobrecargado y muestra el mensaje de error "No responde", tal como se muestra en la siguiente captura de pantalla.

El Bloc de notas muestra un mensaje de error "No responde" después de pegar 5 GB de datos.

El mismo principio se aplica directamente a los sistemas del lado del servidor.

Necesidad de pruebas de estrés

Consideremos los siguientes ejemplos en tiempo real donde el uso de las pruebas de estrés se hace evidente:

  • Durante la época del festival, una tienda en líneaping El sitio web puede experimentar un aumento repentino del tráfico o cuando anuncia una oferta.
  • Cuando se menciona un blog en un periódico importante, su tráfico aumenta repentinamente.

Es imprescindible realizar pruebas de estrés para gestionar estos picos de tráfico anormales. No poder gestionar este tráfico repentino puede resultar en pérdidas de ingresos y daños a la reputación.

Las pruebas de estrés también son extremadamente valiosas por las siguientes razones:

  • Comprueba si el sistema funciona en condiciones anormales.
  • Confirma que se muestra un mensaje de error apropiado mientras el sistema está bajo presión.
  • Un fallo del sistema en condiciones extremas podría ocasionar enormes pérdidas de ingresos.
  • Es mejor estar preparado para condiciones extremas realizando pruebas de resistencia con antelación.

La siguiente sección detalla lo que debe demostrar una prueba de estrés exitosa.

Objetivos de las pruebas de estrés

El objetivo de las pruebas de estrés es analizar el comportamiento del sistema tras un fallo. Para que las pruebas de estrés sean exitosas, el sistema debe mostrar un mensaje de error apropiado mientras se encuentra en condiciones extremas.

Para realizar pruebas de estrés, a veces se utilizan conjuntos de datos masivos, y estos datos pueden perderse durante la falla del sistema. Los evaluadores deben asegurarse de que estos datos relacionados con la seguridad no se pierdan durante las pruebas de estrés.

El objetivo principal de las pruebas de estrés es asegurar que el sistema se recupere después de una falla, una propiedad denominada recuperabilidad. Pruebas de recuperación Luego verifica el procedimiento de restauración en detalle.

Pruebas de carga frente a pruebas de estrés

Ambas técnicas pertenecen a la Test de rendimiento son familiares, por lo que es fácil confundirlos. El siguiente diagrama compara los dos perfiles de carga.

Gráfico que compara el perfil de carga constante de las pruebas de carga con el perfil de carga creciente de las pruebas de esfuerzo.

Prueba de carga Pruebas de estrés
Prueba de carga Prueba el comportamiento del sistema en condiciones normales de carga de trabajo; simula la carga de trabajo real prevista. Las pruebas de estrés evalúan el comportamiento del sistema en condiciones extremas y se realizan hasta que el sistema falla.
Las pruebas de carga no dañan el sistema. Las pruebas de estrés intentan deliberadamente quebrar el sistema saturándolo de datos o privándolo de recursos.

Los perfiles relacionados incluyen: Prueba de picos (una explosión corta y repentina), Pruebas de volumen (grandes conjuntos de datos en lugar de muchos usuarios) y Pruebas de escalabilidad (margen de crecimiento).

Tipos de pruebas de estrés

A continuación se describen los tipos de pruebas de estrés, explicados uno por uno.

Pruebas de estrés distribuidas

En los sistemas distribuidos cliente-servidor, las pruebas se realizan en todos los clientes desde el servidor. La función del servidor de estrés es distribuir un conjunto de pruebas de estrés a todos los clientes de estrés y track el estado de cada cliente. Después de que un cliente se comunica con el servidor, este agrega el nombre del cliente y comienza a enviar datos para la prueba. La siguiente figura muestra cómo el servidor de pruebas de estrés llega a algunos clientes pero no a otros.

Configuración de pruebas de estrés distribuidas donde un servidor de estrés llega a Client1 y Client2 pero pierde contacto con Client3 y Client4.

Mientras tanto, las máquinas cliente envían una señal, o latido, que confirma que siguen conectadas al servidor. Si el servidor no recibe ninguna señal de una máquina cliente, es necesario investigar dicha máquina para depurar el problema. En la figura, el servidor puede conectarse con dos clientes (Cliente 1 y Cliente 2), pero no puede enviar ni recibir señales de los Clientes 3 y 4.

Para estos escenarios de pruebas de estrés, la mejor opción es realizar una prueba durante la noche. Los grandes centros de datos necesitan un método más eficiente para determinar qué equipos han sufrido fallos por estrés que requieren investigación.

Pruebas de estrés de la aplicación

Estas pruebas se centran en encontrar defectos relacionados con el bloqueo y la retención de datos, problemas de red y cuellos de botella en el rendimiento de una única aplicación.

Pruebas de estrés transaccionales

Realiza pruebas de estrés en una o más transacciones entre dos o más aplicaciones. Se utiliza para ajustar y optimizar el sistema.

Pruebas de estrés sistémico

Se trata de una prueba de estrés integrada que puede ejecutarse en varios sistemas que comparten el mismo servidor. Se utiliza para detectar fallos en los que una aplicación bloquea los datos de otra.

Pruebas de estrés exploratorias

Este es el tipo de prueba de estrés que se utiliza para probar el sistema con parámetros o condiciones inusuales que es poco probable que se presenten en un escenario real. Se utiliza para encontrar defectos en situaciones inesperadas, tales como:

  • Un gran número de usuarios iniciaron sesión al mismo tiempo.
  • El antivirus se inicia simultáneamente en todos los equipos.
  • Una base de datos se desconecta mientras se accede a ella desde un sitio web.
  • Se está insertando un gran volumen de datos en la base de datos simultáneamente.

Independientemente de la variante que se aplique, la secuencia de ejecución permanece invariable.

¿Cómo hacer pruebas de estrés?

El proceso de pruebas de estrés se puede realizar en 5 pasos principales:

  • Paso 1) Planificación de la prueba de estrés: Aquí se recopilan los datos del sistema, se analiza el sistema y se definen los objetivos de la prueba de estrés.
  • Paso 2) Crear scripts de automatización: En esta fase, se crean los scripts de automatización de las pruebas de estrés y se generan los datos de prueba para los escenarios de estrés.
  • Paso 3) Ejecución del script: En esta etapa, se ejecutan los scripts de automatización de las pruebas de estrés y se almacenan los resultados de dichas pruebas.
  • Paso 4) Análisis de Resultados: En esta etapa, se analizan los resultados de la prueba de estrés y se identifican los cuellos de botella.
  • Paso 5) Ajustes y optimización: En esta etapa, se ajusta el sistema, se modifican las configuraciones y se optimiza el código con el objetivo de alcanzar el nivel de referencia deseado.

Por último, se ejecuta todo el ciclo de nuevo para determinar si los ajustes han producido los resultados deseados. Por ejemplo, no es raro necesitar de 3 a 4 ciclos del proceso de prueba de estrés antes de alcanzar los objetivos de rendimiento, por lo que los scripts normalmente se mantienen junto con el regresión sucesivamente.

Herramientas recomendadas para pruebas de estrés

Las cuatro herramientas que se describen a continuación cubren la mayoría de las necesidades, desde suites empresariales hasta una opción gratuita de código abierto.

LoadRunner

LoadRunner es una herramienta de prueba de carga ampliamente utilizada, ahora vendida por OpenText en las ediciones Professional, Enterprise y Cloud después de pasar de HP a Micro Focus a OpenTextLos resultados de las pruebas de carga generados por LoadRunner se utilizan como referencia.

JMeter

Apache JMeter es una herramienta de prueba de código abierto. Es una herramienta puramente Java Aplicación para pruebas de estrés y rendimiento, y está diseñada para cubrir tipos de pruebas como carga, funcionales y de estrés. Versiones actuales 5.6.x de Apache JMeter exigir Java 8 o posterior, con Java 17 recomendados.

Probador de estrés

Esta herramienta proporciona un análisis exhaustivo del rendimiento de las aplicaciones web, presenta los resultados en formato gráfico y es fácil de usar. No se requiere programación de alto nivel, lo que mantiene el retorno de la inversión entractivo para equipos más pequeños.

NeoCarga

NeoCarga, ahora parte del Tricentis portafolio, es una herramienta popular para probar web y aplicaciones móvilesPuede simular miles de usuarios para evaluar el rendimiento de la aplicación bajo carga y analizar los tiempos de respuesta. Además, admite pruebas de rendimiento, carga y estrés integradas en la nube, y ofrece una buena escalabilidad.

En la guía se enumeran más opciones herramientas de prueba de rendimiento; sea cual sea la opción elegida, su resultado solo significa algo en relación con las métricas que se indican a continuación.

Métricas para pruebas de estrés

Las métricas ayudan a evaluar el rendimiento de un sistema y generalmente se estudian al final de la prueba de estrés. Las métricas más utilizadas se agrupan en tres familias.

Medición de la escalabilidad y el rendimiento

  • Páginas por segundo: Mide cuántas páginas se han solicitado por segundo.
  • rendimiento: Una métrica básica: tamaño de los datos de respuesta por segundo.
  • Rondas: El número de veces que se han planificado escenarios de prueba en comparación con el número de veces que un cliente los ha ejecutado.

Respuesta de la aplicación

  • Hora de golpe: Tiempo promedio para recuperar una imagen o una página.
  • Tiempo hasta el primer byte: Tiempo que tarda en devolverse el primer byte de datos o información.
  • Tiempo de página: Tiempo necesario para recuperar toda la información de una página.

Fallas

  • Conexiones fallidas: Número de conexiones fallidas rechazadas por el cliente (señal débil).
  • Rondas fallidas: Número de rondas que fallan.
  • Resultados fallidos: Número de intentos fallidos del sistema (enlaces rotos o imágenes no visualizadas).

La sección final enumera las situaciones que con mayor frecuencia justifican una prueba de estrés.

Ejemplos de pruebas de estrés

Las pruebas de estrés se justifican siempre que se prevé que un evento genere un aumento del tráfico muy superior al nivel habitual diario:

  • Un sitio web de comercio electrónico anuncia una venta especial por el festival.
  • Un sitio web de noticias en el momento de un evento importante.
  • Un organismo educativo que publica los resultados de los exámenes.
  • Sitios de redes sociales, blogs y aplicaciones móviles durante un momento viral.

En cada caso, la prueba supervisa recursos como la memoria, el procesador y la red, comprueba que aparezcan los mensajes de error apropiados bajo estrés y confirma que el sistema vuelve a la normalidad posteriormente. Se ajusta a la ciclo de vida de las pruebas de software como una comprobación no funcional junto con Pruebas del sistema y el conjunto más amplio de tipos de pruebas de software.

Preguntas Frecuentes

No. Las pruebas de resistencia aplican una carga anormalmente pesada durante un breve período para localizar el punto de ruptura. Remojar o prueba de resistencia Sostiene una carga realista durante muchas horas para detectar fugas de memoria y una degradación gradual.

prueba de picos Las pruebas de estrés aplican una sobrecarga repentina y muy breve al sistema y miden la rapidez con la que se adapta y se recupera. Las pruebas de estrés aumentan la carga gradualmente hasta que se produce el fallo, por lo que indican dónde se encuentra el límite, en lugar de la velocidad de reacción del sistema.

Ejecútalo antes de cada lanzamiento importante, antes de cualquier pico de tráfico previsible, como una venta o el día de la presentación de resultados, y después de cambios arquitectónicos en el almacenamiento en caché, la agrupación de conexiones o el escalado automático. Muchos equipos también lo repiten trimestralmente como verificación de referencia.

Utilice un entorno con un tamaño lo más cercano posible al de producción, dentro de las limitaciones presupuestarias, ya que un hardware insuficiente aumenta el punto de ruptura. Introdúzcale datos enmascarados o sintéticos del volumen de producción y nunca someta a pruebas de estrés destructivas los registros reales de clientes.

Los modelos de aprendizaje automático analizan la telemetría de producción para crear perfiles de tráfico máximo realistas, detectar curvas de tiempo de respuesta anómalas que un umbral fijo no detectaría y correlacionar las métricas de recursos para identificar el cuello de botella. Varias plataformas comerciales generan ahora escenarios de carga a partir de patrones de uso observados.

Sí. El copiloto toma notas JMeter Planes de prueba, scripts de k6 o Gatling, generadores de datos parametrizados y pasos de canalización de CI a partir de una solicitud en lenguaje natural. Considere el resultado como un primer borrador: los tiempos de espera, el ritmo y las aserciones aún requieren la validación de un evaluador.

Revela el límite real de capacidad, demuestra la gestión de errores y reduce el riesgo de interrupciones durante los picos de demanda. Las limitaciones son el costo (los entornos y las licencias a escala de producción son caros), además del esfuerzo de programación y los resultados que varían cada vez que cambia la infraestructura.

Los ingenieros de rendimiento o los probadores especializados lo ejecutan, generalmente con desarrolladores y personal de operaciones disponibles para leer las métricas del servidor. Se ubica después de las pruebas funcionales. prueba del sistema, una vez que la compilación sea lo suficientemente estable como para que los fallos indiquen limitaciones de capacidad en lugar de errores.

Resumir este post con: