BDD & TDD en React

Rate this content
Bookmark

Mejora el proceso de desarrollo de aplicaciones React aplicando las metodologías BDD & TDD. Estas metodologías de prueba te hacen sentir seguro al refactorizar una base de código y mejorar el código existente mientras evitas efectos secundarios y envías más rápido.

This talk has been presented at React Summit Remote Edition 2021, check out the latest edition of this React Conference.

FAQ

Laura Beatriz es una ingeniera de software que trabaja en YOD y está basada en Florianópolis, Brasil.

Laura trabaja principalmente con TypeScript, React, Node.js y JavaScript, y está aprendiendo Python y Elixir.

Laura es apasionada por Harry Potter y le encanta tocar el violín.

Laura habla sobre Test Driven Development (TDD) y Behavior Driven Development (BDD) aplicados en React.

El enfoque principal de la charla es explicar las prácticas de testing TDD y BDD en React y cómo han evolucionado a lo largo de los años.

Se puede contactar a Laura Beatriz a través de Twitter y LinkedIn para charlar sobre tecnología, Harry Potter, tocar el violín o cualquier otro tema de interés.

Laura recomienda equilibrar las pruebas para cubrir tanto los escenarios ideales como los no ideales de los usuarios, evitando detalles de implementación y emulando las acciones del usuario lo más posible.

Se puede seguir el trabajo y los proyectos de Laura en GitHub para ver en qué está trabajando actualmente.

Laura Beatris
Laura Beatris
23 min
14 May, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy cubre TDD y BDD en las pruebas de React, incluyendo la importancia de la práctica de pruebas en React. La charla discute la evolución de las pruebas, el flujo diario de desarrollo de una característica con TDD y BDD, y las mejores prácticas para las pruebas. También enfatiza la importancia de usar las herramientas correctas y escribir pruebas que se asemejen a las acciones del usuario. Aplicar pruebas en la práctica conduce a mejores decisiones de arquitectura.
Available in English: BDD & TDD in React

1. Introducción a TDD y BDD en pruebas de React

Short description:

Hoy hablaré sobre TDD y BDD en las pruebas de React. También compartiré un resumen de la charla y explicaré la importancia de la práctica de pruebas en React. Antes de sumergirnos en el tema, volvamos atrás en el tiempo para ver la evolución de las pruebas. Cubriré el flujo diario de desarrollo de una característica con CDD y BDD, así como algunas advertencias y mejores prácticas para las pruebas. Discutiremos la creación de esqueletos de componentes, la definición de estados de UI y la evitación de detalles de implementación. Finalmente, escribiremos una prueba para el estado de éxito e implementaremos el código.

Hola a todos. Mi nombre es Laura Beatriz. Trabajo como ingeniera de software en YOD. Y hoy me gustaría hablar sobre un tema bastante especial para mí. Y eso realmente cambia la forma en que escribo mis pruebas en la aplicación React, que es TDD y BDD, específicamente React.

Entonces, antes de comenzar, me gustaría presentarme un poco. Estoy basada en Brasil en la hermosa ciudad llamada Florianópolis. La tecnología con la que actualmente estoy aprendiendo y con la que actualmente estoy trabajando es principalmente TypeScript, React, Node.js, JavaScript. Estoy aprendiendo muchas cosas sobre Python para, como, sumergirme en algunas cosas de DevOps, aunque también me apasiona mucho Elixir, así que hay muchas herramientas para aprender.

En cuanto a cosas personales, me apasiona mucho Harry Potter. Y me encanta tocar el violín. Si quieres charlar sobre cualquiera de estas cosas, no dudes en contactarme en Twitter o enviarme un mensaje en LinkedIn. Estaría muy feliz de responder a todos ustedes. Y si quieres seguir mis proyectos, ver en qué estoy trabajando actualmente, no dudes en seguirme o simplemente ver lo que estoy haciendo en GitHub.

Entonces, antes de comenzar a sumergirnos en el tema, es realmente importante ver el resumen de la charla de hoy para que puedas recoger algunas expectativas y también para que puedas tomar una taza de café antes de que realmente comencemos a hablar de ello aquí. Entonces, el primer tema, es solo para que volvamos atrás en el tiempo para ver dónde estamos En la línea de tiempo de las colas de testing a lo largo de todos los años. Entonces, a lo largo de los años, comenzamos a mejorar cada vez más en las colas de testing y realmente mejoró mucho la forma en que escribimos pruebas en la aplicación React hoy en día. Resumen de la práctica de testing, explicaré qué es CDD y BDD en una visión general, no en esa visión general, pero para las personas que están viendo la charla ahora y no están familiarizadas con ella, por qué usar la práctica de testing en React, cuándo usar la práctica de testing en React y el flujo diario de desarrollo de una característica con CDD y BDD. Algunas advertencias antes de comenzar. Testing está fundamentalmente relacionado con el mantenimiento del software, así que no quiero aquí ser explícito e intentar... Entonces, cuando comenzamos a escribir pruebas, primero implementamos un esqueleto de componente, y luego vamos a escribir casos de prueba para ser cumplidos más tarde. Y luego definir diferentes estados de UI de acuerdo a los caminos del usuario. Así que siempre intenta crear un equilibrio al pensar en los caminos felices e infelices del usuario. Y esta es la captura de pantalla que muestra cómo aplicaría los casos de prueba. Por ejemplo, creando activos, registros de scribe de acuerdo a diferentes estados de UI, éxito carga fallida. Al comenzar a implementar pruebas, entonces comenzamos a eliminar y deducir llamadas. Y siempre recordando evitar detalles de implementación y asemejar las acciones del usuario tanto como sea posible. Entonces, en la primera prueba del estado de éxito, vamos a renderizar el esqueleto por ahora. Intenta encontrar un elemento con un agujero de botón y con una prueba de generación de mem y espera como espera que la solicitud sincrónica suceda y todas las cosas y luego hacer la afirmación. Ahora implementando el code.

