Zen y el Arte de Pruebas de Componentes de UI

Rate this content
Bookmark

Sí, necesitamos probar nuestros componentes de UI pero... Si esto te suena, y especialmente si tu aplicación tiene funcionalidades de UI avanzadas, esta charla es para ti. En esta charla, cubriremos cuáles son los factores que necesitan ser probados en los componentes de UI. Desafiaremos la pirámide de pruebas cuando se trata de pruebas de componentes de UI, y revisaremos las diferentes herramientas que tenemos hoy en día para hacer que las pruebas de componentes de UI sean completas Zen.

FAQ

La masterclass de Mammran es un programa de formación avanzada en programación que se impartió en el Ejército Israelí. En el texto, se menciona que esta formación no incluía enseñanzas sobre testing.

La pirámide de testing originalmente destacaba tres niveles: unidad, servicio y UI. Con el tiempo, ha evolucionado para incluir pruebas de integración y las pruebas de UI han pasado a considerarse pruebas de extremo a extremo.

Storybook es una herramienta que permite demostrar y mostrar componentes de UI en aislamiento. Facilita la prueba de funcionalidades específicas de los componentes sin necesidad de interactuar con toda la interfaz o aplicación completa.

Usar un navegador real permite renderizar los componentes de manera efectiva y verificar su comportamiento y apariencia final. Esto es crucial para pruebas que incluyen interacciones, animaciones y efectos visuales que no pueden ser completamente replicados con un DOM simulado.

Playwright es una herramienta moderna de automatización de navegadores que permite controlar y gestionar las pruebas a través de un protocolo externo, accediendo a todas las funciones del navegador. Ofrece la capacidad de ejecutar pruebas en paralelo, en múltiples lenguajes y proporciona un acceso completo al sistema de archivos para una mayor flexibilidad y control.

Las pruebas de extremo a extremo implican la interacción con un servidor backend real y la comprobación de flujos de usuario completos, mientras que las pruebas de componentes se centran más en bloquear el backend y examinar variaciones y casos extremos de los componentes en aislamiento.

Tally Barak
Tally Barak
21 min
11 Dec, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla discute la evolución de la automatización de pruebas desde la pirámide original de automatización de pruebas hasta la pirámide de pruebas. Explora enfoques modernos para las pruebas de componentes de UI, incluyendo aislamientos y pruebas con un DOM falso. Se destaca la importancia de las pruebas en un navegador real y la aparición de herramientas como Selenium, WebDriver.io, Puppeteer, Cypress, y PlayWrite para la automatización del navegador. Se explican las ventajas de la automatización del navegador fuera de proceso, junto con el uso de Storybook y Playwright para pruebas de componentes. También se menciona la distinción entre las pruebas de extremo a extremo y las pruebas de componentes.

1. Introducción a la Pirámide de Automatización de Pruebas

Short description:

En 1990, las pruebas no se enseñaban en las masterclass de programación. Un libro publicado por Mycom introdujo la pirámide original de automatización de pruebas con tres niveles: unidad, servicio y UI. Con el tiempo, evolucionó hacia la pirámide de pruebas, con pruebas de unidad, pruebas de integración y pruebas de extremo a extremo.

Un breve paseo por el camino de la memoria. Este soy yo. Aquí acabo de graduarme en mi masterclass de programación que fue en el Ejército Israelí, la masterclass de Mammran. Aprendimos muchas cosas. Lo único que no aprendimos es testing. Y esto es porque el año es 1990. Y este es el mismo año en que se publicó este libro por Mycom. Y está hablando de tener éxito con Agile. Y si te sumerges en este libro, encontrarías este diagrama. Este es el pirámide original de automation de pruebas. Habla de tres niveles. Unidad, servicio y UI. Y te das cuenta de que la UI está en la parte superior. Más tarde, esto evolucionó hacia la pirámide de testing, que todos conocemos. Y el nombre cambió. Todavía hablamos de prueba de unidad. Pero también hablamos de integración. Y la prueba de UI se ha convertido en prueba de extremo a extremo. Y esto es realmente cierto, porque esto es lo que sucedió durante muchos años. Veríamos la prueba de extremo a extremo como un sinónimo

