Luchando contra la inestabilidad de las pruebas con máquinas del tiempo

Rate this content
Bookmark

¿Qué harías de manera diferente si pudieras viajar atrás en el tiempo? Los marcos de prueba modernos han transformado esta pregunta caprichosa en una práctica, al crear sus propias “máquinas del tiempo”. La línea de tiempo de Cypress, el visor de trazas de Playwright y las grabaciones de Replay.io han ofrecido una mirada retrospectiva a la vida de una prueba, asegurando que los desarrolladores y probadores ya no estén limitados a mensajes de error básicos en fallas de pruebas.

Sin embargo, estas diferentes máquinas del tiempo aportarán diferentes perspectivas. Entonces, ¿cómo decides? La decisión sobre cuál usar puede marcar una diferencia significativa en el tiempo dedicado a depurar una prueba inestable. En esta presentación me centraré en comparar diferentes soluciones de máquinas del tiempo y mostraré varios ejemplos de pruebas inestables para demostrar cómo navegar a través del proceso de depuración y, lo creas o no, hacerlo divertido. Puntos clave:

  • - aprender sobre cómo funcionan las diferentes soluciones de máquinas del tiempo
  • - descubrir cómo usar eficazmente las máquinas del tiempo para depurar una prueba inestable
  • - averiguar sobre las fuentes de inestabilidad dentro de la prueba y dentro de la aplicación en prueba

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

FAQ

Se mencionan varias estrategias como usar la memoria, hablar con personas, intentar recrear el pasado y utilizar máquinas del tiempo en forma de herramientas de software que permiten revisar eventos pasados y aplicar ese conocimiento para mejorar las pruebas.

Las máquinas del tiempo en pruebas de software permiten revisar acciones pasadas y estados de la aplicación que de otro modo serían inaccesibles, como ver el estado de una solicitud en el momento de su envío y su respuesta, lo que ayuda a identificar y resolver fallos en las pruebas.

El principal problema es que, a pesar de incluir descripciones detalladas, pasos para reproducir, y otros datos, la información proporcionada podría no ser suficiente para resolver el error completamente.

Replay.io permite grabar la ejecución de una aplicación y luego revisarla en un depurador de viaje en el tiempo, lo que facilita la identificación y resolución de errores al permitir añadir comentarios y ver el código ejecutado durante un error específico.

Las grabaciones permiten a los desarrolladores y testers retroceder y avanzar a través de la ejecución de la aplicación, observar en detalle cómo cambian los estados y cómo se ejecutan las funciones, lo que ayuda a identificar y solucionar problemas específicos en las pruebas.

La inestabilidad en una aplicación puede llevar a pruebas igualmente inestables, lo que significa que los errores pueden ser intermitentes y difíciles de replicar, haciendo que la depuración y corrección sea más complicada y menos predecible.

Filip Hric
Filip Hric
29 min
07 Dec, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla discute la importancia de aprender del pasado en las pruebas de software y la solución de problemas de inestabilidad de las pruebas. Destaca los desafíos de usar la memoria y la comunicación para recopilar información. Se propone la introducción de Replay.io, un depurador que viaja en el tiempo, como solución. Se enfatizan los beneficios de usar Replay Chromium para grabar y depurar, así como las características del depurador Replay. La charla también aborda la relación entre la inestabilidad de las pruebas y la inestabilidad de la aplicación, y la importancia de simular escenarios del mundo real en las pruebas.

1. Aprendiendo del Pasado

Short description:

La respuesta a cómo lo manejo con 4Kids es magia, y esa magia es mi esposa. El tema es luchar contra la inestabilidad de las pruebas con máquinas del tiempo. Aprendemos del pasado. Muchas pruebas son en realidad el proceso de aprender del pasado. Si estás haciendo SRE, probablemente hayas realizado una reunión post-mortem después de un incidente. ¿Cómo aprender del pasado? Podemos usar nuestras propias memorias, intentar recordar lo que ha sucedido. Podemos hablar con alguien que presenció algo de interés. Podemos intentarlo de nuevo. Podemos intentar recrear el pasado.

Gracias. Muchas gracias. La respuesta a cómo lo manejo con 4Kids es magia, y esa magia es mi esposa.

Muy bien. Entonces, el tema es luchar contra la inestabilidad de las pruebas con máquinas del tiempo. Así que tengo una pregunta para ustedes, para empezar. ¿Les gustaría viajar en el tiempo? Levanten sus manos. ¿Quién quisiera viajar en el tiempo? Muy bien. ¿Qué les gustaría hacer si pudieran viajar en el tiempo? ¿Cambiar el proyecto en el que están trabajando? Esa es una respuesta muy de desarrollo de software. ¿Quién más? ¿Tenemos a alguien más que haya levantado la mano? Pueden gritarlo. Comprar algunos Bitcoins. Comprar algunos Bitcoins, muy bien. Esas son grandes respuestas.

Para mí, en realidad, iría a mi propia vida y aplicaría el conocimiento que tengo hoy. Así que sí, tal vez comprar algunos Bitcoins o, ya sabes, como cuando estoy discutiendo con mi hermano y tengo una respuesta ingeniosa, pero como tres meses después, querría usar eso, ya sabes, así que ahí lo tienen. El punto que estoy tratando de hacer, es que aprendemos del pasado. Ahora estamos en TestJS Summit y podrías preguntar, como, ¿qué tiene que ver este viaje en el tiempo con algo? Es que aprendemos del pasado. Si podemos viajar en el tiempo y aplicar el conocimiento que tenemos hoy, podemos hacerlo mejor. Muchas pruebas son en realidad el proceso de aprender del pasado. Por ejemplo, si escribes un informe de error, documentas las cosas que sucedieron, intentas mirar al pasado, y así puedes intentar arreglarlas. Con la automatización de pruebas, utilizamos todo tipo de datos diferentes y vemos rastros de la ejecución de la prueba. Nuevamente, miramos al pasado y aplicamos ese conocimiento. Si estás haciendo SRE, probablemente hayas realizado una reunión post-mortem después de un incidente. Y todo eso es básicamente aprender del pasado.

Muy bien, ahora la pregunta. ¿Cómo aprender del pasado? Si lo piensas, solo tenemos un par de opciones. Podemos usar nuestras propias memorias, intentar recordar lo que ha sucedido. Podemos hablar con alguien que presenció algo de interés. Podemos intentarlo de nuevo. Podemos intentar recrear el pasado.

2. Usando la Memoria y la Comunicación

Short description:

O podríamos usar una máquina del tiempo. Y todas estas formas de viajar al pasado son buenas, pero tienen algunos defectos. El mayor problema es que incluso con toda esta información, aún podría no ser suficiente. Esto a menudo conduce a un problema que muchos de nosotros ya hemos tenido. Podrías carecer de información, comunicación clara y conocimientos técnicos. Entonces, pasemos al siguiente punto.

O podríamos usar una máquina del tiempo. Y de hecho tenemos máquinas del tiempo y voy a hablar de ellas. Y todas estas formas de viajar al pasado son buenas, pero tienen algunos defectos.

Entonces, vayamos a la primera, usando tu memoria. Entonces, si estás escribiendo un informe de error, recientemente pregunté en LinkedIn, ¿cómo escribes un informe de error? ¿Y estas son las diferentes respuestas que llegaron, qué debería hacer el informe de error? Y es mucho. Y ni siquiera he incluido todo. Son descripciones, pasos para reproducir, capturas de pantalla, videos, comportamiento deseado, etcétera, etcétera. El mayor problema es que incluso con toda esta información, aún podría no ser suficiente.

Lo que me lleva a la otra cosa, hablar con alguien. Especialmente esto sucede en un equipo donde la testing y la corrección del error o la reproducción y la corrección del error se distribuyen entre muchas personas diferentes o más personas. Y hay un puente de comunicación que necesitamos crear. Y la comunicación es difícil. No es una tarea fácil. E incluso en la vida real, si quieres hablar con alguien, y más aún si quieres intentar transmitir información compleja.

Esto a menudo conduce a un problema que muchos de nosotros ya hemos tenido. No se pudo replicar, moviendo al backlog. ¿Alguien ha experimentado esto? ¿Sí? ¿Okay? Entonces no soy solo yo. Y puede ser tan molesto para todas las partes involucradas. A menudo, puedes tener personas increíblemente inteligentes, y aún así sucedería. Como un par de manos levantadas aquí. Todos ustedes son personas inteligentes y les ha sucedido a ustedes. Y sin culpa tuya, podrías carecer de información, podrías carecer de comunicación clara, podrías carecer de conocimientos técnicos. Y de nuevo, sin culpa tuya, siempre hay algo que puede interponerse en el camino de encontrar el problema y luego solucionar el problema y aprender del pasado. Aprender lo que sucedió.

