Pruebas de UI E2E impulsadas por IA: Creación más rápida, Mantenimiento más fácil

Rate this content
Bookmark
GithubProject website

Esta sesión te guiará a través del campo avanzado de las pruebas de UI E2E impulsadas por IA, centrándose en cómo acelera la creación de pruebas y simplifica el mantenimiento de las pruebas. Comenzaremos examinando los desafíos en la generación de pruebas E2E con IA, señalando cómo esto difiere de la tarea más simple de crear pruebas unitarias.
La discusión luego cambiará a una solución que aborda estos desafíos de manera efectiva. Prepárate para ver una demostración en vivo donde crearemos una prueba E2E usando herramientas populares como Cypress o Playwright. Para concluir, analizaremos cómo la IA se acerca a la automatización completa del mantenimiento de nuestros conjuntos de pruebas, asegurando que se mantengan actualizados con una intervención manual mínima.

This talk has been presented at JSNation US 2024, check out the latest edition of this JavaScript Conference.

Daniel Ostrovsky
Daniel Ostrovsky
10 min
21 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola a todos. Hoy vamos a explorar las pruebas de extremo a extremo impulsadas por IA. A diferencia de las pruebas unitarias, las pruebas de UI tienen una gran capa de obstrucciones entre el código fuente y la UI renderizada. El código fuente incluye HTML, CSS y TypeScript, que se transpilan a JavaScript y se agrupan con herramientas como Webpack. La IA puede generar pruebas de manera efectiva para sitios web o blogs estándar, pero puede tener dificultades con aplicaciones de nicho detrás de una autorización estricta o herramientas locales. Las pruebas de extremo a extremo impulsadas por IA para escenarios complejos requieren nuestra orientación. Usamos IDs de prueba de datos significativos y seguimos el patrón del modelo de objetos de página. Además, confiamos en herramientas útiles como la extensión de navegador del asistente de pruebas de extremo a extremo y la extensión continue IDE. Ahora, procedamos a la demostración, donde crearemos pruebas para la aplicación Pokemon, incluyendo la capacidad de filtrar por nombre o tipo. Navegaremos a la página de detalles de Pokemon y usaremos nuestra extensión para gestionar configuraciones y mensajes. Además, crearemos juntos el objeto de la página de detalles y generaremos el archivo de prueba. La página de detalles de Pokemon tiene 105 elementos. Podemos ver los elementos para fines de depuración, incluyendo el nombre del objeto de página, la página de detalles de Pokemon y el mensaje del sistema. Copiaremos el objeto de página y lo guardaremos en un archivo. Necesitamos hacerlo exportable. Luego, usaremos la extensión para crear una prueba de extremo a extremo y pasar el contexto. Usaré todos los archivos abiertos, incluidos los objetos de página y el caso de prueba en sí. Los enviaré a EI junto con el mensaje predefinido. Hay un mensaje del sistema e información adicional que necesitamos tener en cuenta. La prueba se ejecuta con éxito, y eso concluye esta parte.

1. Introducción a las pruebas de extremo a extremo impulsadas por IA

Short description:

Hola a todos. Hoy vamos a explorar las pruebas de extremo a extremo impulsadas por IA. A diferencia de las pruebas unitarias, las pruebas de UI tienen una gran capa de obstrucciones entre el código fuente y la UI renderizada. El código fuente incluye HTML, CSS y TypeScript, que se transpilan a JavaScript y se agrupan con herramientas como Webpack. La UI renderizada se obtiene mediante motores de renderizado como React y Angular. La IA puede generar pruebas de manera efectiva para sitios web o blogs estándar, pero puede tener dificultades con aplicaciones de nicho detrás de una autorización estricta o herramientas locales.

Hola a todos. Mi nombre es Daniel Ostrovsky, y hoy vamos a explorar las pruebas de extremo a extremo impulsadas por IA. Pero antes de sumergirnos, adelante y escanea este código de barras para seguirme en Twitter, Medium y YouTube. Puedes encontrarme como nanduh81. Gracias.

