Adaptación de las Pruebas E2E para un Gran Proyecto

Rate this content
Bookmark

DeliveryHero es una gran empresa internacional. Y como en toda gran empresa, la introducción de una nueva mejora técnica es un tema candente. Conozca los desafíos que nuestro equipo enfrentó al hacer que nuestra plataforma sea probada de extremo a extremo, cómo mejoraron nuestros mecanismos de informes con el tiempo y las soluciones que desarrollamos para probar diferentes variaciones de una función.

FAQ

El proyecto de Delivery Hero implica un gran desarrollo de front-end que requiere mantenimiento y desarrollo continuo. Las pruebas de extremo a extremo se han implementado para mejorar la eficiencia, evitando las pruebas manuales repetitivas y asegurando la calidad al introducir grandes cambios.

Más de 20 desarrolladores de front-end trabajan en el proyecto, que incluye un repositorio de micro-front-ends con más de 50 mil líneas de código y un monolito con 200 mil líneas de código.

Las pruebas de extremo a extremo se ejecutan en un repositorio separado como un trabajo programado, aunque se está trabajando para integrarlas con los pipelines de CI/CD y se utiliza una integración personalizada de Slack con Cypress para notificaciones y reportes.

Se han adoptado prácticas como el uso de atributos de accesibilidad en lugar de data CI, la creación de comandos personalizados para optimizar las pruebas, y la utilización de cookies para probar diferentes variaciones de funcionalidades.

Para evitar repetir todo el ciclo de pruebas, se utiliza un comando personalizado que permite iniciar pruebas directamente en las páginas específicas que están siendo desarrolladas, preparando el almacenamiento y otros datos necesarios de forma automática.

Los futuros planes incluyen integrar completamente las pruebas de extremo a extremo en el pipeline de CI/CD y trasladar las pruebas al monorepo del proyecto de micro-front-ends una vez completada la migración desde el monolito.

Sí, Delivery Hero está en búsqueda activa de desarrolladores para unirse al equipo y contribuir al desarrollo y mejora de sus proyectos.

Vadym Kukhtin
Vadym Kukhtin
Devesh Jadon
Devesh Jadon
8 min
18 Jun, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta Charla presenta la adaptación de las pruebas de extremo a extremo para un proyecto, destacando sus beneficios en la mejora de la resiliencia y la tranquilidad durante la implementación. El orador menciona el tamaño del equipo, las solicitudes de extracción diarias y el tamaño de su base de código. También discuten el uso de cookies para probar diferentes versiones de una función en una página y su plan de mejora mediante la adición de pruebas E2E a un pipeline de CICD y la consolidación de pruebas en su monorepo.

1. Introducción a las pruebas de extremo a extremo y configuración

Short description:

Hola, soy Vadim, un ingeniero de front-end de Delivery Hero, y hoy con mi colega Devesh, quiero presentarles la adaptación de las pruebas de extremo a extremo que hemos realizado para nuestro proyecto. Pensamos que es una gran mejora introducir las pruebas de extremo a extremo para mejorar nuestra resistencia y tranquilidad al implementar un gran cambio. Tenemos más de 20 desarrolladores de front-end, hacemos 10 solicitudes de extracción diarias y nuestro repositorio de micro-front-ends tiene más de 50 mil líneas de código en total sin incluir los módulos de nodo. La configuración de las pruebas de extremo a extremo es un repositorio separado y las ejecutamos como un trabajo programado. También utilizamos las mejores prácticas del equipo de Cypress y los principios de accesibilidad en las pruebas. Ahora, quiero cederle la palabra a Dinesh.

