Las pruebas de rendimiento juzgan el rendimiento del sistema o de la aplicación con cargas de varios tamaños.
Los criterios clave incluyen la velocidad (la rapidez con la que funciona), la estabilidad (si funciona sin fallos), la escalabilidad (la fluidez con la que se gestionan las cargas que aumentan) y la capacidad de respuesta (la rapidez con la que responde a las instrucciones del usuario).
El concepto de rendimiento del software es la base de todo uso informático, y un rendimiento deficiente puede arruinar los mejores esfuerzos de una organización para ofrecer una experiencia de usuario de calidad. Si los desarrolladores no supervisan adecuadamente las pruebas de rendimiento o no las ejecutan con suficiente frecuencia, pueden introducir cuellos de botella de rendimiento. Esta situación puede ahogar la capacidad de un sistema para gestionar incluso sus cargas de tráfico típicas durante los periodos esperados. El problema se agrava aún más cuando se producen picos de consumo inesperados que generan una demanda adicional.
Este desafío podría poner en peligro todas las operaciones públicas de una empresa. Las reputaciones de calidad duradera suelen tardar mucho tiempo en desarrollarse. Sin embargo, pueden dañarse rápida y permanentemente cuando el público comienza a cuestionar si un sistema o aplicación puede funcionar con una funcionalidad fiable. La paciencia del usuario final se está convirtiendo cada vez más en un bien limitado. Por lo tanto, dado que la reputación de la empresa suele estar en juego, hay mucho en juego cuando los problemas de rendimiento son el tema de conversación.
Boletín del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Primero definamos la metodología utilizada en la mayoría de los escenarios de pruebas de rendimiento. Seis pasos de varias partes definen el proceso típico de pruebas de rendimiento.
El primer paso en el proceso de prueba de rendimiento implica establecer parámetros útiles, como describir los objetivos de rendimiento de la aplicación.
A continuación, establezca qué constituye un criterio de rendimiento aceptable (como tiempos de respuesta, rendimiento, uso de recursos y tasas de error).
En esta etapa también es cuando el personal identifica los indicadores clave de rendimiento (KPI) para respaldar de manera competente los requisitos de rendimiento y las prioridades empresariales.
No todas las pruebas deben utilizarse en todas las situaciones. Los desarrolladores u otros testers deben definir lo que se pretende analizar con las pruebas.
Comienzan analizando los principales escenarios de uso y diseñando casos de prueba que reflejen las interacciones de los usuarios en el mundo real. El siguiente paso es especificar los datos de prueba y carga de trabajo que se utilizarán durante el proceso de prueba.
Después de bloquear estas variables, los testers seleccionan las herramientas de prueba de rendimiento, los scripts de prueba y las técnicas de prueba que se utilizarán. Este paso incluye la configuración de puertas, el proceso mediante el cual las puertas de calidad basadas en código permiten o deniegan el acceso a pasos de producción posteriores.
Las pruebas de rendimiento también examinan el ancho de banda para confirmar que las velocidades de transmisión de datos pueden manejar suficientemente el tráfico de cargas de trabajo.
Se debe dar un último paso antes de que el proceso de pruebas de rendimiento pueda comenzar oficialmente. Los testers construyen un entorno de prueba que imita con precisión el entorno de producción real del sistema y, a continuación, confirman que las aplicaciones de software sometidas a prueba (AUT) se han implementado dentro del entorno de prueba.
La preparación final implica la integración de herramientas de monitorización para capturar las métricas de rendimiento generadas por el sistema durante las pruebas.
Con los parámetros de prueba ahora claramente definidos, es hora de ejecutar las pruebas de rendimiento. Los testers o la automatización de pruebas ejecutan los escenarios de prueba que se han elegido, y esas pruebas se utilizan junto con herramientas de pruebas de rendimiento.
Los testers suelen monitorizar el rendimiento del sistema en tiempo real para poder comprobar el rendimiento, los tiempos de respuesta y el uso de recursos. A lo largo de los escenarios de prueba, los testers monitorizan el sistema en busca de cuellos de botella de rendimiento u otras rarezas relacionadas con el rendimiento reflejadas en las métricas de prueba.
A continuación, los testers evalúan los datos de rendimiento recopilados durante el proceso de prueba. Estudian minuciosamente los datos recopilados y buscan áreas de rendimiento que necesitan mejoras.
A continuación, los testers comparan estos resultados con los puntos de referencia de rendimiento que se establecieron como parte del primer paso del proceso de prueba. A través de esta comparación, los testers pueden ver dónde se desvían los resultados de las pruebas del rendimiento esperado y dónde podrían haberse producido cuellos de botella.
Después de identificar los problemas de rendimiento mediante el análisis de los datos de prueba, los desarrolladores trabajan con el código para actualizarlo con el sistema. Utilizan optimizaciones de código, actualizaciones de recursos o cambios de configuración para mitigar los problemas de rendimiento citados.
Después de implementar los cambios, los desarrolladores repiten la secuencia de prueba de software para confirmar que aplicaron los cambios correctamente. Los desarrolladores repiten los procedimientos hasta que los resultados de rendimiento se alinean con los puntos de referencia definidos.
Las pruebas de rendimiento ahondan "bajo el capó" para comprobar el rendimiento del sistema o de la aplicación, por lo que tiene sentido que los equipos de desarrollo de software sean los usuarios más habituales de los métodos de pruebas de rendimiento. En este primer grupo de usuarios se incluyen profesionales que participan activamente en el proceso de desarrollo: desarrolladores, ingenieros de control de calidad (QA) y equipos de DevOps. Cada uno obtiene algo único de las pruebas de rendimiento:
El siguiente grupo de usuarios no son los desarrolladores, pero siguen trabajando a nivel básico con la gestión del rendimiento del sistema como componente principal de sus trabajos:
Pero no solo la dirección de la empresa realiza pruebas de rendimiento. Muchas organizaciones y empresas también hacen uso frecuente de las pruebas de rendimiento para diversos fines en empresas de todos los tamaños:
Los desarrolladores realizan diferentes tipos de pruebas de rendimiento para obtener tipos específicos de datos de resultados y respaldar una determinada estrategia de pruebas. Estos son los tipos de pruebas más destacados.
Las pruebas de carga indican cómo funciona el sistema cuando funciona con las cargas esperadas. El objetivo de las pruebas de carga es mostrar el comportamiento del sistema cuando se encuentran cargas de trabajo de tamaño rutinario en condiciones de trabajo normales con un número medio de usuarios simultáneos.
Ejemplo: para un sitio web de comercio electrónico, un probador simula ser un usuario del sitio y seguir los pasos de comprar artículos, colocar productos en carritos y pagar esas compras.
Las pruebas de carga muestran si el sistema puede soportar condiciones de carga regulares. La escalabilidad somete a estrés al sistema al aumentar el volumen de datos o las cargas de usuarios que se gestionan. Muestra si un sistema puede alcanzar un ritmo mayor y seguir funcionando.
Ejemplo: en el escalamiento vertical, un desarrollador podría aumentar la CPU y la memoria de un servidor de base de datos para que pueda admitir un mayor volumen de consultas de datos.
La prueba de estrés es análoga a una prueba de buceo realizada por la tripulación de un submarino. Aquí, el sistema se lleva al límite de su capacidad operativa conocida, y luego aún más allá, para determinar exactamente cuánto puede soportar antes de llegar a su punto de ruptura.
Ejemplo: la prueba de conmutación por error es una forma extrema de prueba de estrés que comienza con la simulación de fallas de componentes. El objetivo es ver cuánto tiempo tarda el sistema en recuperarse y reanudar su funcionamiento.
Aquí estamos probando un tipo diferente de estrés: cuando el tráfico de usuarios o la transferencia de volumen de datos experimentan repentinamente un aumento brusco y drástico en la actividad. El sistema debe absorber diversos cambios mientras continúa con sus operaciones habituales.
Ejemplo: las empresas que gestionan sitios web tienen que prepararse no solo para las interrupciones, sino también para el aumento de usuarios que intentan acceder al sitio simultáneamente una vez que vuelva a estar en línea. También deben evaluar si el sistema puede gestionar ese repentino aumento de la demanda. Las pruebas de picos pueden calcular la probabilidad de que todo salga bien.
A veces, con el rendimiento, hablamos del tráfico de usuarios. Las pruebas de volumen, por el contrario, se ocupan de cómo un sistema gestiona grandes cantidades de datos. ¿Puede el sistema procesar los datos por completo y proporcionar almacenamiento de datos sin degradación de los datos?
Ejemplo: una clínica médica mantiene enormes volúmenes de información de pacientes y está legalmente obligada a poder acceder a esos registros de pacientes y a los datos médicos relacionados. Esa afluencia constante de datos puede sobrecargar un sistema. Las pruebas de volumen permiten a los usuarios saber si su sistema está a la altura del reto de aceptar constantemente más datos.
Piense en ello como una prueba de rendimiento a largo plazo. Los verdaderos culpables que se buscan con las pruebas de resistencia (también llamadas pruebas de inmersión) son la degradación de los datos y los problemas de fugas de memoria que suelen producirse tras un periodo prolongado de tiempo.
Ejemplo: las plataformas de redes sociales funcionan las 24 horas del día, y el uso continuo puede presentar problemas con la estabilidad de la plataforma, el almacenamiento de datos y las cuentas de usuario. Las pruebas de resistencia le ofrecen una imagen de las operaciones actuales e indicadores del rendimiento futuro.
Los desarrolladores y testers pueden elegir entre numerosas herramientas diseñadas para las pruebas de rendimiento. Estos son algunos de los más populares.
Al igual que con casi todos los asuntos relacionados con los ordenadores, la inteligencia artificial (IA) ahora está llevando las pruebas de software a niveles completamente nuevos de eficiencia. Está haciendo que el proceso general de pruebas de rendimiento sea más rápido, más preciso y más fácil de automatizar.
En concreto, la IA puede emplear ciclos de pruebas más cortos, lo que hace que llevar menos tiempo ejecutar las pruebas. Y gracias a la precisión minuciosa de la IA, es capaz de detectar cambios de rendimiento más sutiles que podrían pasar desapercibidos para los evaluadores humanos. Además, a través del análisis predictivo, la IA puede evaluar las tendencias operativas y los datos históricos y predecir dónde y cuándo podrían producirse los próximos cuellos de botella. También puede aprovechar ese comportamiento predictivo del sistema e incluso ajustar los parámetros de prueba en función de él.
Pero, con diferencia, lo más significativo que ha hecho la IA para las pruebas de rendimiento (hasta ahora) es ayudar en sus esfuerzos a gran escala permitiendo la automatización. Esta automatización es sorprendente porque es totalmente capaz de ejecutar todo el proceso de pruebas de rendimiento.
La IA no solo puede automatizar la forma en que se llevan a cabo las pruebas, sino que también puede escribir los scripts de prueba destinados a su ejecución. Además, puede interpretar los resultados de las pruebas en el backend y ofrecer orientación para remediar situaciones problemáticas.
Uno de los impactos más interesantes y prometedores de la IA en las pruebas de rendimiento es el creciente uso de la colaboración entre humanos e IA. Este acuerdo se da cuenta de que el instinto humano y el conocimiento siguen desempeñando un papel vital. De hecho, en algunas situaciones, seguir los impulsos humanos sigue siendo la directiva principal.
Algunos expertos están convencidos de que las pruebas de rendimiento del futuro se basan en este enfoque híbrido. Combina la mentalidad informática y la capacidad de procesamiento con un sentido humano del contexto y los matices.
Automatice la entrega de software para cualquier aplicación en entornos locales, en la nube o en el mainframe.
Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.