Y continuemos. Así que, primero que nada, un poco sobre mí. Soy un experto desarrollador de ciclo completo. Tengo más de 25 años de experiencia. Soy un orador público, escritor público en múltiples idiomas. Soy un colaborador de código abierto, mentor técnico, y nuevamente, escanea el código de barras y sígueme.

Así que vamos a sumergirnos directamente en los desafíos que enfrentamos cuando intentamos probar la UI con IA. Bien, ahora, a diferencia de las pruebas unitarias, donde podemos enviar el código fuente directamente a un LLM, lo que facilita que el modelo prediga cómo debería ser la prueba, las pruebas de UI son diferentes. Así que para las pruebas unitarias, herramientas como, ya sabes, Copilot y otras pueden generar una prueba en segundos porque tienen el contexto completo, el código fuente y la lógica que necesita ser probada. Y en la mayoría de los casos, funciona perfectamente porque el código y el contexto están claros. Pero cuando se trata de pruebas de UI, hay una gran capa de obstrucciones entre el código fuente y lo que realmente estamos probando, la UI renderizada.

Así que aquí está el camino. Comenzamos nuestro código que en realidad incluye HTML, CSS y TypeScript, ¿verdad? , que se transpilan a JavaScript. Luego se agrupa con herramientas como Webpack, Write y otras. Simplemente hace toda la transpolación, ya sabes, el agrupamiento y otras cosas. Bien. Unificaciones y todo. Y luego pasa a motores de renderizado como React y Angular que toman el control del navegador. Bien, finalmente, todo será renderizado por el navegador. Ahora, solo en ese punto, obtenemos los elementos visuales reales que necesitamos probar. Bien. Entonces, ¿dónde está el código fuente y qué es lo que realmente necesitamos probar? Es una gran diferencia. Así que si estamos hablando de un sitio web de comercio electrónico estándar o un blog o algo similar, la IA tiene mucho conocimiento existente del que obtener porque está entrenada en datos similares disponibles públicamente. Así que cuando enviamos datos a un LLM, el 80% del tiempo, puede generar pruebas de manera efectiva porque, ya sabes, la IA ya está familiarizada con los patrones existentes. Bien, pero ¿qué pasa si estás trabajando en algo de nicho, como una aplicación interna detrás de una autorización estricta o una herramienta que solo funciona en las instalaciones?

2. Best Practices and Tooling for AI-powered Testing

Short description:

Las pruebas de extremo a extremo impulsadas por IA para escenarios complejos requieren nuestra orientación. Usamos IDs de prueba de datos significativos y seguimos el patrón del modelo de objetos de página. Además, confiamos en herramientas útiles como la extensión de navegador end-to-end test helper y la extensión continue IDE. Ahora, procedamos a la demostración, donde crearemos pruebas para la aplicación Pokemon, incluyendo la capacidad de filtrar por nombre o tipo.

No es como el comercio electrónico donde agregar un artículo al carrito y finalizar la compra es predecible. ¿Qué pasa si estás probando, ya sabes, algún tipo de herramienta de configuración para gestionar cientos de estaciones de servicio en medio del océano? Así que la IA no sabrá cómo manejarlo sin nuestra orientación. Así que ahí es donde necesitamos ayudar a la IA a ayudarnos.

Y para eso, seguimos dos prácticas clave. Primero, usar IDs de prueba de datos significativos. En nuestro caso, usamos data CY ya que estamos trabajando con Cypress. Pero el principio sigue siendo el mismo. Elementos como botones y campos de entrada deben tener nombres claros y descriptivos, como next button, username input, y así sucesivamente. Esto ayuda a la IA a entender el propósito de cada elemento accionable. Segundo, confiamos en el patrón del modelo de objetos de página. Aunque la IA generará esta página para nosotros, por lo que no necesitamos crearla y mostrará cómo lo estamos haciendo, es crucial mantenerlos y gestionarlos. Este enfoque hace que nuestras pruebas sean más limpias y modulares.