2. Enfoques Modernos para la Prueba de Componentes de UI

Short description:

Quiero hablar sobre los enfoques modernos para la prueba de componentes de UI. El primer principio es el aislamiento. Los componentes te permiten dividir la UI en piezas independientes y reutilizables. Puedes pensar en cada pieza de forma aislada, construirla de forma aislada y probarla de forma aislada.

para pruebas de UI. Mi nombre es Tali Barak. Trabajo para una empresa llamada Ubiq. Y quiero hablar sobre enfoques modernos para la prueba de componentes de UI, y llamo a esta charla Zen y el Arte de la Prueba de Componentes de UI. Y pronto, veremos qué es el Zen y cómo podemos lograrlo.

Y lo primero, el primer principio, es que quiero hablar sobre aislamientos. Esta es una página, lo que una página web, una aplicación web parecía en los años 90. Como puedes ver, es bastante simple y es solo una página. Pero luego, más adelante, y estamos hablando aquí sobre 2015, más o menos empezamos a trabajar de una manera completamente diferente al construir nuestra aplicación web. Empezamos a hablar sobre componentes. Esto es AngularJS, como dije, en diciembre de 2015. Están hablando sobre entender los componentes cuando desarrollas una aplicación Angular. Y esto es de junio de 2016. Este es el commit real que se hizo en el readme de React. Y también empezó a hablar sobre lo que significa ser basado en componentes. Habla sobre la construcción de componentes encapsulados que gestionan su propio estado y luego los componen en UIs más complejas. Y todavía vemos a los componentes como una especie de ladrillos de lego. Tienes un componente separado de la exhibición. Cada uno con su propia funcionalidad y luego vas y los construyes en UIs más grandes como barcos, casas, o incluso un servidor de rack de motor de búsqueda que fue construido con lego.

Hoy cuando hablamos del marco moderno para construir UI como Angular, React, Vue, Solid, Svelte, etc., todos están construidos sobre el principio de basado en componentes. Y esto es lo que te permiten hacer los componentes. Te permiten dividir la UI en piezas independientes y reutilizables y puedes pensar en cada pieza de forma aislada. Y cuando dices pensar, no se trata solo de pensar, también se trata de construirlo de forma aislada y probarlo en aislamiento. En este ejemplo aquí, podemos ver que esta es una aplicación CodeWe, una aplicación de demostración que está construida en múltiples lenguajes y frameworks. Puedes encontrar casi cualquier framework que te gustaría. Y puedes ver aquí que en realidad está utilizando el mismo componente de una vista previa de artículo tanto en el feed global como en MyPost. Y esto implica que si quiero probar la funcionalidad de este componente, no necesito ir a la página específica del feed global como lo haría en la prueba de extremo a extremo o iniciar sesión e ir a MyPost como lo haría en la página de MyPost. En realidad puedo aislar este componente, ponerlo por separado. Y como vemos aquí, este es el mismo componente, pero la página solo muestra este componente. Esto está utilizando Storybook. Storybook es una gran herramienta para demostrar y mostrar y exhibir componentes en aislamiento.

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