2. Refactorización, Conclusiones Finales y Conclusión

Short description:

Vamos a refactorizar el código para mejorar la calidad y la mantenibilidad. Escribiremos los componentes, añadiremos estado y un manejador para activar las solicitudes. En la parte final, extraeremos la lógica a un hook. Las prácticas de pruebas no se aplican a todos los equipos, por lo que necesitamos estar al tanto de TDD y BDD. El uso de las herramientas correctas y la escritura de pruebas que se asemejan a las acciones del usuario nos permiten enviar software con confianza. Aplicar pruebas en la práctica es la clave para tomar mejores decisiones de arquitectura.

Intentemos escribir la cantidad de code para lograr, la cantidad mínima de code. Vamos a refactorizar el code para mejorar la calidad y la mantenibilidad posterior y tratar de ajustar algunos problemas de implementación para ver si las pruebas ya los están detectando con el fin de evitar la regresión de las pruebas.

Luego vamos a escribir los componentes. Así que ese es el primer borrador. He añadido algún estado, un manejador, que va a activar la solicitud para mejorar eso en el tercer paso de TDD, voy a reescribir la lógica y extraer la lógica a un hook. Así que esa es la parte final del desarrollo de una característica.

Y ahora voy a presentar las conclusiones finales de esta charla de hoy. Solo quiero asegurarme de transmitir el mensaje de que las prácticas de testing no se aplican a todos los equipos y proyectos. Tenemos que estar al tanto de lo que es TDD y lo que es BDD y ver si tiene sentido para nosotros como ingenieros. El uso de las herramientas correctas para speed up la implementación de pruebas es realmente importante y podemos ver cuánto estamos mejorando en esto a lo largo de los años. Escribir pruebas que se asemejan a las acciones del usuario nos permite enviar software con mucha más confianza. Y tener la disciplina para aplicar pruebas en la práctica es la clave para lograr mejores resultados en cuanto a las decisiones de architecture.

Así que eso es todo por la charla de hoy. Espero que a todos les haya gustado la charla. Si tienen algún comentario, no duden en contactarme en las redes sociales y enviarme un mensaje allí. Estaría muy contenta de responder a todos ustedes si es posible. Gracias por ver hasta aquí y que tengan un buen día.

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

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Compilador React Forget - Entendiendo React Idiomático
React Advanced 2023React Advanced 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Solicitudes de Red con Cypress
TestJS Summit 2021TestJS Summit 2021
33 min
Solicitudes de Red con Cypress
Top Content
Cecilia Martinez, a technical account manager at Cypress, discusses network requests in Cypress and demonstrates commands like cydot request and SCI.INTERCEPT. She also explains dynamic matching and aliasing, network stubbing, and the pros and cons of using real server responses versus stubbing. The talk covers logging request responses, testing front-end and backend API, handling list length and DOM traversal, lazy loading, and provides resources for beginners to learn Cypress.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Aventuras de Renderizado Concurrente en React 18
React Advanced 2021React Advanced 2021
132 min
Aventuras de Renderizado Concurrente en React 18
Top Content
Featured WorkshopFree
Maurice de Beijer
Maurice de Beijer
Con el lanzamiento de React 18 finalmente obtenemos el tan esperado renderizado concurrente. Pero, ¿cómo va a afectar eso a tu aplicación? ¿Cuáles son los beneficios del renderizado concurrente en React? ¿Qué necesitas hacer para cambiar al renderizado concurrente cuando actualices a React 18? ¿Y qué pasa si no quieres o no puedes usar el renderizado concurrente todavía?

¡Hay algunos cambios de comportamiento de los que debes estar al tanto! En esta masterclass cubriremos todos esos temas y más.

Acompáñame con tu portátil en esta masterclass interactiva. Verás lo fácil que es cambiar al renderizado concurrente en tu aplicación React. Aprenderás todo sobre el renderizado concurrente, SuspenseList, la API startTransition y más.
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Masterclass Web3 - Construyendo Tu Primer Dapp
React Advanced 2021React Advanced 2021
145 min
Masterclass Web3 - Construyendo Tu Primer Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()?
En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor.
Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos
Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn