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.

¿Qué es un plan de QA?

En el ámbito del desarrollo de software, la sigla QA significa Quality Assurance, o aseguramiento de la calidad. Se trata de un conjunto de actividades de evaluación de las distintas etapas del proceso de desarrollo para garantizar que el producto final sea de calidad. El concepto de calidad se presta a múltiples interpretaciones, pero siempre implica que el software satisfaga las necesidades del cliente.

Más allá de las diferencias, un buen plan de QA no puede desconocer la importancia de los estándares. Con esto nos referimos a reglas escritas y no ambiguas sobre los objetivos del producto, las metodologías de diseño y a seguir y convenciones necesarias para guiar la tarea de los programadores (estilos de codificación, estructuras de datos, etc.).

El plan de QA atraviesa el proceso de desarrollo desde el nacimiento de la idea hasta la implementación del software.  En las primeras etapas, verifica que los objetivos estén bien planteados y los requerimientos sean precisos. En las fases de diseño y codificación, vigila el cumplimiento de los estándares fijados. Finalmente, revisa que el software en funcionamiento respete los requerimientos pedidos y que la entrega al cliente se haga en las condiciones adecuadas.

El QA se basa en conjunto de pruebas de calidad entre las que se incluyen:

  • Testeo unitario: se prueba que cada módulo funcione bien por separado.
  • Prueba de stress: se prueba la resistencia de la aplicación enviándole una cantidad de peticiones excesiva, buscando que colapse.
  • Test de integración: los módulos probados independientemente durante el testeo unitario se acoplan y se prueban en conjunto.
  • Test funcional: se prueba que el software ofrezca las funciones solicitadas.
  • Test de aceptación: el usuario verifica que el producto satisfaga sus expectativas.

Las pruebas de QA no sólo son beneficiosas para el usuario final, que recibirá un producto de calidad, sino también para el equipo de desarrollo, que al establecer un control permanente sobre el proceso evitará en buena medida los costos de tener que corregir errores en etapas avanzadas del proyecto.