Pruebas de rendimiento: guía para las pruebas de rendimiento del software

Las pruebas de rendimiento de cualquier aplicación ayudan a identificar las limitaciones (cuellos de botella) del rendimiento de la aplicación. Las pruebas de rendimiento son esenciales para conseguir un rendimiento óptimo de la aplicación y garantizar su estabilidad y fiabilidad. En las pruebas de rendimiento, no sólo medimos el tiempo de respuesta de la aplicación, sino también otras características cualitativas como la estabilidad, fiabilidad, robustez, escalabilidad, utilización de recursos, etc. En el futuro, traeremos aquí un tutorial sobre pruebas de rendimiento con JMeter.
Índice
¿Qué son las pruebas de rendimiento?
Las pruebas de rendimiento son parte integrante de las pruebas no funcionales, que evalúan el rendimiento de una aplicación simulando cargas previstas o sobredimensionadas. Su objetivo es ver cómo se comporta la aplicación en diferentes condiciones de carga y evaluar su rendimiento.
Básicamente, en las pruebas de rendimiento, intentamos simular la carga de trabajo real utilizando herramientas como JMeter. Estas herramientas nos ayudan a crear usuarios virtuales que realizan diversas operaciones en la aplicación, simulando así las acciones de los usuarios reales.
Pruebas de rendimiento: tipos de pruebas de rendimiento
Pruebas de carga
La prueba de carga es un tipo de prueba de rendimiento que evalúa el rendimiento de una aplicación bajo una carga prevista. En las pruebas de carga, evaluamos varios parámetros de rendimiento, como el tiempo de respuesta, la carga del servidor y las tasas de error observadas durante la ejecución de las pruebas de carga.
Pruebas de estrés
Las pruebas de estrés son un tipo de prueba de rendimiento que evalúa el rendimiento de una aplicación bajo cargas muy superiores a la carga esperada o prevista. Este enfoque te permite determinar el umbral de carga o el punto en el que la aplicación deja de responder correctamente.
Pruebas de resistencia
Las pruebas de resistencia también se denominan «pruebas de carga a largo plazo» o «pruebas de estabilidad bajo carga» (Soak testing). En las pruebas de resistencia, la aplicación sometida a prueba se carga continuamente durante un largo periodo de tiempo, por ejemplo de 2 a 3 días. El objetivo es identificar posibles problemas de rendimiento, memoria, fuga de recursos u otros que puedan surgir al ejecutar una aplicación sobrecargada con grandes cantidades de usuarios o datos durante largos periodos de tiempo.
Prueba de pinchos
Las pruebas de pico consisten en exponer una aplicación a una afluencia repentina de usuarios virtuales. Este enfoque nos ayuda a identificar si una aplicación puede recuperarse de cualquier problema tras un aumento repentino de usuarios concurrentes.
Pruebas de volumen
En las pruebas de volumen, introducimos grandes cantidades de datos en la aplicación. Esto se consigue insertando una gran colección de datos en la base de datos o cargando un archivo grande para procesarlo. El objetivo es verificar cómo maneja la aplicación grandes cantidades de datos y si su rendimiento y estabilidad no se ven afectados negativamente por esta carga de trabajo.

