analisis herramientas - jvanegaso/ghost-cucumber-testing GitHub Wiki

Ventajas y Desventajas de usar las Herramientas de comparación visual

Pros:

  • Facilita la identificación de cambios visuales entre versiones generadas.
  • Control de los cambios mucho más estructurado.
  • Es mucho más rápida y masiva la identificación de los cambios que si fuera manual.

Contras:

  • Ante un cambio visual fuerte , puede generar un cambio completo de la prueba en las versiones
  • Añade niveles de abstracción pesados a los algoritmos
  • Generación de muchos falsos positivos por diferencias como la posición del scroll como un ejemplo.

** Nota Importante !! ** El esfuerzo de la implementación de las herramientas de comparación visual generó mas retos técnicos y más esfuerzo en la herramienta de Cypress sobre la de cucumber.

Ventajas y Desventajas de usar las Herramientas de Automatización

Herramientas utilizadas:

  • Cypress.js
  • Cucumber + webdriver

Análisis de Cypress:

Pros:

  • Es una herramienta con buena documentación y soporte de la comunidad
  • Utiliza Javascript y el código se encola en promesas, lo que evita el uso intensivo de sentencias para esperar por determinado tiempo
  • Se pueden escribir comandos reutilizables, que se pueden compartir con el resto del equipo para evitar duplicar código
  • La ejecución de las pruebas es relativamente rápida en navegadores basados en Chromium

Contras:

  • Se require un amplio conocimiento en selectores, jquery, y comandos propios de la herramienta para lograr ejecutar los escenarios de pruebas
  • Hay varios errores que no son intuitivos o fáciles de resolver, especialmente en los que hay redireccionamientos internamente en aplicaciones tipo SPA (https://github.com/cypress-io/cypress/issues/5731)
  • A pesar de la funcionalidad basada en promesas, en muchas ocasiones se require poner sentencias que dentengan la ejecución, o incluso interceptar las peticiones asíncronas para detectar en qué momento hacer una aserción.

Análisis de Cucumber + Webdriver:

Pros:

  • La definición de los steps con Gherkin permite reutilizar sentencias de forma relativamente fácil
  • La funcionalidad de Scenario Outline agregando ejemplos de datos basados en tablas permite ejecutar múltiples veces un escenario que puede actuar de forma diferente según las entradas. Esto reduce la cantidad de código necesaria para implementar varios escenarios.
  • La sintaxis basada en lenguaje natural de Gherkin permite construir escenarios de forma más sencilla y amigable con stake holders
  • webdriver funciona con una sintaxis muy similar a jQuery, por lo cuál es sencillo utilizar selectores

Contras:

  • Dada la naturaleza de la sinaxys de Gherkin es muy fácil cometer errores en la definición de los steps y los features
  • La ejecución de pruebas es un poco más lenta que la de Cypress
  • Al igual que Cypress, tiene una curva de aprendizaje un tanto inclinada al inicio, y es recomendable tener experiencia en JS
  • Dado que la ejecución no es asíncrona, es necesario agregar múltiples temporizadores, o métodos que esperan que un objeto sea desplegado, esos métodos agregan mucha información a los logs y consumen recursos de significativamente.