Pruebas pequeñas, grandes resultados

Rate this content
Bookmark

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.

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

FAQ

Las pruebas atómicas automatizadas son pruebas específicas que evalúan solo una característica o componente de la aplicación, generalmente con pocas interacciones con la interfaz de usuario y afectando a un máximo de dos pantallas. Estas pruebas son diseñadas para ser rápidas y estables, reduciendo la cantidad de latencia e interacciones con la interfaz.

Las pruebas atómicas automatizadas ofrecen ventajas significativas como mayor rapidez y estabilidad comparadas con las pruebas automatizadas convencionales, gracias a la disminución de interacciones con la interfaz de usuario y la reducción de latencia.

En un formulario web HTML, una prueba atómica automatizada se puede implementar realizando una solicitud web que automáticamente establece una cookie en el navegador, permitiendo operaciones subsecuentes sin interactuar manualmente con la interfaz de usuario.

Un token web JSON (JWT) es un estándar de la industria para la autenticación que encapsula datos del usuario en forma de token. Se utiliza en pruebas para verificar la autenticidad y permitir el acceso a partes específicas de una aplicación sin interacción directa con la interfaz de usuario.

Una prueba atómica utilizando JSON Web Token puede realizarse mediante el envío de credenciales de inicio de sesión en una solicitud POST. Tras autenticarse, se obtiene un token que se utiliza para realizar solicitudes autenticadas y acceder a funciones protegidas de la aplicación de forma programática.

La principal diferencia es que las pruebas atómicas se centran en un solo componente o función de la aplicación, minimizando las interacciones con la interfaz de usuario, mientras que las pruebas de extremo a extremo abarcan una secuencia completa de acciones desde el inicio hasta el final, involucrando múltiples componentes y siendo más propensas a fallos debido a su complejidad.

La eficacia de una prueba atómica automatizada se verifica asegurando que la prueba cumpla con su propósito específico con éxito, evaluando que las interacciones sean mínimas y que los resultados sean rápidos y consistentes, sin errores no relacionados con el componente o función bajo prueba.

Nikolay Advolodkin
Nikolay Advolodkin
21 min
03 Nov, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las pruebas atómicas automatizadas son una excelente manera de mejorar las pruebas de interfaz de usuario haciéndolas menos frágiles y más rápidas. Las pruebas se centran en probar una sola característica o componente y tienen interacciones mínimas con la interfaz de usuario. La charla explora ejemplos de pruebas atómicas automatizadas y su implementación en aplicaciones web. También se discute el análisis de las pruebas atómicas, las pruebas de inicio de sesión y el trabajo con JSON Web Tokens para la autenticación y autorización. La charla concluye destacando el uso de la interfaz de usuario y las solicitudes web en las pruebas atómicas automatizadas.
Available in English: Tiny Tests, Large Results

1. Introducción a las pruebas atómicas automatizadas

Short description:

Las pruebas atómicas automatizadas son una excelente manera de actualizar tus pruebas de interfaz de usuario y hacerlas menos frágiles y mucho más rápidas. Vamos a ver algunos ejemplos de estas pruebas atómicas automatizadas e incluso las vamos a implementar en dos aplicaciones web. Una prueba atómica automatizada es una prueba que evalúa solo una característica o componente. Por lo general, tienen muy pocas interacciones con la interfaz de usuario y solo tocan un máximo de dos pantallas, especialmente en la automatización de la interfaz de usuario del front-end.

En el tutorial de hoy, vamos a hablar sobre las pruebas atómicas automatizadas. Las pruebas atómicas automatizadas son una excelente manera de actualizar tus pruebas de interfaz de usuario y hacerlas menos frágiles y mucho más rápidas. Vamos a ver algunos ejemplos de estas pruebas atómicas automatizadas e incluso las vamos a implementar en dos aplicaciones web.

Una aplicación tendrá un formulario web HTML y la otra utilizará un token web JSON para la autenticación. Mi nombre es Nikolay Advolatkin, Arquitecto de Soluciones Senior en Sauce Labs y fundador de ultimateQA.com. ¿A qué estás esperando? Vamos a ver cómo implementar las pruebas atómicas automatizadas.

