Skip to content

Instantly share code, notes, and snippets.

@AndradeTC86
Last active September 11, 2024 15:12
Show Gist options
  • Save AndradeTC86/ae1cc6c0d1dfcbbfe307e2658943e7e0 to your computer and use it in GitHub Desktop.
Save AndradeTC86/ae1cc6c0d1dfcbbfe307e2658943e7e0 to your computer and use it in GitHub Desktop.
Automatización de Pruebas Funcionales: Comparación Técnica de los Frameworks Cypress, Playwright e Selenium

Automatización de Pruebas Funcionales: Comparación Técnica de los Frameworks Cypress, Playwright e Selenium

Resumen. En el contexto del desarrollo de software utilizando métodos ágiles, tener retroalimentación rápida y continua es crucial para el éxito de los proyectos. Una de las formas de garantizar una detección rápida de errores es mediante la ejecución de pruebas automatizadas. Dado el alto valor de las pruebas automatizadas, es necesario evaluar los distintos frameworks actualmente disponibles en el mercado para determinar cuál se adapta mejor a las necesidades del proyecto. Este trabajo se propone un análisis comparativo entre tres frameworks de pruebas: Selenium, una de las herramientas de automatización más tradicionales; Cypress, herramienta que ha ganado mucha popularidad en los últimos años; y Playwright, una herramienta más nueva que ha recibido mucha atención. Para realizar este análisis, se desarrollaron conjuntos de pruebas automatizadas para una aplicación web, con el objetivo de comparar los scripts generados en función de criterios seleccionados. De esta manera, se presentarán los pros y contras de trabajar con cada uno de estos frameworks.

1. Introducción

Las pruebas de software, entre otros objetivos, buscan detectar fallas y defectos existentes con el fin de reducir los niveles de riesgo de calidad del software [ISTQB-CTFL]. La regla 10 de Myers establece que el costo de corregir defectos tiende a aumentar cuanto más tarde se detecta el defecto. Los defectos encontrados durante la producción tienden a costar mucho más que los defectos encontrados en los modelos de datos y otros documentos de diseño de software. De esta manera, al tratar las pruebas como un proceso organizado que a menudo es paralelo e integrado con el proceso de desarollo, se reducirán los costos de manteniemiento. [Bastos 2007]

Hoy en día, constantemente se lanzan muchas opciones de software, por lo que el costo de cambiar de software ya no es tan alto como solía ser. Por esta razón, es cada vez más común la adopción de métodos de desarrollo ágiles, para satisfacer las necesidades de los clientes con incrementos constantes y correcciones rápidas. Como resultado, el plazo para lanzar una aplicación es cada vez más dinámico y, en consecuencia, el tiempo disponible para la ejecución de la prueba es cada vez más corto.

Debido al menor tiempo que lleva desarrollar y lanzar una aplicación, se hacen necesarias pruebas automáticas para encontrar defectos y garantizar la calidad durante los ciclos de desarrollo. La automatización de pruebas es el uso de software para controlar la ejecución de pruebas de software mediante la aplicación de estrategias y herramientas, comparando los resultados esperados con los resultados reales. Sus objetivos son reducir la implicación humana en las actividades manuales, las exigencias de tiempo y los costes finales. [Oliveira 2018]

Actualmente, existen muchas opciones de frameworks para la automatización de pruebas, muchas de ellas de código abierto, pero incluso la selección de un framework de código abierto para su adopción en la empresa no está libre de costos, después de todo, se debe tener en cuenta la curva de desarollo con un framework, que afectará el tiempo de formación necesario para que un empleado aprenda a utilizarlo. Además, es necesario comprobar si el framework satisface todas las necesidades de uso, de la contrario, será necesario modificarlo mediante personalización o instalación de complementos de terceros. Estos factores hacen que la elección de un framework sea una tarea compleja que requiere un buen análisis.

Uno de los frameworks más tradicionales y conocidos es Selenium, un proyecto integral para una variedad de herramientas y bibliotecas que permiten y respaldan la automatización del navegador web [Selenium 2023a]. Aunque su primera versión fue creada en el año 2004, el framework se encuentra actualmente en la versión 4.0 y cuenta con un gran apoyo por parte de la comunidad, como se puede observar en la Tabla 1 [Selenium 2024a].

Framework Linguajes soportadas Copias en GitHub Estrellas en GitHub
Selenium Java, Javascript, Python, Ruby, C# 7.9K 29K

Tabla 1. Datos sobre el framework Selenium

Cypress es una herramienta de prueba front-end reciente creada para aplicaciones web modernas. Se puede destacar que aborda los principales puntos débiles que enfrentan los desarrolladores e ingenieros de control de calidad al probar aplicaciones modernas [Cypress 2024a]. A pesar de haber sido creado en 2017, Cypress actualmente cuenta con una gran cantidad de usuarios activos, como se muestra en la Tabla 2. [Cypress 2024b]

Framework Linguajes soportadas Copias en GitHub Estrellas en GitHub
Cypress Javascript 3.1K 45.9K

Tabla 2. Datos sobre el framework Cypress

Playwright fue creado específicamente para satisfacer las necesidades de pruebas de un extremo a otro. Capaz de soportar todos los motores de renderización modernos, incluidos Chromium, WebKit y Firefox [Playwright 2024a], fue diseñado en 2020 por Microsoft y ha estado atrayendo mucha atención por parte de la comunidad, como se puede ver en la Tabla 3 [Playwright 2024b].

Framework Linguajes soportadas Copias en GitHub Estrellas en GitHub
Playwright Java, Javascript, Python, C# 3.2K 60.1K

Tabla 3. Datos sobre el framework Playwright

Aunque es más reciente, Playwright ya superó a Selenium en el número de descargas y a pesar de haber cerrado la brecha con Cypress en último año, todavía está lejos del número de descargas de Cypress, situación que se muestra en la Figura 1.

Figura1

Figura 1. Número de descargas de cada framework en los últimos 5 años. [NPM Trends 2024]

Por lo anterior, este trabajo tiene como objetivo identificar las principales funcionalidades y limitaciones de los frameworks seleccionados, realizar configuraciones del entorno, desarrollar la arquitectura del proyecto de automatización, con el fin de seguir buenas prácticas de ingeniería de software, desarrollar los mismos scripts de prueba en cada framework, ejecutar y validar para comparar los resultados obtenidos posteriormente.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment