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

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
Ya sea que estés probando tu UI o API, Cypress te proporciona todas las herramientas necesarias para trabajar y gestionar solicitudes de red. Esta tarea de nivel intermedio demuestra cómo usar los comandos cy.request y cy.intercept para ejecutar, espiar y simular solicitudes de red mientras pruebas tu aplicación en el navegador. Aprende cómo funcionan los comandos, así como los casos de uso para cada uno, incluyendo las mejores prácticas para probar y simular tus solicitudes de red.
Pruebas de ciclo completo con Cypress
TestJS Summit 2022TestJS Summit 2022
27 min
Pruebas de ciclo completo con Cypress
Top Content
Cypress ha tomado al mundo por sorpresa al traer una herramienta fácil de usar para pruebas de extremo a extremo. Sus capacidades han demostrado ser útiles para crear pruebas estables para aplicaciones de frontend. Pero las pruebas de extremo a extremo son solo una pequeña parte de los esfuerzos de prueba. ¿Qué pasa con tu API? ¿Qué pasa con tus componentes? Bueno, en mi charla me gustaría mostrarte cómo podemos comenzar con pruebas de extremo a extremo, profundizar con pruebas de componentes y luego subir a probar nuestra API, circ
Pruebas pequeñas, grandes resultados
TestJS Summit 2022TestJS Summit 2022
21 min
Pruebas pequeñas, grandes resultados
Sí, las cosas grandes vienen en paquetes pequeños. Por ejemplo, ¿no es fantástica la velocidad, retroalimentación y confiabilidad de una prueba unitaria? ¿Sabías que también podemos obtener retroalimentación rápida, enfocada y confiable de nuestras pruebas funcionales de extremo a extremo? Las pruebas atómicas de extremo a extremo son aquellas que son específicas y enfocadas. Son pequeñas en tamaño pero tienen un gran impacto. Este tutorial te enseñará cómo crear pruebas atómicas de extremo a extremo con varios ejemplos de código. Primero, utilizaremos Cypress.io para autenticarnos mediante la configuración de una cookie en lugar de utilizar una interfaz de usuario. Segundo, utilizaremos Cypress.io para establecer un JSON Web Token para la autenticación. Únete a mí y escribamos pruebas pequeñas para obtener grandes resultados.
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
Las pruebas de Regresión Visual se realizan a través de la coincidencia de capturas de pantalla. Mostraré cómo hacerlo en tres diferentes bibliotecas/marcos de trabajo. Además, utilizaré Storybook para extraer los componentes de tu elección de SPA.
No cometas estos errores de prueba
TestJS Summit - January, 2021TestJS Summit - January, 2021
27 min
No cometas estos errores de prueba
En esta charla, discutiré los errores comunes que cometen los desarrolladores al escribir pruebas en Cypress y cómo evitarlos. Hablaremos sobre pruebas que son demasiado cortas, pruebas que codifican datos, pruebas que compiten contra la aplicación y otros errores. Creo que esta presentación será útil para cualquier persona que escriba pruebas E2E utilizando JavaScript.
Ganando confianza con pruebas Cypress
React Advanced Conference 2021React Advanced Conference 2021
23 min
Ganando confianza con pruebas Cypress
¿Alguna vez has querido refactorizar sin piedad pero no quieres romper la frágil torre? ¿O has enviado a producción solo para pasar los siguientes días limpiando las regresiones? Necesitas pruebas de extremo a extremo, y Cypress es una excelente y rápida manera de construirlas. Con una interfaz simple de JavaScript o TypeScript, puedes automatizar los navegadores para probar esas funciones críticas en tu aplicación y demostrar que funciona como se espera, esta vez y siempre. Únete a nosotros para sumergirte en la construcción de pruebas Cypress y salir con la confianza para refactorizar a la grandeza.

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.