Entonces, de nuevo, hablar con alguien en general es genial. Pero cuando quieres aprender del pasado. Pero también tiene algunos defectos. Entonces, pasemos al siguiente punto.

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

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.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress is a powerful tool for end-to-end testing and API testing. It provides instant feedback on test errors and allows tests to be run inside the browser. Cypress enables testing at both the application and network layers, making it easier to reach different edge cases. With features like AppActions and component testing, Cypress allows for comprehensive testing of individual components and the entire application. Join the workshops to learn more about full circle testing with Cypress.
Pruebas pequeñas, grandes resultados
TestJS Summit 2022TestJS Summit 2022
21 min
Pruebas pequeñas, grandes resultados
Automated atomic tests are a great way to improve UI tests by making them less brittle and faster. The tests focus on testing a single feature or component and have minimal UI interactions. The Talk explores examples of automated atomic tests and their implementation on web applications. It also discusses the analysis of atomic tests, login tests, and working with JSON Web Tokens for authentication and authorization. The Talk concludes by highlighting the use of UI and web requests in automated atomic testing.
Regresión Visual con Puppeteer, Playwright y Cypress
TestJS Summit 2021TestJS Summit 2021
9 min
Regresión Visual con Puppeteer, Playwright y Cypress
Top Content
Hello, I'm Rainer Haneckamp, a trainer and consultant at Angular Architects. In this talk, we'll explore visual regression testing using tools like Puppeteer, Playwright, and Cypress. We'll learn how to use Storybook and Puppeteer with Jest for visual regression testing. We'll also see how Jest and Playwright can be used together for visual regression testing. Finally, we'll discover how to use Cypress for visual regression testing. Thank you for watching!
No cometas estos errores de prueba
TestJS Summit - January, 2021TestJS Summit - January, 2021
27 min
No cometas estos errores de prueba
The Talk discusses common mistakes in Cypress tests, such as accessing the file system directly instead of using the Cypress command, and the importance of writing effective Cypress tests for different scenarios. It also emphasizes the need for adding assertions during navigation and alternating commands and assertions. The Talk highlights the significance of documentation and examples in providing support and addresses the advantages of using the Cypress Node test runner. It concludes with tips on debugging, data tests, and testing user journeys and edge cases.
Ganando confianza con pruebas Cypress
React Advanced 2021React Advanced 2021
23 min
Ganando confianza con pruebas Cypress
Welcome to React Advanced London where we'll learn about gaining confidence with Cypress tests. We'll explore browser testing, including tests for specific units of work, business services, APIs, and components using different tools. Cypress provides selectors for easy object selection in tests. We learned how to select objects in our tests and rerun them to check for successes and failures. We also discussed best practices for Cypress tests, including using data-cy elements, commands, mocks, and fixtures.

Workshops on related topic

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.
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.
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
TestJS Summit 2023TestJS Summit 2023
148 min
Mejores Prácticas para Escribir y Depurar Pruebas de Cypress
Workshop
Filip Hric
Filip Hric
Probablemente conozcas la historia. Has creado un par de pruebas y, como estás utilizando Cypress, lo has hecho bastante rápido. Parece que nada te detiene, pero luego - prueba fallida. No fue la aplicación, no fue un error, la prueba fue... ¿inestable? Bueno sí. El diseño de la prueba es importante sin importar la herramienta que utilices, incluyendo Cypress. La buena noticia es que Cypress tiene un par de herramientas bajo su cinturón que pueden ayudarte. Únete a mí en mi masterclass, donde te guiaré lejos del valle de los anti-patrones hacia los campos de pruebas estables y siempre verdes. Hablaremos sobre los errores comunes al escribir tu prueba, así como depurar y revelar problemas subyacentes. Todo con el objetivo de evitar la inestabilidad y diseñar pruebas estables.
Gestión de Pruebas Inestables con Cypress
TestJS Summit 2021TestJS Summit 2021
114 min
Gestión de Pruebas Inestables con Cypress
Workshop
Cecelia Martinez
Cecelia Martinez
Este masterclass es para usuarios de Cypress que desean mejorar su juego contra la inestabilidad en sus suites de pruebas. Aprovechando la aplicación Cypress Real World, cubriremos las causas más comunes de la inestabilidad, revisaremos algunos ejemplos de cómo hacer que las pruebas sean más resistentes a la inestabilidad y repasaremos las mejores prácticas para detectar y mitigar la inestabilidad para aumentar la confianza y la fiabilidad.

Tabla de contenidos:
- Descripción general de la aplicación Cypress Real World
- ¿Qué es la inestabilidad?
- Causas de la inestabilidad
- Gestión de la inestabilidad relacionada con la red (Actividad)
- Gestión de la inestabilidad relacionada con el DOM (Actividad)
- Mejores prácticas para la detección y mitigación de la inestabilidad
- Preguntas y respuestas
Arquitectura de Pruebas Web y Refactorización con Cypress
TestJS Summit 2022TestJS Summit 2022
158 min
Arquitectura de Pruebas Web y Refactorización con Cypress
Workshop
Walmyr
Walmyr
En este masterclass, te presentaré el proyecto migrator.cypress.io de una manera poco convencional, donde además de repasar los comandos de Cypress equivalentes a Protractor (y mostrarte lo simple que es Cypress), también te mostraré cómo probé dicho proyecto evolucionando los scripts de prueba automatizados según la demanda, arquitecturando el conjunto de pruebas de forma evolutiva.