Ahora, por último, necesitaremos herramientas. Una de ellas es una extensión de navegador llamada end-to-end test helper. Puedes escanear este código de barras nuevamente, siempre el código de barras y revisarlo. Contribuye, por favor, o simplemente explora la documentación. Y por favor, échale un vistazo y considera una contribución. Realmente me encantaría tener más manos en la sala. Para la tercera herramienta, usamos una extensión de IDE llamada continue. Es una extensión fantástica, por cierto, similar a herramientas como Copilot y otras que te ayudan a gestionar y trabajar con tu código directamente en UID. Ofrece una potente autocompletación y muchas otras características geniales que, por cierto, Copilot no tiene. Es de código abierto, así que definitivamente échale un vistazo. Es una gran herramienta para tener en tu caja de herramientas. Genial, de acuerdo.

Así que pasemos a la demostración, a la demostración real. Dame un segundo. Aquí vamos. Así que, esta es la aplicación para la que crearemos las pruebas. Esta es la aplicación Pokemon. Tenemos la lista de Pokemon con la capacidad de filtrar por nombre, o filtrar por tipo.

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

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.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
The Talk discusses the shift to full-stack frameworks and the challenges of full-stack documentation. It highlights the power of interactive tutorials and the importance of user testing in software development. The Talk also introduces learn.svelte.dev, a platform for learning full-stack tools, and discusses the roadmap for SvelteKit and its documentation.
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.
SolidJS: ¿Por qué tanto Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: ¿Por qué tanto Suspense?
Top Content
Suspense is a mechanism for orchestrating asynchronous state changes in JavaScript frameworks. It ensures async consistency in UIs and helps avoid trust erosion and inconsistencies. Suspense boundaries are used to hoist data fetching and create consistency zones based on the user interface. They can handle loading states of multiple resources and control state loading in applications. Suspense can be used for transitions, providing a smoother user experience and allowing prioritization of important content.

Workshops on related topic

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
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Cómo empezar con Cypress
TestJS Summit 2022TestJS Summit 2022
146 min
Cómo empezar con Cypress
Featured WorkshopFree
Filip Hric
Filip Hric
La web ha evolucionado. Finalmente, también lo ha hecho el testing. Cypress es una herramienta de testing moderna que responde a las necesidades de testing de las aplicaciones web modernas. Ha ganado mucha popularidad en los últimos años, obteniendo reconocimiento a nivel mundial. Si has estado esperando aprender Cypress, ¡no esperes más! Filip Hric te guiará a través de los primeros pasos sobre cómo empezar a usar Cypress y configurar tu propio proyecto. La buena noticia es que aprender Cypress es increíblemente fácil. Escribirás tu primer test en poco tiempo y luego descubrirás cómo escribir un test de extremo a extremo completo para una aplicación web moderna. Aprenderás conceptos fundamentales como la capacidad de reintentar. Descubre cómo trabajar e interactuar con tu aplicación y aprende cómo combinar pruebas de API y de UI. A lo largo de todo este masterclass, escribiremos código y realizaremos ejercicios prácticos. Saldrás con una experiencia práctica que podrás aplicar a tu propio proyecto.
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Node Congress 2024Node Congress 2024
152 min
Construye Aplicaciones Modernas Utilizando GraphQL y Javascript
Featured Workshop
Emanuel Scirlet
Miguel Henriques
2 authors
Ven y aprende cómo puedes potenciar tus aplicaciones modernas y seguras utilizando GraphQL y Javascript. En este masterclass construiremos una API de GraphQL y demostraremos los beneficios del lenguaje de consulta para APIs y los casos de uso para los que es adecuado. Se requiere conocimiento básico de Javascript.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)
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