Las pruebas de software son fundamentales para garantizar el éxito de cualquier proyecto de desarrollo o implementación. De hecho, la calidad del software dependerá del cumplimiento de ocho características de calidad, definidas por la norma ISO/IEC 25010:2011. Estas características son: funcionalidad, rendimiento, compatibilidad, usabilidad, fiabilidad, seguridad, mantenibilidad y portabilidad.

Siendo un tema tan importante en el desarrollo de software, el director de Tecnología de Innovart, Javier Escobar dictó un taller en el I Congreso de Investigación en la Universidad Católica Andrés Bello (UCAB), en Caracas, sobre la calidad y pruebas de software.

Las claves en las pruebas de software

En su taller, Escobar hizo un repaso por las áreas importantes en el desarrollo y las pruebas de software. Y el rendimiento es uno de los aspectos destacados:

El rendimiento se refiere a la capacidad del software para responder y procesar las solicitudes en un tiempo aceptable, bajo condiciones normales y extremas de uso. Es especialmente importante para los sistemas que manejan grandes volúmenes de datos o usuarios concurrentes, como las aplicaciones web o móviles.

Para medir el rendimiento del software se utilizan las pruebas de carga y las pruebas de estrés. Las primeras consisten en someter al software a una cantidad creciente de solicitudes, hasta alcanzar el límite máximo que puede soportar sin perder calidad. Las pruebas de estrés consisten en someter al software a una cantidad excesiva de solicitudes, más allá del límite máximo, para observar cómo se comporta y qué fallas presenta.

Durante el taller se buscó que los estudiantes puedan pensar desde un punto de vista de auditores de calidad del software, capaces de diseñar, ejecutar y analizar las pruebas de rendimiento, así como de dar recomendaciones en base a los hallazgos obtenidos. 

Las herramientas: Element y Flood

Durante el taller vimos Element y Flood, herramientas para programar y realizar pruebas de carga y estrés. Veamos sus detalles.

Element

Element es una herramienta de prueba de carga basada en el navegador que te permite crear scripts rápidamente en TypeScript. Puede usar tu aplicación web de la misma manera que lo hacen tus clientes, abriendo un navegador e interactuando con los elementos de la página. Está escrito como un script de prueba funcional, pero con la ayuda de Flood, puedes ejecutar fácilmente una prueba de carga en tantos nodos como quieras en la nube.

Aquí hay algunas características clave de Element:
  • Carga realista: Trabajar a un nivel superior de abstracción simplifica mucho las solicitudes que necesitas hacer para simular usuarios en tu aplicación.
  • Datos de prueba: La prueba de carga sin datos de prueba es como usar lorem ipsum en producción. Element se envía con un rico soporte para cargar datos desde múltiples archivos CSV y JSON.
  • Compatible con Selenium: El DSL de Element está fuertemente influenciado por WebDriver.js, lo que facilita la migración de tus scripts de Selenium a Element.
  • Construido en Playwright: Gracias a la velocidad y al soporte multi-navegador de la biblioteca de automatización de Playwright, Element genera carga lanzando miles de instancias de Chromium, Firefox o Webkit.
  • TypeScript: TypeScript te proporciona documentación en línea y validación de scripts antes de presionar el lanzamiento, para detectar los pequeños problemas que podrían detener el espectáculo.
  • Interfaz de línea de comando: Inicia nuevas pruebas, valida y observa tus scripts ejecutándose localmente en tiempo real con nuestra CLI intuitiva y progresiva.
  • Simulación de múltiples usuarios locales: Genera un número de usuarios virtuales, aumentando y/o disminuyendo durante una duración específica, cada uno ejecutando una instancia de navegador para realizar pruebas de carga localmente a pequeña escala.
  • Informe de prueba HTML: Visualiza un informe HTML de los resultados finales de la prueba de tu suite de pruebas. De esta manera, mientras evalúas el rendimiento, también puedes evaluar la calidad de la aplicación en prueba sin la molestia de escribir scripts separados para pruebas no funcionales y funcionales.
  • Lanzamiento rápido de Flood: Lanza tu prueba de carga en Flood sin abrir el navegador. Solo autentica tu cuenta de Flood en Element e inicia un flood directamente desde la CLI de Element.

Flood

Flood es una plataforma que te permite subir y ejecutar scripts de pruebas de carga a gran escala en infraestructura basada en la nube y local. Algunas de sus funcionalidades son:

  • Scripting y herramientas: Flood te permite usar diferentes herramientas para crear tus scripts de pruebas de carga, como JMeter, Gatling, Selenium o Element. También puedes usar el Flood Chrome Extension para grabar tus acciones en el navegador y convertirlas en un script de Element.
  • Ejecución de pruebas: Flood te permite configurar y lanzar tus pruebas de carga desde una interfaz web fácil de usar. Puedes elegir entre diferentes regiones y proveedores de nube para distribuir tu carga, así como ajustar el número de usuarios virtuales, la duración y la frecuencia de tus pruebas.
  • Análisis de resultados: Flood te ofrece un panel de control interactivo donde puedes ver las métricas de rendimiento de tu aplicación en tiempo real. Puedes filtrar, agrupar y comparar los datos de tus pruebas, así como exportarlos a otros formatos o integrarlos con otras herramientas de análisis.

Integración continua: Flood te permite automatizar tus pruebas de carga integrándolas con tu pipeline de desarrollo. Puedes usar la API de Flood o los plugins de herramientas como Jenkins, TeamCity o Bamboo para ejecutar tus pruebas de forma programada o bajo demanda.