Cypress es un nuevo jugador en las herramientas de código abierto para pruebas automatizadas de software.
Presentado por Gilberto Sánchez en SG Virtual Conference 2020
Alan Turing Vida o biografía resumida como presentación
Cypress en un mundo lleno de Selenium
1. Cypress en un
Mundo de Selenium
Gilberto Sánchez Mares
Consultor De Automatización
@ Titanium Solutions
Unidos compartiendo y aprendiendo
#SGVirtual
2. Gilberto Sánchez Mares
Consultor de Pruebas de software con más de
8 años de experiencia en el área de pruebas
de software
gsanchez@titaniumsolutions.com.mx
Gilberto Sánchez
Mares
3. Temas
1. End-To-End Testing.
a) ¿Qué es End-to-End Testing?
b) End-to-End vertical vs Horizontal
2. Introducción a Cypress.
a) ¿Qué es Cypress?
b) Principales Características
3. Demo.
a) Arquitectura
b) Proceso
6. La pirámide de pruebas actual se enfoca en prevenir bugs, más que en encontrarlos.
Pirámide de las Pruebas
GUI Test
Integration
Test
Component/Contract
Test
Unit Test
7. una metodología en la cual, el flujo entero de una aplicación es evaluado. El propósito de
este mecanismo es verificar que los distintos componentes de una aplicación funcionan
correctamente entre sí.
Usando pruebas E2E interactuamos con la aplicación como un usuario regular lo haría, y, por
lo tanto, utilizando cada parte de la aplicación y evaluando las respuestas para el
comportamiento esperado.
¿Qué es End-to-End Testing?
Test Planing
Test Design
Test Execution
Result
Analysis
8. Beneficios del e2e
Ayuda a garantizar que el software esté listo para producción y evitar riesgos después del
lanzamiento.
1. Confirma el estado de la aplicación: las pruebas e2e validarán que su software sea funcional en
cada nivel (desde el front hasta el back-end).
2. Expande la cobertura de prueba: Amplía la cobertura de prueba para poder crear casos de prueba
adicionales que pueden no haber sido considerados previamente.
3. Detecta errores y aumenta la productividad de la aplicación: en las pruebas e2e, el software
generalmente se prueba después de cada iteración, lo que significa que podrá encontrar y
solucionar cualquier problema más rápido.
4. Reduce los esfuerzos y los costos de las pruebas: con menos errores y pruebas exhaustivas en cada
paso, las pruebas e2e también disminuirán la necesidad de repetir las pruebas.
10. e2e Vertical vs Horizontal
E2E Horizontal: Incluye UI y la capa de
integración.
E2E Vertical:
Implementación de
pruebas en todos los
niveles de pruebas.
11. Tipo de E2E Prerrequisitos Ventajas
Horizontal
Debido a que está verificando un flujo
de trabajo completo en múltiples
aplicaciones, es vital que los entornos
de prueba para su sistema y todos sus
subsistemas estén configurados de
antemano.
• Incluye pruebas de enfoque en la perspectiva
del usuario.
• Evita que los problemas lleguen a la
producción.
• Garantiza la cobertura de los requisitos de
lógica empresarial.
Vertical
Dado que enfoca sus pruebas en la
arquitectura de una sola aplicación,
necesitará el respaldo de una estrategia
de prueba o desarrollo, como BDD, TDD o
las pruebas continuas. Deberá asegurarse
de que cada parte interesada importante
participen en el proyecto.
• Alta cobertura de código
• Ejecución de prueba más rápida
• Pruebas más enfocadas
• Útil para software crítico de seguridad
Prerrequisitos y Ventajas
Prerrequisitos y Ventajas de los Tipos
de e2e
18. 7 formas en que Cypress es diferente
1. No usa Selenium.
2. Se enfoca en hacer pruebas e2e REALMENTE bien.
3. Trabaja en cualquier framework de front-end o sitio
web.
4. Las pruebas de Cypress están escritas solamente en
JavaScript.
5. Es todo en uno.
6. Es para desarrolladores e Ingenieros de Pruebas.
7. Ejecuta mucho, mucho más rápido.
Principales Ventajas
20. Viaje en el Tiempo
Toma screenshots mientras se ejecutan las pruebas. Simplemente
coloque el cursor sobre los comandos en el Command Log para
ver exactamente qué sucedió en cada paso.
Características
Recarga en Tiempo Real
Se recarga automáticamente cada vez que realiza cambios en sus
pruebas. Vea los comandos ejecutados en tiempo real en su
aplicación.
Spies, Stubs y Clocks
Verifique y controle el comportamiento de las funciones, las
respuestas del servidor o los temporizadores. La misma
funcionalidad que le encanta de las pruebas unitarias está al
alcance de su mano.
Resultados Consistentes
Nuestra arquitectura no utiliza Selenium o WebDriver. Saluda a
las pruebas rápidas, consistentes y confiables.
Depuración
Deja de adivinar por qué tus pruebas están fallando. Depure
directamente desde herramientas familiares como Chrome
DevTools. Nuestros errores legibles y los rastros de la pila
agilizan la depuración..
Espera Automática
Nunca agregue waits o sleeps a sus pruebas. Cypress
automáticamente espera comandos y aserciones antes de
continuar. No más infierno asíncrono.
Control de Tráfico de Red
Controle, bloquee y pruebe casos extremos fácilmente sin
involucrar a su servidor. Puede detener el tráfico de red
como quiera.
Screenshots y Videos
Vea capturas de pantalla tomadas automáticamente en caso de
falla o videos de todo su conjunto de pruebas cuando se
ejecutan headlessly.
21. Page Object Model App Actions
Es muy popular entre la comunidad, ya que se ha
implementado desde hace bastante tiempo.
Definida por Cypress es bastante nueva y no se han producido
muchas adaptaciones.
Es como otro contenedor para Page DOM.
Tiene muy poco o nada que ver con DOM, ya que la acción de
la aplicación intenta evitar DOM.
usa DOM como white box y el resto de la aplicación
como black box (como métodos internos, XHR, API,
etc.).
Intenta invocar métodos internos, API de la aplicación y,
por lo tanto, considera la aplicación completa, incluido
DOM, como un White box y nada queda como un black box.
Es bastante fácil de escribir, ya que cualquier
persona que tenga conocimiento sobre identificadores
de objetos comienza a trabajar con él.
Necesita más conocimiento de codificación o aspectos
internos de la aplicación y es posible que deba escribir un
código contenedor internamente en la aplicación o agregar
lógica en su código de prueba y vincularlo con el código de
la aplicación.
Debe mantenerse por separado como clases si la
aplicación cambia, todas las clases POM DEBEN
cambiarse también.
Están menos vinculadas con DOM e incluso si puede crear DOM
privado interno sobre la marcha, pero de nuevo, es mucho
menos engorroso que POM
Hace que la prueba sea más lenta ya que implica una
compilación adicional de todos los casos de prueba.
Es mucho más rápida o, a veces, incluso más rápida que la
aplicación y debe sincronizarse (lo que a su vez es una
desventaja)
Tiene mucho apoyo de la comunidad.
Tiene poco o ningún soporte, ya que es más probable que
entiendas el desarrollo de la aplicación y cómo seleccionas
el código.
Page Object Model vs App Actions
App Actions
24. Stack de Tecnologías
Gherkin
Feature File
Page Object
Model
Cypress
Test Driver
JavaScript
Binding Language
Cucumber
(BDD) Testing Framework
Step File
Test Data