Frameworks de Pruebas, Frameworks Móviles y los Navegadores Aman a los Desarrolladores y Testers

Rate this content
Bookmark
Centrarse en estar donde están tus usuarios no es tan difícil como piensas. Muchos grupos ahí fuera te dirán que su herramienta es la mejor y que aunque ninguno de tus usuarios use ese navegador o configuración móvil está bien. En esta charla, David hablará sobre todas las diferencias que surgen, por qué los proveedores de navegadores incluso están diciendo a la gente que no se centren en los motores de navegadores o doms virtuales, y cómo la configuración de los entornos de desarrollo es simple de establecer estos días.

Al ignorar el amor que se está impulsando a los desarrolladores y testers a través del trabajo que se está realizando, puede haber pruebas que están pasando pero tus usuarios están fallando en usar tu aplicación! No te preocupes, David tendrá los ejemplos del mundo real para mostrarte cómo están las cosas rotas :)

This talk has been presented at TestJS Summit 2023, check out the latest edition of this JavaScript Conference.

FAQ

El testing es difícil debido a la complejidad de los sistemas contra los que trabajamos, como los lenguajes asíncronos como JavaScript y la secuencia de pasos que se deben seguir en los tests.

La pirámide de testing es un concepto que ayuda a organizar los diferentes tipos de pruebas, desde unit testing hasta pruebas de integración y pruebas de extremo a extremo, facilitando así el proceso de testing.

Uno de los retos principales ha sido la inconsistencia entre los diferentes navegadores y sus versiones, lo que complica la realización de pruebas consistentes y fiables.

Inicialmente, el testing en JavaScript se basaba mucho en la interacción manual y la verificación de que las cosas funcionaran como se anticipaba. Con el tiempo, han surgido herramientas que permiten una mayor automatización y precisión.

Se descubrió que el navegador headless no funcionaba como se pensaba, lo que llevó a errores en las pruebas que se creían correctas. Esto fue un punto de aprendizaje importante para mejorar las herramientas de testing.

Las nuevas herramientas, como Puppeteer y Nightwatch.js, facilitan la configuración de entornos de prueba al manejar automáticamente la descarga y configuración de navegadores y dependencias, agilizando el proceso de desarrollo.

David Burns
David Burns
27 min
07 Dec, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy cubrió varios temas, incluyendo frameworks de pruebas, navegadores, y los desafíos enfrentados en la prueba de sistemas complejos. Se destacó la importancia de mejorar la configuración de las pruebas y la productividad, junto con el principio de menor sorpresa y la necesidad de actualizaciones de frameworks. La charla también discutió los diferentes motores de navegadores y sus características únicas, así como los beneficios de compartir ideas y enfoques dentro de la comunidad de desarrollo de software. La sesión concluyó con ideas sobre pruebas de navegadores y el uso de herramientas como Playwright y WebKit.

1. Introducción a los Marcos de Prueba y Navegadores

Short description:

Hoy, voy a hablar sobre los marcos de prueba, los marcos móviles, los navegadores y cómo a las personas detrás de ellos les encantan los desarrolladores y los probadores que utilizan sus productos.

♪♪♪ Hola a todos. Mi nombre es David. Y hoy voy a hablar sobre testing frameworks, marcos móviles, navegadores, y cómo cada una de las personas que trabajan en ellos aman a los desarrolladores y probadores que utilizan sus productos. La razón por la que sé esto es, como dijo Nathaniel, he estado en la industria durante un tiempo. Pasé casi una década trabajando en Firefox. He estado haciendo automatización de navegadores durante casi dos décadas. Y así que cada vez que veo estas cosas y vengo a estas conferencias y veo lo que la gente está haciendo y mostrando, todo lo que veo es el amor que tienen y quieren mejorar todo. Y quiero que nos importe. Quiero que todos en esta sala digan, en realidad, es agradable ver que les importa.

2. Desafíos en las Pruebas y Simplificación de Enfoques

Short description:

Las pruebas son difíciles. Los sistemas con los que trabajamos son increíblemente complejos. Tenemos navegadores, aplicaciones web y múltiples capas a través de todo el sistema. Numerosas personas han intentado simplificar las pruebas con términos como la pirámide de pruebas, pruebas unitarias y pruebas de integración.

Y entonces vamos a empezar con algo que creo que es como un árbol. Testing es difícil. Cuando miramos cómo queremos hacer nuestro trabajo, empezamos con testing y decimos, en realidad, ¿sabes qué? Testing es muy, muy difícil. Las personas construyen carreras en torno a ello, ¿verdad? Y aún así dicen, no tengo idea de lo que estoy haciendo. Y está bien.