y hoy con mi colega Devesh, quiero presentarles la adaptación de las pruebas de extremo a extremo que hemos realizado para nuestro proyecto en Delivery Hero. El orden del día para hoy será el estudio de caso para las pruebas de extremo a extremo, o por qué comenzamos a hacerlo, la configuración de las pruebas de extremo a extremo, y las mejores prácticas que utilizamos, luego cómo evitar repetir este ciclo durante el desarrollo de las pruebas, y cómo estamos probando diferentes variaciones de la funcionalidad. Entonces, el estudio de caso para las pruebas de extremo a extremo fue bastante simple y común como para todos, porque Delivery Hero es una gran empresa con un gran proyecto de front-end, lleva mucho tiempo y esfuerzo mantenerlo y desarrollarlo, así que pensamos que es una gran mejora para la situación introducir las pruebas de extremo a extremo para no tener que probar manualmente las funcionalidades cada vez o depurar correcciones, así que podemos mejorar nuestra resistencia y la tranquilidad al implementar un gran cambio. Para tener una idea de la escala, tenemos más de 20 desarrolladores de front-end, hacemos 10 solicitudes de extracción diarias, nuestro repositorio de micro-front-ends tiene más de 50 mil líneas de código en total sin incluir los módulos de nodo, y el monolito tiene el antiguo monolito tiene 200 mil líneas de código en total, así que es bastante grande. La configuración de las pruebas de extremo a extremo que tenemos es básicamente un repositorio separado, porque agregamos las pruebas mientras nos estábamos migrando del antiguo proyecto al mono-repo con los micro-front-ends, y tenemos la simplicidad de ejecutar las pruebas en el repositorio separado para que los desarrolladores puedan incorporarse fácilmente. Por ahora, las ejecutamos como un trabajo programado, sí, sabemos que no es un estándar, digamos, pero estamos trabajando en la integración con los pipelines de CICD, y creamos nuestra propia integración personalizada de Slack con Cypress. Sabemos que hay un complemento oficial desarrollado la semana pasada, pero sí, todavía tenemos el nuestro por ahora. Sí, puedes ver el ejemplo de cómo es el mensaje del bot de Slack con el informe, y puedes hacer clic en el botón de informe y verificar este tipo de informe, que es muy útil porque muestra como la traza de la pila, el error exacto y la captura de pantalla. También, por supuesto, estamos utilizando algunas mejores prácticas del equipo de Cypress y algunas propias, que intentan utilizar los principios de accesibilidad en las pruebas creadas por Ken Dodds, el creador de la biblioteca de pruebas. En lugar de utilizar data CI, que es una mejor práctica del equipo de Cypress, podemos utilizar los atributos de área y otros atributos de accesibilidad, que son muy útiles y prácticos. También, por supuesto, utilizamos los comandos de Cypress para ayudantes generales, como si algo se utiliza en especificaciones separadas o más de dos veces, simplemente lo envolvemos en el comando y lo usamos como una sola línea, lo cual es más sencillo. Además, estamos utilizando una anotación de given, pero no solo como una estructura para la prueba, sino también, como un comando, porque como puedes ver aquí en un ejemplo, es muy útil, porque incluso si eliminas todo el código, aún tienes una idea de qué va a probar la prueba, porque a veces los comandos pueden ser complicados. Y ahora, quiero cederle la palabra a Dinesh, por favor. Gracias, Vadim. Hola a todos. Vadim mencionó escenarios bastante buenos sobre las mejores prácticas que estamos siguiendo. Así que, voy a guiarlos sobre dos cosas en particular que estamos haciendo en nuestro equipo, que realmente nos ayuda a lograr una prueba muy rápidamente. Entonces, una de estas cosas en particular es cómo evitar repetir el ciclo. Quiero decir, la mayoría de las pruebas de extremo a extremo que se ven hoy en día son como un flujo único. Primero, el usuario, quiero decir, primero la prueba de extremo a extremo pasa por una página, luego la segunda página y la tercera página. Es de manera secuencial. Pero considerando que somos un equipo de más de 20 desarrolladores, como mencionó Vadym, y diferentes equipos están trabajando en diferentes páginas o diferentes módulos, no queremos repetir todo el ciclo durante el desarrollo. Queremos probar nuestras funcionalidades, queremos probar solo nuestra página. Entonces, esto sería algo así, ¿de acuerdo? Ir directamente desde una página a nuestra página. Entonces, ¿cómo lo estamos logrando realmente? Creamos un servicio de utilidad en nuestras utilidades. Quiero decir, no es una utilidad, pero podríamos decir un comando que Vadym mencionó. Tenemos un comando personalizado, que es ir a la página. Entonces, ¿qué sucede en este comando en particular? Esto podría ser cualquier página. Como, esto podría ser ir a mi página y luego puedo marcar los datos anteriores sobre todas las páginas que vinieron antes, como todos los datos que agregaron al navegador, al almacenamiento, todo será

2. Pruebas de Diferentes Versiones de una Funcionalidad

Short description:

Voy a configurar el almacenamiento local, todos los datos, luego realizaré la prueba relacionada con mi página en particular. Y si algo está mal, como durante la marcación de los datos, simplemente puedo evitar hacer la prueba y redirigir a la página predeterminada. Para probar diferentes versiones de una funcionalidad en una página, aprovechamos las cookies del navegador. Creamos un servicio de utilidad que cambia los valores del servicio de banderas de funcionalidad y los fusiona con nuevos valores. Después de configurar la clave dentro de una cookie, escribimos la prueba. Aunque tenemos buenas prácticas implementadas, siempre hay margen de mejora. Planeamos alejarnos del trabajo programado y agregar pruebas de extremo a extremo a un pipeline de CICD. También consolidaremos las pruebas de extremo a extremo en nuestro monorepo para el micro frontend. Únete a nosotros en Delivery Hero.

marcado aquí. Y lo que haré después de esto, usaré la ventana sin marcos. Configuraré el almacenamiento local, todos los datos, luego realizaré la prueba relacionada con mi página en particular. Y si algo está mal, como algo está mal durante la marcación de los datos, puedo simplemente evitar hacer la prueba y puedo redirigir a la página predeterminada. Ahora, lo que viene a continuación es, ¿cómo estamos probando realmente las diferentes versiones de una funcionalidad? Supongamos que estás en una página, tienes tu página, pero ahora quieres probar diferentes versiones de tu funcionalidad en esa página en particular. Entonces, ¿qué harías? Para esto, encontramos una solución simple, aprovechar las cookies del navegador. Creamos un servicio de utilidad en nuestra aplicación que utiliza las cookies del navegador y cambia los valores que provienen del servicio de banderas de funcionalidad y los fusiona con los nuevos valores. En este caso, este servicio de utilidad se puede utilizar para cambiar la variación de la bandera de funcionalidad y se ve así. En este caso, puedes ver que tenemos las banderas de funcionalidad que provienen del servicio, tenemos las banderas de las cookies, las fusionamos y las almacenamos en la memoria caché. ¿Y qué sucede después de eso? Ok. Nuestra aplicación está lista para manejar las cookies. Ahora solo necesitamos configurar esta clave en particular dentro de una cookie con las variaciones mencionadas aquí. Como puedes ver en la prueba, prueba para la variación de la bandera de funcionalidad, simplemente configuro la cookie para esas variaciones y luego, después de eso, puedo seguir escribiendo mi prueba. Como puedes ver, tenemos muchas buenas prácticas y tenemos cosas buenas implementadas en este momento, pero nadie es perfecto y siempre hay margen de mejora. Entonces, algunas cosas que notamos y tenemos un plan para ello. Una cosa es alejarnos del trabajo programado y agregar pruebas de extremo a extremo a un pipeline de CICD. Y lo siguiente es, como mencionó Vadim, tenemos las pruebas de extremo a extremo en un repositorio separado. Y tuvimos el caso de uso porque estamos migrando del monolito a un micro frontend. Una vez que todo se haya migrado al micro frontend, agregaremos las pruebas de extremo a extremo a nuestro monorepo para el micro frontend y definitivamente seguiremos mejorando. Eso es lo que estamos haciendo. Seguiremos mejorando la calidad de nuestras pruebas. Y por último pero no menos importante, por favor, únete a nosotros. Estamos buscando desarrolladores como tú, por favor únete a nosotros en Delivery Hero. Gracias. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Seamos realistas: la deuda técnica es inevitable y reescribir tu código cada 6 meses no es una opción. La refactorización es un tema complejo que no tiene una solución única para todos. Las aplicaciones de frontend son particularmente sensibles debido a los frecuentes cambios de requisitos y flujos de usuario. Nuevas abstracciones, patrones actualizados y limpieza de esas viejas funciones - todo suena genial en papel, pero a menudo falla en la práctica: los todos se acumulan, los tickets terminan pudriéndose en el backlog y el código legado aparece en cada rincón de tu base de código. Por lo tanto, un proceso de refactorización continua es la única arma que tienes contra la deuda técnica.En los últimos tres años, he estado explorando diferentes estrategias y procesos para refactorizar el código. En esta charla describiré los componentes clave de un marco para abordar la refactorización y compartiré algunos de los aprendizajes acumulados en el camino. Espero que esto te ayude en tu búsqueda de mejorar la calidad del código de tus bases de código.

Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Como desarrolladores, pasamos gran parte de nuestro tiempo depurando aplicaciones, a menudo código que ni siquiera escribimos. Lamentablemente, a pocos desarrolladores se les ha enseñado cómo abordar la depuración, es algo que la mayoría de nosotros aprendemos a través de la experiencia dolorosa. La buena noticia es que _puedes_ aprender a depurar de manera efectiva, y hay varias técnicas y herramientas clave que puedes usar para depurar aplicaciones de JS y React.
Pruebas de Aplicaciones Web con Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Pruebas de Aplicaciones Web con Playwright
Top Content
Las pruebas son difíciles, las pruebas requieren tiempo para aprender y escribir, y el tiempo es dinero. Como desarrolladores queremos probar. Sabemos que deberíamos pero no tenemos tiempo. Entonces, ¿cómo podemos conseguir que más desarrolladores hagan pruebas? Podemos crear mejores herramientas.Permíteme presentarte a Playwright - Pruebas confiables de extremo a extremo en diferentes navegadores para aplicaciones web modernas, por Microsoft y completamente de código abierto. El codegen de Playwright genera pruebas para ti en JavaScript, TypeScript, Dot Net, Java o Python. Ahora realmente no tienes excusas. Es hora de jugar tus pruebas correctamente.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Construyendo un Asistente AI Activado por Voz con Javascript
JSNation 2023JSNation 2023
21 min
Construyendo un Asistente AI Activado por Voz con Javascript
Top Content
En esta charla, construiremos nuestro propio Jarvis utilizando Web APIs y langchain. Habrá codificación en vivo.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
Next.js y otros marcos de trabajo que envuelven a React proporcionan un gran poder en la construcción de aplicaciones más grandes. Pero con gran poder viene una gran responsabilidad de rendimiento - y si no prestas atención, es fácil añadir varios segundos de penalización de carga en todas tus páginas. ¡Vaya! Vamos a recorrer un estudio de caso de cómo unas pocas horas de depuración de rendimiento mejoraron tanto los tiempos de carga como los de análisis para la aplicación Centered en varios cientos por ciento cada uno. Aprenderemos no solo por qué ocurren esos problemas de rendimiento, sino cómo diagnosticarlos y solucionarlos. ¡Viva el rendimiento! ⚡️