Para saber más sobre cada tipo de prueba de rendimiento con ejemplos aplicados, haz clic en Tipos de pruebas de rendimiento.
¿Por qué son necesarias las pruebas de rendimiento?
Ayudan a verificar la fiabilidad de la aplicación
Se realizan distintos tipos de pruebas de rendimiento para verificar que la aplicación es fiable y proporciona una salida correcta y coherente. Las pruebas de rendimiento, como las pruebas de carga y las pruebas de resistencia, ayudan a evaluar la respuesta correcta de un sistema bajo las cargas previstas durante un periodo de tiempo determinado (prueba de carga) o durante largos periodos de tiempo (prueba de resistencia).
Ayuda a identificar las limitaciones de rendimiento
Las pruebas de rendimiento ayudan a identificar las limitaciones de rendimiento de la aplicación que ralentizan el sistema. Estos componentes pueden optimizarse posteriormente para obtener un mayor rendimiento y una mejora general del sistema.
Ayudan a evaluar la escalabilidad de la aplicación
Realizando pruebas de rendimiento con distintos números de usuarios simultáneos, podemos verificar que la aplicación es capaz de escalar a un número mayor de usuarios. Así podremos identificar los requisitos de infraestructura/servidor suficientes para el sistema.
Ayudan a verificar la robustez de la aplicación
Con las pruebas de carga, podemos verificar la robustez de la aplicación bajo cargas superiores a las esperadas. El objetivo es determinar el límite superior o punto de interrupción en el que la aplicación responderá correctamente a los usuarios concurrentes y no fallará.
Proceso de pruebas de rendimiento
Planificar y ejecutar pruebas de rendimiento requiere diferentes conjuntos de actividades que son comunes a cada prueba de rendimiento, independientemente de la herramienta utilizada. A continuación se indica un procedimiento paso a paso para planificar y ejecutar una prueba de carga.
1. Escenarios de pruebas de rendimiento
En primer lugar, seleccionamos los escenarios de prueba que se someterán a las pruebas de rendimiento. Normalmente, en lugar de seleccionar todos los escenarios de pruebas funcionales de una aplicación, elegimos sólo aquellos escenarios que tienen un gran volumen de datos o escenarios que serán ejecutados por un número relativamente grande de usuarios. Un ejemplo de escenario de prueba podría ser
- Inicia la aplicación,
- tiempo de espera,
- introduce unos datos de acceso válidos y haz clic en el botón «Iniciar sesión»,
- tiempo de espera,
- realizar una determinada actividad en la página de inicio.
- tiempo de espera,
- haz clic en el botón «Cerrar sesión».
El tiempo de espera se refiere al tiempo que un usuario pasa viendo una página web después de que se haya cargado, el tiempo que tarda en completar formularios como los de inicio de sesión, registro de usuarios, introducción de datos en campos de búsqueda, etc. Este tiempo es variable en función de la tarea que se realice, por ejemplo, el tiempo para completar un formulario grande puede ser de más de 10 segundos, mientras que el tiempo para completar los datos de acceso puede ser sólo de 2 a 3 segundos.
2. Distribución de usuarios
A la identificación de los escenarios le sigue la distribución de los usuarios. Aquí asignamos usuarios a diferentes escenarios. Por ejemplo, al probar el rendimiento de una aplicación de correo electrónico, podemos dividir a los usuarios en los siguientes escenarios:
- Escenario de lectura de correos no leídos – 50% de los usuarios
- Escenario de redacción de correos electrónicos – 30% de los usuarios
- Supuesto de eliminación del correo electrónico – 18% de los usuarios
- Escenario de registro de usuarios – 2% de los usuarios
3. Scripting
Las secuencias de comandos se realizan utilizando una herramienta de pruebas de carga como Load Runner, JMeter, Silk Performer, etc. Estas herramientas simulan acciones realizadas por los usuarios. Guionizamos los escenarios identificados y asignamos a los usuarios según su distribución.
4. «Procedimiento de «marcha en seco
Antes de iniciar realmente la prueba de carga con el número predefinido de usuarios, realizamos un procedimiento de «Funcionamiento en seco» de la aplicación, en el que asignamos 1 ó 2 usuarios a cada escenario y comprobamos si todo funciona correctamente.
5. Ejecución de la prueba y análisis de los resultados
Tras ejecutar la «Ejecución en seco» y asegurarnos de que los scripts funcionan correctamente, iniciaremos la prueba de carga real. La prueba de esfuerzo puede configurarse para que se ejecute durante un determinado tiempo o número de iteraciones. Por ejemplo, una prueba de esfuerzo puede programarse para «n» minutos o «m» iteraciones por usuario.
Una vez realizada la prueba de esfuerzo, se analizan los resultados. Algunas herramientas de código abierto pueden no tener muy buena interpretación incorporada de los resultados de las pruebas. En estos casos, puede ser necesario utilizar plugins u otras herramientas para incorporar una interpretación más avanzada o gráficamente intuitiva.
¿Cómo elegir una herramienta de pruebas de rendimiento de software?
Hay muchas herramientas disponibles para probar el rendimiento de las aplicaciones, como JMeter, LoadRunner, Gatling, Apache Bench, etc. Al seleccionar una herramienta, deben tenerse en cuenta los siguientes factores:
- Tipo de aplicación: algunas herramientas son más adecuadas para aplicaciones web, mientras que otras lo son para API o aplicaciones móviles.
- Características y capacidades:Explora las características y capacidades de la herramienta y evalúa si satisface tus necesidades de pruebas de rendimiento de aplicaciones.
- Usabilidad y aprendizaje: Considera lo fácil que es utilizar la herramienta y si requiere mucho tiempo de aprendizaje.
- Soporte y comunidad: asegúrate de que la herramienta tiene un soporte activo y una comunidad disponible donde puedes obtener ayuda y consejos para utilizarla.
También es importante recordar que las pruebas de rendimiento no son una actividad puntual. Se trata de un proceso que debe hacerse con regularidad e integrarse en el ciclo de desarrollo de la aplicación. De este modo, puedes garantizar que tu aplicación sea fiable, escalable y robusta en la gama más amplia posible de condiciones de carga.
Herramientas de comprobación del rendimiento del software
Veamos ahora algunas de las herramientas de pruebas de rendimiento más utilizadas.
- Apache JMeter – JMeter es una de las herramientas de pruebas de rendimiento más utilizadas. Como es gratuito y de código abierto, lo utilizan desde empresas de nueva creación hasta grandes empresas. El único inconveniente es que tiene una curva de aprendizaje algo más pronunciada en comparación con otras herramientas. Enlace de descarga: Descarga de Apache JMeter.
- LoadRunner – LoadRunner es una herramienta de pruebas de rendimiento desarrollada por Micro Focus. Es una herramienta de pago, pero también hay una versión comunitaria gratuita que admite hasta 50 usuarios virtuales para pruebas de carga. Enlace de descarga: descarga de loadrunner.
- WebLOAD – WebLOAD es una herramienta de pruebas de rendimiento de RadView. También es una herramienta de pago y, al igual que LoadRunner, ofrece una edición gratuita con 50 usuarios virtuales para pruebas de carga. Enlace de descarga: descarga webload.
- LoadNinja – LoadRunner es una de las herramientas de pruebas de rendimiento de pago. A diferencia de la mayoría de las demás herramientas de pago y gratuitas, es muy sencilla y rápida porque no requiere secuencias de comandos complejas, sino que funciona con navegadores reales en la nube. Enlace de descarga: descarga de loadNinja.
- Locust – Locust es una herramienta de pruebas de rendimiento gratuita y de código abierto que requiere programación en Python. Admite la ejecución de pruebas de rendimiento en varios dispositivos distribuidos. Enlace de descarga: descarga de langosta.
- NeoLoad – NeoLoad es una herramienta de pago para pruebas de rendimiento. Reduce significativamente el tiempo y la complejidad de las secuencias de comandos con sus funciones de arrastrar y soltar y grabar y reproducir. Además, también admite scripts de Selenium, lo que resulta práctico si utilizas Selenium para la automatización de pruebas. Enlace de descarga: Descarga de NeoLoad.
Para obtener más información sobre estas herramientas, junto con una evaluación detallada, consulta nuestro artículo sobre Herramientas de pruebas de rendimiento. Con esto concluye nuestro tutorial sobre las pruebas de rendimiento. Te animo a que eches un vistazo a nuestra serie de tutoriales sobre JMeter, que te lleva paso a paso por el aprendizaje de la herramienta de pruebas de rendimiento más popular, Apache JMeter, de forma gratuita.