Y la razón principal por la que testing es tan difícil es que los sistemas contra los que trabajamos son increíblemente complejos. Pensamos en JavaScript. Es un lenguaje asíncrono. Hemos estado haciendo esto. Pero cuando pensamos en testing, pensamos secuencialmente. Queremos ir de este paso a este paso a este paso. Así que hace muchos años cuando empecé mi carrera, había un infierno de callbacks. Y lo intentabas y esperabas que las cosas se ejecutaran en el momento adecuado. El lenguaje ha mejorado y es mucho, mucho mejor. Pero luego tenemos otras cosas que se interponen. Tenemos navegadores. Tenemos web apps. Tenemos todo, desde múltiples capas a través de todo el sistema que tenemos que probar. Y pensamos en cómo lo hacemos y decimos, en realidad, esto es realmente difícil. Pero, hemos tenido como numerosas personas pensando en cómo abordamos estos problemas. Y han intentado simplificarlos a medida que avanzan. Y han surgido con términos bastante geniales como la pirámide de testing, unit testing, pruebas de integración y así sucesivamente. Y voy a desglosarlo. Porque creo que es importante que a veces las palabras importan. A veces no creo que importen tanto.

Y entonces, con el unit testing, esto es donde creo que la gente se obsesiona un poco, pero han intentado desglosar el problema en algo pequeño. Y es una prueba pequeña. Porque a veces la gente no puede hacerlo a nivel unitario. Y tenemos estas pruebas de integración donde probamos nuestros contratos. Y aquí es donde empezamos a ver algo del verdadero amor que la gente tiene.

QnA

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.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
TypeScript Congress 2023TypeScript Congress 2023
31 min
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Dentro de Fiber: la descripción general en profundidad que querías para TLDR
React Summit 2022React Summit 2022
27 min
Dentro de Fiber: la descripción general en profundidad que querías para TLDR
This Talk explores the internals of React Fiber and its implications. It covers topics such as fibres and units of work, inspecting elements and parent matching, pattern matching and coroutines, and the influence of coroutines on concurrent React. The Talk also discusses effect handlers in React, handling side effects in components, and the history of effect handlers in React. It concludes by emphasizing the importance of understanding React internals and provides learning resources for further exploration.
Profundizando en Concurrent React
React Advanced 2022React Advanced 2022
29 min
Profundizando en Concurrent React
The Talk discussed Concurrent React and its impact on app performance, particularly in relation to long tasks on the main thread. It explored parallelism with workers and the challenges of WebAssembly for UI tasks. The concepts of concurrency, scheduling, and rendering were covered, along with techniques for optimizing performance and tackling wasted renders. The Talk also highlighted the benefits of hydration improvements and the new profiler in Concurrent React, and mentioned future enhancements such as React fetch and native scheduling primitives. The importance of understanding React internals and correlating performance metrics with business metrics was emphasized.
Hablemos de Re-renderizados
React Summit 2022React Summit 2022
23 min
Hablemos de Re-renderizados
Top Content
This Talk discusses React performance and how re-renders can affect it. It highlights common mistakes and misconceptions, such as the overuse of useMemo and useCallback hooks. The importance of React.memo in preventing unnecessary child component re-renders is emphasized. Creating components in render functions is identified as a major performance killer, and the benefits of moving state down and wrapping state around children are explained. The Talk also covers optimizing component rendering through memoization and provides a recap of the key points.

Workshops on related topic

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.
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
Tipos avanzados de TypeScript para diversión y confiabilidad
TypeScript Congress 2022TypeScript Congress 2022
116 min
Tipos avanzados de TypeScript para diversión y confiabilidad
Workshop
Maurice de Beijer
Maurice de Beijer
Si estás buscando sacar el máximo provecho de TypeScript, este masterclass es para ti! En este masterclass interactivo, exploraremos el uso de tipos avanzados para mejorar la seguridad y previsibilidad de tu código TypeScript. Aprenderás cuándo usar tipos como unknown o never. Exploraremos el uso de predicados de tipo, guardias y verificación exhaustiva para hacer tu código TypeScript más confiable tanto en tiempo de compilación como en tiempo de ejecución. Aprenderás sobre los tipos mapeados incorporados, así como cómo crear tus propias utilidades de mapeo de tipos. Y comenzaremos a programar en el sistema de tipos de TypeScript utilizando tipos condicionales e inferencia de tipos.
¿Estás familiarizado con los conceptos básicos de TypeScript y quieres profundizar? Entonces únete a mí con tu computadora portátil en este masterclass avanzado e interactivo para aprender todos estos temas y más.
Puedes encontrar las diapositivas, con enlaces, aquí: http://theproblemsolver.nl/docs/ts-advanced-workshop.pdf
Y el repositorio que utilizaremos está aquí: https://github.com/mauricedb/ts-advanced