Workshops on related topic

Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Construyendo una Aplicación de Shopify con React & Node
React Summit Remote Edition 2021React Summit Remote Edition 2021
87 min
Construyendo una Aplicación de Shopify con React & Node
Top Content
WorkshopFree
Jennifer Gray
Hanna Chen
2 authors
Los comerciantes de Shopify tienen un conjunto diverso de necesidades, y los desarrolladores tienen una oportunidad única para satisfacer esas necesidades construyendo aplicaciones. Construir una aplicación puede ser un trabajo duro, pero Shopify ha creado un conjunto de herramientas y recursos para ayudarte a construir una experiencia de aplicación sin problemas lo más rápido posible. Obtén experiencia práctica construyendo una aplicación integrada de Shopify utilizando el CLI de la aplicación Shopify, Polaris y Shopify App Bridge.Te mostraremos cómo crear una aplicación que acceda a la información de una tienda de desarrollo y pueda ejecutarse en tu entorno local.
Pruebas de Aplicaciones Web utilizando Cypress
TestJS Summit - January, 2021TestJS Summit - January, 2021
173 min
Pruebas de Aplicaciones Web utilizando Cypress
WorkshopFree
Gleb Bahmutov
Gleb Bahmutov
Este masterclass te enseñará los conceptos básicos de cómo escribir pruebas de extremo a extremo utilizando Cypress Test Runner.
Cubriremos la escritura de pruebas, abarcando todas las características de la aplicación, estructurando las pruebas, interceptando solicitudes de red y configurando los datos del backend.
Cualquier persona que conozca el lenguaje de programación JavaScript y tenga NPM instalado podrá seguir el masterclass.
Construye una sala de chat con Appwrite y React
JSNation 2022JSNation 2022
41 min
Construye una sala de chat con Appwrite y React
WorkshopFree
Wess Cope
Wess Cope
Las API/Backends son difíciles y necesitamos websockets. Utilizarás VS Code como tu editor, Parcel.js, Chakra-ui, React, React Icons y Appwrite. Al final de este masterclass, tendrás los conocimientos para construir una aplicación en tiempo real utilizando Appwrite y sin necesidad de desarrollar una API. ¡Sigue los pasos y tendrás una increíble aplicación de chat para presumir!
Construyendo una suite de pruebas significativa que no sea todo E2E
TestJS Summit 2023TestJS Summit 2023
89 min
Construyendo una suite de pruebas significativa que no sea todo E2E
Workshop
David Burns
David Burns
Todos somos enseñados a seguir la Pirámide de Pruebas pero la realidad es que construimos el Árbol de Pruebas de Navidad. En esta masterclass, David te explicará cómo desglosar proyectos y poner las pruebas donde necesitan estar. Al final de la masterclass, podrás actualizar tus proyectos para que cualquiera y todos puedan empezar a contribuir y realmente vivir según "La calidad es el trabajo de todos".
Te guiará a través de:- Pruebas de Componentes- Pruebas de API- Pruebas de Regresión Visual- Pruebas A11Y
También te explicará cómo configurar todo esto en tu pipeline de CI/CD para que puedas obtener ciclos de feedback más cortos y rápidos.
Problemas difíciles de GraphQL en Shopify
GraphQL Galaxy 2021GraphQL Galaxy 2021
164 min
Problemas difíciles de GraphQL en Shopify
WorkshopFree
Rebecca Friedman
Jonathan Baker
Alex Ackerman
Théo Ben Hassen
 Greg MacWilliam