Una prueba atómica automatizada es una prueba que evalúa solo una característica o componente. Por lo general, tienen muy pocas interacciones con la interfaz de usuario y solo tocan un máximo de dos pantallas, especialmente en la automatización de la interfaz de usuario del front-end. La razón por la que digo que generalmente tocan un máximo de dos pantallas es porque estas pruebas atómicas automatizadas suelen tener un estado de configuración donde necesitan establecer el estado de una aplicación y luego un estado posterior a la configuración donde necesitan realizar una validación. Las pruebas atómicas automatizadas tienen varias ventajas, ya que son mucho más rápidas y estables que las pruebas automatizadas típicas debido a que disminuyen la cantidad de latencia con la que tenemos que lidiar y disminuyen la cantidad de interacciones con la interfaz de usuario que tenemos que realizar.

2. Análisis de las Pruebas Atómicas Automatizadas

Short description:

Esta prueba puede parecer atómica al principio, pero no lo es. Requiere iniciar sesión y validar el inicio de sesión, lo cual se puede hacer por separado. Las pruebas atómicas pueden ser simples, como validar los atributos de un enlace. Ahora veremos una aplicación web con un formulario HTML y un caso de prueba positivo llamado 'Redirecciona al Panel de Control al Iniciar Sesión'. La prueba visita la página de inicio de sesión, interactúa con el formulario y realiza aserciones para validar el inicio de sesión.

Ahora tengo una pregunta para ti. Esta prueba aquí, si la observas y la analizas, ¿crees que esta prueba es atómica? A primera vista, esta prueba puede parecer atómica, ¿verdad? En el sentido de que inicia sesión, valida que hayamos podido iniciar sesión y luego agrega un artículo al carrito y verifica que se haya agregado un artículo al carrito. Está cerca de ser atómica, sin embargo, en realidad no lo es. La razón por la que no lo es es porque tiene que iniciar sesión y validar que hayamos iniciado sesión correctamente. No hay razón por la que no podamos probar el inicio de sesión de la interfaz de usuario en una prueba separada y asegurarnos de que funcione y luego, lo que esta prueba realmente se preocupa, lo que realmente quiere probar es esta parte aquí. Y así podemos ahorrar tiempo y estabilidad al realizar estas interacciones sin utilizar la interfaz de usuario.

Las pruebas atómicas pueden tener muchas formas. Algunas de ellas pueden ser extremadamente simples. Por ejemplo, cuando solíamos escribir pruebas atómicas automatizadas que hacen clic en enlaces, en realidad tenemos una acción y una validación desperdiciadas en el sentido de que necesitamos hacer clic en un enlace y verificar que el enlace vaya al lugar correcto. Lo que realmente nos interesa es el atributo Ahref del enlace, que podríamos validar fácilmente de esta manera, haciendo que nuestra prueba sea más rápida y menos frágil.

Continuemos y echemos un vistazo a nuestra primera aplicación web, que tendrá un formulario web HTML, y podremos iniciar sesión en este formulario web HTML. Pero en lugar de utilizar la interfaz de usuario, que no es eficiente ni atómica, podremos realizar una solicitud web que dejará una cookie en nuestro navegador, y luego podremos omitir el inicio de sesión sin interactuar con la interfaz de usuario. Si vamos a esta aplicación, hay muchas pruebas aquí, pero voy a centrarme en una a la vez, solo para que puedas entender mejor. La prueba más fácil de entender, que es el caso de prueba positivo, será este caso de prueba llamado Redirecciona al Panel de Control al Iniciar Sesión.