Desarrollo Efectivo de Pruebas
TestJS Summit 2021TestJS Summit 2021
31 min
Desarrollo Efectivo de Pruebas
Top Content
Los desarrolladores quieren dormir tranquilos sabiendo que no rompieron la producción. Las empresas quieren ser eficientes para satisfacer las necesidades de sus clientes más rápido y obtener una ventaja competitiva antes. TODOS queremos ser coste efectivos... o debería decir... ¡PRUEBA EFECTIVA!¿Pero cómo hacemos eso?¿Nos sirve bien la terminología de "unidad" e "integración"?¿O es hora de un cambio? ¿Cuándo deberíamos usar cada estrategia para maximizar nuestra "efectividad de prueba"?¡En esta charla te mostraré una nueva forma de pensar sobre las pruebas coste efectivas con nuevas estrategias y nuevos términos de prueba!¡Es hora de ir MÁS PROFUNDO!
El Arte de las 'Vistas Humildes': Probando Aplicaciones React Native de Manera Inteligente
TestJS Summit 2023TestJS Summit 2023
32 min
El Arte de las 'Vistas Humildes': Probando Aplicaciones React Native de Manera Inteligente
En esta charla, exploramos el mundo divisivo de las pruebas, donde los desarrolladores a menudo se encuentran divididos entre no escribir pruebas y esforzarse por una cobertura de pruebas del 100%. Aprenda a navegar estas posiciones polarizantes y adopte una estrategia más matizada que hace que las pruebas sean eficientes y efectivas. Profundizaremos en el concepto de 'Vistas Humildes', donde minimizamos los objetos no probables extrayendo la lógica de los elementos de la interfaz de usuario a partes amigables para pruebas del código base. Este enfoque simplifica las pruebas, centrándose en la lógica de negocio en lugar de las complejidades de la interfaz de usuario. Descubra cómo la arquitectura Modelo-Vista-Presentador (MVP) ayuda a lograr esto, con los presentadores sirviendo como una capa lógica para las pruebas y los hooks ayudando a separar la lógica de los componentes de la interfaz de usuario. A lo largo de la charla, discutiremos los compromisos de este enfoque, el papel de las pruebas de extremo a extremo (E2E), y cómo lograr el equilibrio perfecto entre demasiadas y pocas pruebas. ¡Únase a nosotros mientras nos adentramos en el arte de crear 'Vistas Humildes', asegurando que nuestras aplicaciones React Native sean escalables, mantenibles y efectivamente probadas!
Quizá No Necesitemos Pruebas de Componentes
Vue.js Live 2024Vue.js Live 2024
26 min
Quizá No Necesitemos Pruebas de Componentes
Las pruebas son obligatorias y las pruebas unitarias son la base para construir un buen sistema de pruebas para nuestro proyecto. Pero para proyectos de frontend que involucran componentes, ¿cuántas pruebas unitarias se consideran eficientes y no excesivas? ¿Deberíamos usar bibliotecas adicionales como Testing Library o Vue Test Utils con Vitest para probar un componente, cuando podemos hacer lo mismo solo con Playwright? ¿Realmente es necesario realizar una prueba de componente utilizando un framework de E2E como Playwright? Descubrámoslo en mi charla.
Pruebas de Componentes con Vitest
TestJS Summit 2023TestJS Summit 2023
29 min
Pruebas de Componentes con Vitest
Las pruebas son importantes. Las pruebas unitarias adecuadas pueden eliminar la posibilidad de que aparezcan errores. Pero, ¿qué marco de pruebas será adecuado? Exploremos cómo podemos desarrollar una estrategia confiable y eficiente para el desarrollo y prueba de componentes con Vitest
Desarrollo de juegos con ReactJS, CSS y React Three Fiber
JS GameDev Summit 2023JS GameDev Summit 2023
22 min
Desarrollo de juegos con ReactJS, CSS y React Three Fiber
En esta charla, compartiré mi experiencia en el desarrollo de juegos utilizando ReactJS/CSS. Exploraremos cómo aprovechar al máximo la gestión de componentes proporcionada por esta biblioteca, junto con las capacidades de CSS para crear una interfaz de usuario atractiva. Además, descubriremos cómo aprovechar la biblioteca React Three Fiber para crear juegos con una experiencia en 3D.
¡Es una trampa! - Trampas comunes en las pruebas y cómo solucionarlas
TestJS Summit 2021TestJS Summit 2021
20 min
¡Es una trampa! - Trampas comunes en las pruebas y cómo solucionarlas
Es una trampa` - una llamada o sensación con la que todos podríamos estar familiarizados, no solo cuando se trata de Star Wars. Señala un momento repentino de darse cuenta de un peligro inminente. Esta situación es una excelente alegoría para una desagradable realización en las pruebas. ¿Imagina tener las mejores intenciones cuando se trata de las pruebas pero aún así terminar con pruebas que no le brindan ningún valor en absoluto? ¿Pruebas que se sienten como un dolor para lidiar con ellas?
Cuando se escriben pruebas de frontend, hay muchas trampas en el camino. En resumen, pueden llevar a una mala mantenibilidad, un tiempo de ejecución lento y, en el peor de los casos, pruebas en las que no se puede confiar. Pero no tiene que ser así. En esta sesión, hablaré sobre los errores comunes de los desarrolladores (incluyendo los míos), al menos desde mi experiencia. Y, por supuesto, sobre cómo evitarlos. Después de todo, las pruebas no tienen por qué ser dolorosas.

Workshops on related topic

¿Deberíamos tener lógica de negocio en la interfaz de usuario?
JSNation 2022JSNation 2022
148 min
¿Deberíamos tener lógica de negocio en la interfaz de usuario?
WorkshopFree
Samuel Pinto
Samuel Pinto
¿Cuántas veces has dicho o escuchado 'esta es lógica de negocio, no debería estar aquí'?En este masterclass, crearemos una aplicación frontend moderna utilizando patrones antiguos y aprenderás cómo construir aplicaciones que tengan una interfaz de usuario y servicios desacoplados.Comenzaremos con una aplicación React que tiene toda su lógica en la interfaz de usuario. Luego, paso a paso, extraeremos las reglas y operaciones para alcanzar ese punto óptimo de independencia.
Introducción a React Native Testing Library
React Advanced Conference 2022React Advanced Conference 2022
131 min
Introducción a React Native Testing Library
Workshop
Josh Justice
Josh Justice
¿Estás satisfecho con tus suites de pruebas? Si dijiste que no, no estás solo, la mayoría de los desarrolladores no lo están. Y hacer pruebas en React Native es más difícil que en la mayoría de las plataformas. ¿Cómo puedes escribir pruebas en JavaScript cuando el código JS y nativo están tan entrelazados? ¿Y qué diablos se supone que debes hacer con esa persistente advertencia de act()? Ante estos desafíos, algunos equipos nunca logran avanzar en las pruebas de su aplicación de React Native, y otros terminan con pruebas que no parecen ayudar y solo requieren tiempo adicional para mantener.
Pero no tiene que ser así. React Native Testing Library (RNTL) es una excelente biblioteca para pruebas de componentes, y con el modelo mental adecuado puedes usarla para implementar pruebas de bajo costo y alto valor. En este taller de tres horas aprenderás las herramientas, técnicas y principios que necesitas para implementar pruebas que te ayudarán a lanzar tu aplicación de React Native con confianza. Saldrás con una visión clara del objetivo de tus pruebas de componentes y con técnicas que te ayudarán a superar cualquier obstáculo que se interponga en ese objetivo.aprenderás:- Los diferentes tipos de pruebas en React Native, 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 de texto, imagen y código nativo para verificar e interactuar con ellos- El valor de las simulaciones y por qué no se deben evitar- Los desafíos con la asincronía en las pruebas de RNTL y cómo manejarlos- Opciones para manejar funciones y componentes nativos en tus pruebas de JavaScript
Requisitos previos:- Familiaridad con la construcción de aplicaciones con React Native- Experiencia básica en la escritura de pruebas automatizadas con Jest u otro framework de pruebas unitarias- No necesitas experiencia previa con React Native Testing Library- Configuración de la máquina: Node 16.x o 18.x, Yarn, ser capaz de crear y ejecutar con éxito una nueva aplicación Expo siguiendo las instrucciones en https://docs.expo.dev/get-started/create-a-new-app/