Pruebas de stress sobre aplicaciones web

Uno de los análisis que suelen integrar cualquier plan de QA es la prueba de stress. Esta evaluación pone a prueba la robustez y la confiabilidad del software sometiéndolo a condiciones de uso extremas. Entre estas condiciones se incluyen el envío excesivo de peticiones y la ejecución en condiciones de hardware limitadas. El objetivo es saturar el programa hasta un punto de quiebre donde aparezcan bugs (defectos) potencialmente peligrosos.

Cuando hablamos de aplicaciones web, una posible condición extrema puede ser el acceso de un enorme número de usuarios en poco tiempo. Efectos similares pueden obtenerse con un ataque de denegación de servicio (DDoS) a través de un software malicioso. Los efectos de la saturación pueden ser la pérdida o adulteración de datos, el uso excesivo de recursos incluso una vez finalizada la situación de stress, un mal funcionamiento de componentes de la aplicación o la aparición de errores inesperados.

Un buen plan de pruebas de stress debe contemplar el desarrollo de no uno, sino varios casos de stress. Cada caso diferirá en el volumen del estímulo a aplicar sobre la aplicación (cantidad de usuarios, cantidad de peticiones, etc.), el tiempo que durará cada estímulo y la duración total del experimento, entre otras variables. Además, deberá contar con una serie de resultados esperados. Todos los casos deben ponerse en práctica, registrándose al término de cada uno estadísticas sobre el uso de CPU, memoria, conexión y otros recursos. Al finalizar, se comparan los resultados obtenidos con los esperados y se obtienen conclusiones sobre el rendimiento de la aplicación. Si se encontraron problemas, es necesario revisar el diseño o el código de la aplicación para descubrir el origen del conflicto.

La importancia de detectar errores a tiempo es tal, que las pruebas de stress suelen realizarse en las primeras instancias del plan de QA, incluso antes de verificar que la aplicación cumpla con los requerimientos solicitados. De esta manera se le entrega al cliente un software que puede no ser el definitivo, pero sí goza de la robustez adecuada para su uso diario.