5 authors
En Shopify a gran escala, resolvemos algunos problemas bastante difíciles. En este masterclass, cinco oradores diferentes describirán algunos de los desafíos que hemos enfrentado y cómo los hemos superado.

Tabla de contenidos:
1 - El infame problema "N+1": Jonathan Baker - Vamos a hablar sobre qué es, por qué es un problema y cómo Shopify lo maneja a gran escala en varios APIs de GraphQL.
2 - Contextualizando APIs de GraphQL: Alex Ackerman - Cómo y por qué decidimos usar directivas. Compartiré qué son las directivas, qué directivas están disponibles de forma predeterminada y cómo crear directivas personalizadas.
3 - Consultas de GraphQL más rápidas para clientes móviles: Theo Ben Hassen - A medida que tu aplicación móvil crece, también lo harán tus consultas de GraphQL. En esta charla, repasaré diversas estrategias para hacer que tus consultas sean más rápidas y efectivas.
4 - Construyendo el producto del futuro hoy: Greg MacWilliam - Cómo Shopify adopta las características futuras en el código actual.
5 - Gestión efectiva de APIs grandes: Rebecca Friedman - Tenemos miles de desarrolladores en Shopify. Veamos cómo estamos asegurando la calidad y consistencia de nuestras APIs de GraphQL con tantos colaboradores.