Existen diferentes herramientas tecnológicas orientadas al desarrollo de pruebas, nos encontramos con infinidad de alternativas y a continuación profundizaremos con Cypress.
Probando diferentes versiones y diferentes tipos de pruebas, por fin tenemos un ganador de la batalla, ¿cuál herramienta es mejor para pruebas automatizadas? Y la respuesta es: ninguna.
Cada una de las herramientas y frameworks utilizados para pruebas automatizadas, ya sea en API’s, interfaz de usuario o rendimiento, suplen una necesidad diferente en la particularidad del proyecto, pero hemos venido a hablar de las bondades de Cypress y por qué deberíamos o no escoger esta herramienta para nuestras pruebas automatizadas.
¿Qué es Cypress?
Cypress es una herramienta de código abierto utilizada para el testing de aplicaciones más modernas, utilizando el lenguaje de programación JavaScript nos permite escribir diferentes tipos de pruebas de la pirámide de Cohn.
Definido en su página web oficial como “A complete end-to-end testing experience”, esta herramienta se enfoca en facilitar la escritura de pruebas a sus usuarios más frecuentes, los desarrolladores e ingenieros de calidad con una curva de aprendizaje que, consideramos es fácil de abordar si tienes un mínimo de experiencia en pruebas e incluso en JavaScript.
Tipos de pruebas que se pueden realizar con Cypress
Como mencionamos anteriormente, uno de los grandes fuertes de Cypress es su gran capacidad en aplicaciones modernas, si hablamos de las pruebas de interfaz de usuario desde el punto de vista de la aceptación del usuario, la velocidad con la que Cypress recorre los sitios web desarrollados en frameworks como Angular o React es increíble, al igual que en aplicaciones desarrolladas con otras tecnologías, llegando al punto que es casi imposible seguir la automatización con los ojos. Debemos recordar que la mayoría de estas aplicaciones web, que son desarrolladas con estos frameworks, nos dan la posibilidad de usar elementos dinámicos, lo cual complicaba tareas de automatización con otras herramientas, con Cypress tenemos diferentes opciones para encontrar esos elementos que son todos unos loquillos.
En el ámbito de pruebas unitarias, para los conocedores de aserciones con Mocha y Chai, podremos volver a utilizar estas librerías, sumándole que, podremos diseñar nuestros test con BDD y TDD pudiendo depurar y ver con exactitud nuestra prueba en la herramienta de ejecución de Cypress y con una propia línea de comandos de la misma.
Así mismo podemos construir pruebas para API’s e integración de componentes, utilizando esta combinación de aserciones y procesos de desarrollo, añadiendo además utilidades como lo son cucumber para la escritura de pruebas BDD o Serenity BDD para nuestros reportes de pruebas con evidencias vivas. En cualquier caso, Cypress nos permite tener una cobertura de pruebas bastante amplia y así garantizar la calidad en todo el ciclo de vida del software.
¿Qué beneficios encontramos con Cypress?
- Es una herramienta muy sencilla de instalar y configurar, solamente te tardará un par de minutos empezar a escribir una prueba, instalando correctamente node.js y haciendo uso del node package manager (npm).
- Se pueden escribir pruebas de manera sencilla y rápida, creando archivos de tipo JavaScript y definiendo correctamente la estructura de la prueba (describe o simplemente usando los it) y todas las funcionalidades disponibles para hacer aserciones.
- La interfaz desplegada por Cypress nos ayuda a visualizar perfectamente el paso a paso de nuestra prueba y facilita encontrar errores y posibles soluciones sugeridas por el framework. Tendremos todo integrado en una sola interfaz, donde podremos ver: los scripts que puedo ejecutar, el paso a paso de la prueba, el navegador web deseado.
- Encontrar elementos web se facilita por medio de sus funcionalidades cy.get, cy.find o el tradicional cy.xpath (xpath), nos da una posibilidad de llegar a elementos que en otra herramienta nos hubiese complicado su desarrollo.
- Nos ayuda a manejar nuestros tiempos de espera en una prueba, haciendo uso de sus propios tiempos y de los reintentos, eliminando esas malas prácticas de tener tiempos en la mitad de nuestro código.
- Tiene una comunidad muy amplia, existen muchas personas que trabajan con la herramienta por lo que existe mucha documentación.
- No es necesario el uso de un driver externo como Chrome driver o Geckodriver.
¿Qué desventajas encontramos?
- Las configuraciones entre versiones de Cypress pueden cambiar cosas como formas de mapear elementos, interfaz, funcionalidades, lo que puede llegar a frustrar en la búsqueda de documentación específica.
- No cubre tantas pruebas no funcionales como pueden ser las pruebas de performance (línea base, carga, estrés, etc.) y la capacidad de hilos para las mismas.
- No es posible desplegar múltiples ventanas del navegador y probar diferentes escenarios al mismo tiempo.
Experiencia con la interfaz de Cypress
Uno de los beneficios que contábamos de Cypress era su interfaz de ejecución, en el cual se despliega una vista que contiene nuestros posibles archivos a ejecutar, ver los errores, el paso a paso de nuestra prueba y la ejecución de la misma, todo esto en tiempo real.
En una de nuestras experiencias con Cypress se debía desarrollar una prueba para una aplicación web que hacía uso de la autenticación de Google con doble factor, como este login no era parte de nuestro alcance de la estrategia y también conociendo lo complicado que es hacer pruebas teniendo bloqueos por la autenticación en dos pasos o reCAPTCHA, se puso a prueba la interfaz de Cypress y así tener un login previo en nuestros credenciales del navegador, estos guardados de cookies o credenciales nos funcionaba y ya se podía ejecutar nuestra prueba automatizada y sacar los reportes de la funcionalidad. Sin esta interfaz, una de las posibles soluciones en otras herramientas, podría ser el uso de las APIs de Google para generar tokens de autenticación o la ejecución de la prueba con ayudas manuales, lo cual costaría más tiempo y en algunos casos pruebas no tan confiables, gracias a Cypress esto no fue necesario.
Consideramos que Cypress es la herramienta que deberías usar si deseas aumentar la velocidad de ejecución de test, tener una visión más amplia de tus ejecuciones, una curva de aprendizaje más baja en esos primeros pasos y configuraciones rápidas, aunque Cypress no cuenta con todos los niveles de pruebas de una pirámide de Cohn más compleja, creemos que puede ser una gran herramienta con la cobertura de pruebas óptima para garantizar la calidad en las funcionalidades desarrolladas en tecnologías no tan nuevas y en las más modernas también.
¿Qué estás esperando para conocer DevOps?, ¡descubre ya nuestro servicio!
Referencias:
https://istqb-glossary.page/test-pyramid/
https://medium.com/@wc.testing.qa/la-famosa-pir%C3%A1mide-de-cohn-y-la-dura-realidad-e1250dfbe5f3