Este es el caso de prueba positivo en el que visitamos la página de inicio de sesión, y por cierto, puedes ver nuestra aplicación a la derecha, si no estás familiarizado con Cypress. Muestra la ejecución de la prueba a la izquierda, con la aplicación real a la derecha, y si quieres explorar la aplicación en otro navegador, definitivamente puedes hacerlo. Aquí está, y realiza exactamente las mismas operaciones, pero con Cypress, por ejemplo, es muy fácil, ya que puedes ver lo que hace la prueba y luego ver la aplicación real a la derecha e incluso interactuar con ella si quieres. Puedes ver que el primer paso que hace esta prueba es visitar el inicio de sesión de nuestra aplicación que está en localhost 7077, y después de eso, realiza las operaciones estándar que esperarías para poder iniciar sesión en la aplicación, ¿verdad? Entonces va a obtener el nombre de usuario y escribir Jane Lane. Va a obtener el campo de contraseña y escribir la contraseña y luego va a enviar el formulario. Una vez que se envía el formulario, puedes ver que hacemos algunas aserciones. Primero, que la página del panel de control está ahí, ¿verdad? Entonces nuestra URL incluye panel de control. Así que eso significa que pudimos iniciar sesión correctamente. Segundo, obtenemos el encabezado y verificamos que contenga Jane Lane. Por lo tanto, estamos comprobando no solo que hemos iniciado sesión, sino que contiene el usuario correcto y obtenemos la cookie que corresponde a nuestro inicio de sesión y nos aseguramos de que exista una cookie. Echa un vistazo a la pestaña de aplicaciones aquí y en nuestras cookies. Actualmente, no hay nada disponible aquí. Lo he borrado. Pero si volvemos a ejecutar la prueba, y por supuesto, como mencioné, interactúa con la aplicación realmente iniciada sesión. Puedes ver que ahora hay una cookie de sesión de Cypher que se ha creado, por eso podemos iniciar sesión a través de la aplicación. El desafío con esta prueba es que, nuevamente, no es atómica, ¿verdad? En el sentido de que interactúa con este formulario de inicio de sesión, luego inicia sesión y luego valida que hemos iniciado sesión.

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 Aplicaciones Web con Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Pruebas de Aplicaciones Web con Playwright
Top Content
Testing web applications with Playwright, a reliable end-to-end testing tool. Playwright offers fast execution, powerful tooling, and support for multiple languages. It provides precise selectors, web-first assertions, and code generation for easy testing. Playwright also offers features like live debugging, tracing, and running tests on CI. The future of Playwright aims to make testing easy and fun, with a focus on creating frustration-free web experiences.
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.
Todos pueden escribir pruebas fácilmente
TestJS Summit 2023TestJS Summit 2023
21 min
Todos pueden escribir pruebas fácilmente
Playwright is a reliable end-to-end testing tool for modern web apps that provides one API, full isolation, fast execution, and supports multiple languages. It offers features like auto-weighting, retrying assertions, seamless testing of iframes and shadow DOM, test isolation, parallelism, and scalability. Playwright provides tools like VS Code extension, UiMode, and Trace Viewer for writing, debugging, and running tests. Effective tests prioritize user-facing attributes, use playwright locators and assertions, and avoid testing third-party dependencies. Playwright simplifies testing by generating tests, providing code generation and UI mode, and allows for easy running and debugging of tests. It helps in fixing failed tests and analyzing DOM changes, fixing locator mismatches, and scaling tests. Playwright is open source, free, and continuously growing.
Quizá No Necesitemos Pruebas de Componentes
Vue.js Live 2024Vue.js Live 2024
26 min
Quizá No Necesitemos Pruebas de Componentes
Component testing is a gray area between integration and unit testing. The demo app focuses on the cart component and writing test cases for Playwright component test and VTest. The first cart test encounters a bug with the invisible method in View Test.
Luchando contra la inestabilidad de las pruebas con máquinas del tiempo
TestJS Summit 2023TestJS Summit 2023
29 min
Luchando contra la inestabilidad de las pruebas con máquinas del tiempo
The Talk discusses the importance of learning from the past in software testing and troubleshooting test flakiness. It highlights the challenges of using memory and communication to gather information. The introduction of Replay.io, a time-traveling debugger, is proposed as a solution. The benefits of using Replay Chromium for recording and debugging, as well as the features of the Replay debugger, are emphasized. The Talk also addresses the relationship between test flakiness and app flakiness, and the significance of simulating real-world scenarios in testing.

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.
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
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.
Construyendo una suite de pruebas significativa que no sea todo E2E
TestJS Summit 2023TestJS Summit 2023
89 min
Construyendo una suite de pruebas significativa que no sea todo E2E
Workshop
David Burns
David Burns
Todos somos enseñados a seguir la Pirámide de Pruebas pero la realidad es que construimos el Árbol de Pruebas de Navidad. En esta masterclass, David te explicará cómo desglosar proyectos y poner las pruebas donde necesitan estar. Al final de la masterclass, podrás actualizar tus proyectos para que cualquiera y todos puedan empezar a contribuir y realmente vivir según "La calidad es el trabajo de todos".
Te guiará a través de:- Pruebas de Componentes- Pruebas de API- Pruebas de Regresión Visual- Pruebas A11Y
También te explicará cómo configurar todo esto en tu pipeline de CI/CD para que puedas obtener ciclos de feedback más cortos y rápidos.
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