08. Testing de Performance
Las pruebas de performance sirven para simular la carga en el sistema bajo prueba, analizar su rendimiento (tiempos de respuesta y uso de información), encontrar brechas y oportunidades de mejora.
Existen herramientas específicas de simulación que automatizan las acciones que generan esta carga, por ejemplo, las interacciones entre el usuario y el servidor. Para simular muchos usuarios con poca infraestructura de prueba, las interacciones se automatizan a nivel de protocolo, esto hace que la automatización sea más compleja (en cuanto al trabajo necesario de preparación), que los scripts automatizados a nivel de interfaz gráfica.
Se pueden distinguir dos enfoques para las pruebas de performance:
- Pruebas tempranas en el desarrollo: pruebas de performance unitarias, pruebas de componentes o de servicios.
- Pruebas previas a producción en modo de pruebas de aceptación.
En este punto es importante aclarar que ambos enfoques son esenciales. Es necesario simular la carga esperada antes del release, pero no se aconseja dejar todo para último momento, ya que, si hay incidentes, seguramente serán más complejos de solucionar. Además, probar cada componente continuamente reduce el costo de las correcciones, pero no asegura que todo funcione adecuadamente cuando se integre e instale en un servidor y bajo la carga esperada.
Aquí es necesario el rol de DevOps para analizar los diferentes componentes de la aplicación, el sistema operativo, las bases de datos, etc., y utilizar diferentes herramientas de monitoreo para analizar dónde pueden existir brechas, y realizar cualquier ajuste según sea necesario. También es crucial involucrar a los desarrolladores en estas tareas, puesto que se requiere de la automatización, el desarrollo y muchas veces las mejoras que se deben hacer son a nivel de SQL, esquema de datos, o a nivel lógico, de algoritmo, de código, etc.
Para ejecutar continuamente pruebas de performance automatizadas, un problema clave es descubrir cómo asegurar que los scripts de prueba se puedan mantener. Esto sucede porque la automatización se ejecuta a nivel de protocolo y, en el caso de los sistemas web, por ejemplo, a nivel de HTTP, lo que hace que los scripts sean muy susceptibles a cambios en la aplicación. Algunas herramientas que han surgido para superar este problema y que usamos en Abstracta son Taurus y Gatling. Aunque tienen enfoques diferentes, ambas herramientas manejan un lenguaje de scripting simple y buscan reducir su complejidad. Por ejemplo, Gatling aplica patrones de diseño de prueba como Page Object Model, que pueden minimizar el impacto de los cambios, aumentando la capacidad de mantenimiento.
Esto demuestra que antes de optar por una herramienta, es crucial definir los objetivos del testing de performance, para elegir la que mejor se adapte a tus necesidades y desafíos. Cada herramienta cuenta con ventajas, desventajas y características que compensan aspectos diferentes.
Para obtener más información sobre herramientas y enfoques de pruebas de rendimiento, visita nuestro blog de ingeniería de performance.
Considera incorporar las pruebas de performance para la aceptación de un producto digital simulando la carga esperada del ambiente productivo, así como para acompañar todo el proceso de desarrollo con pruebas de performance unitarias que faciliten la integración continua.