Pruebas de extremo a extremo para API: Ahorrando Nervios y Horas

Rate this content
Bookmark

Tener una cobertura de pruebas adecuada significa mucho para una buena API. Pero lo que puede hacer que toda la vida sea patética es el interminable simulacro de datos y funciones para las pruebas de integración. Cada vez que cambias el código, necesitas arreglar la simulación. Después de varias iteraciones, el pensamiento correcto es: ¿qué salió mal?


Un enfoque alternativo son las pruebas de extremo a extremo para la API. Que requieren solo simulaciones mínimas y preparación de datos. El resto es código puro de tu API. Cambia el código, las pruebas de extremo a extremo siguen siendo las mismas.

Esta charla trata sobre mi experiencia de cambiar de las pruebas de integración a las pruebas de extremo a extremo para la API, pros y contras, y cómo empecé a sentirme feliz con las pruebas.

FAQ

Valentin Kononov es un desarrollador que trabaja principalmente con TypeScript y JavaScript, especialmente en el backend utilizando Node.js. Su experiencia incluye trabajar con el framework NestJS.

Las pruebas de extremo a extremo para API, como las que describe Valentin Kononov, involucran iniciar toda la API en un ambiente de prueba y verificar cada punto de integración detalladamente para asegurar que todos los componentes del sistema funcionen correctamente juntos.

Los beneficios de las pruebas de extremo a extremo incluyen una mayor facilidad para realizar cambios y modificaciones, así como la capacidad de probar todo el flujo de trabajo, lo que resulta en pruebas más legibles y que sirven como documentación adicional para la API.

Las pruebas de integración suelen enfocarse en módulos individuales y sus interacciones con dependencias simuladas, mientras que las pruebas de extremo a extremo involucran la ejecución de toda la aplicación en un entorno de prueba para asegurar la funcionalidad completa del sistema.

En Nest.js, se puede simular la autenticación utilizando guardias que se escriben una vez y se utilizan en todas partes, facilitando la configuración inicial y el manejo de autenticación en las pruebas de extremo a extremo.

Uno de los principales desafíos de las pruebas de integración es la necesidad de actualizar constantemente las dependencias simuladas cada vez que se realiza un cambio en el código, lo que puede ser muy tiempo y recursos intensivo.

Valentin Kononov sugiere un truco para simular fechas tanto para la función 'now' como para el constructor, lo que ayuda a asegurar la consistencia de los datos en situaciones donde la fecha actual es crucial para la prueba.

Valentin Kononov
Valentin Kononov
8 min
19 Nov, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute el uso de pruebas de extremo a extremo para el desarrollo de API, específicamente utilizando el framework Nest.js. Se explica el proceso de inicialización de la API Nest para las pruebas, junto con opciones de personalización como la anulación de los guardias de autenticación. Se destacan los beneficios de las pruebas de extremo a extremo, incluyendo la facilidad de modificación y su función como documentación adicional para la API. También se mencionan los desafíos de escribir la versión inicial de la prueba y un truco para simular la fecha en las pruebas.

1. Introducción a las pruebas de extremo a extremo para API

Short description:

Hola a todos. Mi nombre es Valentin Kononov, y hoy mi charla relámpago trata sobre las pruebas de extremo a extremo para API. Cómo lo hice. Cómo me ahorró nervios y horas y así sucesivamente. Pero primero un poco sobre mí. Soy un desarrollador, que trabaja principalmente con TypeScript y JavaScript en estos días, es decir, con Node.js, y especialmente con el backend. En uno de mis últimos proyectos, teníamos un backend escrito en NestJS, y tuvimos muchos problemas para probarlo, especialmente cuando necesitábamos cambiar alguna funcionalidad. Así que intentamos pasar eventualmente a las pruebas de extremo a extremo, y eso es de lo que trata mi charla.

Mi nombre es Valentin Kononov, y hoy mi charla relámpago trata sobre las pruebas de extremo a extremo para API. Cómo lo hice. Cómo me ahorró nervios y horas y así sucesivamente.

Pero primero un poco sobre mí. Soy un desarrollador, que trabaja principalmente con TypeScript y JavaScript en estos días, es decir, con Node.js, y especialmente con el backend. En uno de mis últimos proyectos, teníamos un backend escrito en NestJS, y tuvimos muchos problemas para probarlo, especialmente cuando necesitábamos cambiar alguna funcionalidad. Así que intentamos pasar eventualmente a las pruebas de extremo a extremo, y eso es de lo que trata mi charla.

En este momento, trabajo en una empresa de Unity, y todo se trata de diversión y juegos y cosas así, pero trabajo en el departamento de publicidad, por lo que tenemos muchos servicios tanto en el frontend como en el backend, y por supuesto, necesitamos probarlos cuidadosamente. Así que vamos al grano, no tenemos mucho tiempo. Cuando hablamos de pruebas de API, ¿a qué nos referimos normalmente? En primer lugar, necesitamos probar el flujo de datos, es decir, cómo fluyen los datos a través de nuestros servicios, cuáles son las consultas a la base de datos, es decir, qué entrada, salida y transformadores de datos tenemos. Y en la mayoría de los casos, solo necesitamos probar si las operaciones CRUD funcionan correctamente y si la sindicación funciona correctamente y si los puntos finales son correctos, y lo que normalmente hacemos para lograr eso. Por supuesto, en la mayoría de los casos, tenemos pruebas de integración.

¿Y cómo funciona eso? Las pruebas de integración suelen probar el módulo completo, como todo el servicio, pero el servicio no es algo que esté presente por sí mismo, es algo que se comunica con otros módulos como una base de datos o un repositorio de datos o algún modelo de sindicación, entre otras cosas. Por eso, para probarlo, necesitamos simular algunas dependencias. Y cuando hicimos eso y la prueba funciona correctamente, ¿qué hacemos a continuación? Actualizamos el código, agregamos nuevas funcionalidades. ¿Y qué necesitamos hacer después? Necesitamos actualizar las dependencias simuladas, para que la prueba siga funcionando. ¿Y qué más? Sí, necesitamos actualizar las dependencias simuladas una y otra vez, y otra vez, y otra vez, y otra vez.

Realmente me enfrenté a eso. Teníamos una prueba realmente grande, importante y súper mega crítica sobre algún proceso de exportación. Y cada vez que cambiábamos algo mínimo en el código de exportación, necesitábamos reescribir completamente toda la prueba. Eso fue malo. Entonces, ¿cómo podría verse normalmente la prueba de integración con todas las simulaciones? En realidad, es una gran cantidad de diferentes tipos de funciones de simulación, como se muestra en las diapositivas. A veces simulamos todo el módulo, a veces simulamos solo una función. Y por supuesto, cuando algo cambia en la función, especialmente en el último ejemplo aquí, la función de actualización cambió, y su salida cambió. Incluso el formato de salida, que era un objeto, se convirtió en un simple número. Así que necesitábamos actualizar la simulación. Y eso realmente fue molesto porque pasamos mucho tiempo solo para mantener las pruebas. Pero debería ser al revés, es decir, las pruebas deberían ahorrar tiempo en el desarrollo. Entonces, ¿hay alguna alternativa de cómo podemos proceder para que todo el proceso sea más fácil para nosotros como desarrolladores? Básicamente, mi receta para eso fueron las pruebas de extremo a extremo.

2. Pruebas de extremo a extremo para API

Short description:

Discutimos el uso del framework Nest.js para pruebas de extremo a extremo en el desarrollo de API. Las pruebas de extremo a extremo implican iniciar toda la API en un entorno de pruebas y probarla punto por punto. La inicialización de la API de Nest implica crear un módulo de pruebas, inicializarlo y crear una aplicación de Nest. Las pruebas se pueden personalizar mediante la anulación de los guardias de autenticación. Las pruebas en sí implican realizar solicitudes POST o GET a puntos finales específicos, enviar datos de solicitud y esperar códigos y propiedades de respuesta específicos. Las pruebas de extremo a extremo tienen ventajas como ser fáciles de corregir, modificar y servir como documentación adicional para la API. Sin embargo, escribir la versión inicial de la prueba puede llevar tiempo, especialmente cuando se requiere preparación de datos. También se comparte un truco para simular la fecha en las pruebas.

Discutimos con el equipo, vale, tenemos el framework Nest.js. Tiene muchas capacidades de pruebas. ¿Por qué no lo usamos para pruebas de extremo a extremo? ¿Y qué es la prueba de extremo a extremo cuando hablamos de la API? Es cuando inicias toda la API, como todo el servicio de nodo en tu entorno de pruebas, y lo pruebas punto por punto.

En esta diapositiva, puedes ver cómo podría ser la inicialización de la API de Nest. Creas un módulo de pruebas, lo inicializas, creas la aplicación de Nest. Al final, debes cerrarlo y, por supuesto, puedes sobrescribir lo que quieras. Por ejemplo, en Nest, usamos los llamados guardias para la autenticación. Aquí, podemos anularlo, inicializarlo y cerrarlo al final cuando todas las pruebas hayan pasado. La simulación del guardia de autenticación es algo bastante simple, que solo escribes una vez y usas en todas partes. Es realmente algo tan simple.

Y así es como se vería toda la prueba. Literalmente, haces una solicitud, haces una solicitud POST o GET a algún punto final específico, para alguna URL específica. Y en este ejemplo, como es POST, puedes enviar detalles de alguien, como qué tipo de proyecto debemos agregar. Y puedes esperar, como aquí en la última línea, puedes esperar algún tipo de código, como que debería devolver 201. Lo que significa creado exitosamente. Y también puedes hacer una solicitud GET y también formar alguna URL, enviar solicitudes, esperar algún código. Y también esperar alguna respuesta. Y verificar que las propiedades de la respuesta sean correctas.

¿Qué quiero decir? Así que los pros y los contras. Los pros, fáciles de corregir, fáciles de modificar y pruebas de todo el flujo de trabajo. Y como puedes ver aquí mismo, toda la prueba es muy legible y también es una fuente adicional de documentación para tu API. Pero, por supuesto, también hay algunos contras y aspectos negativos. Puede llevar tiempo escribir la versión inicial de esta prueba porque en algunos casos necesitas preparar los datos. Por supuesto, cuando solo tienes una API rudimentaria, puedes usar solo solicitudes GET o POST para crear datos y asegurarte de que se creen. Pero en algunos casos, necesitas preparar los datos en una base de datos y esta base de datos mínima debe ejecutarse en algún lugar en un servicio de integración continua. Y solo para ti tenemos un truco realmente especial, muy pequeño. A veces, en mi experiencia, solo una vez. Pero necesitábamos falsificar la fecha. Preparé algunos datos y debo asegurarme de que estos datos se creen con esta fecha actual. Y generalmente lo hacíamos así. Pero en algún código realmente usamos no solo la función now, sino también construct. Y hay una solución un poco más completa de cómo simular la fecha tanto para now como para el constructor. Así que toma una captura de pantalla, es un truco muy útil, nos vemos más tarde.

Y aquí está el enlace a mis diapositivas, mi sitio web y mi documentación, que me inspiraron para todo eso. Entonces, como resumen, haz pruebas. Realmente es algo genial cuando haces pruebas. Y las pruebas de extremo a extremo hacen que los cambios sean más rápidos y puedes cubrir todo el flujo de trabajo con las últimas simulaciones y ser mucho más feliz. ¡Nos vemos, chicos!

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

Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Concurrent React y Server Components están cambiando la forma en que pensamos sobre el enrutamiento, la renderización y la obtención de datos en las aplicaciones web. Next.js recientemente compartió parte de su visión para ayudar a los desarrolladores a adoptar estas nuevas características de React y aprovechar los beneficios que desbloquean.En esta charla, exploraremos el pasado, presente y futuro del enrutamiento en las aplicaciones de front-end y discutiremos cómo las nuevas características en React y Next.js pueden ayudarnos a arquitectar aplicaciones más eficientes y con más funciones.
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.
Testing Pyramid Makes Little Sense, What We Can Use Instead
TestJS Summit 2021TestJS Summit 2021
38 min
Testing Pyramid Makes Little Sense, What We Can Use Instead
Top Content
Featured Video
Gleb Bahmutov
Roman Sandler
2 authors
The testing pyramid - the canonical shape of tests that defined what types of tests we need to write to make sure the app works - is ... obsolete. In this presentation, Roman Sandler and Gleb Bahmutov argue what the testing shape works better for today's web applications.
Pruebas de Aplicaciones Web con Playwright
TestJS Summit 2022TestJS Summit 2022
20 min
Pruebas de Aplicaciones Web con Playwright
Top Content
Las pruebas son difíciles, las pruebas requieren tiempo para aprender y escribir, y el tiempo es dinero. Como desarrolladores queremos probar. Sabemos que deberíamos pero no tenemos tiempo. Entonces, ¿cómo podemos conseguir que más desarrolladores hagan pruebas? Podemos crear mejores herramientas.Permíteme presentarte a Playwright - Pruebas confiables de extremo a extremo en diferentes navegadores para aplicaciones web modernas, por Microsoft y completamente de código abierto. El codegen de Playwright genera pruebas para ti en JavaScript, TypeScript, Dot Net, Java o Python. Ahora realmente no tienes excusas. Es hora de jugar tus pruebas correctamente.
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
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!

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
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 una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
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
Masterclass de Pruebas de API con Postman
TestJS Summit 2023TestJS Summit 2023
48 min
Masterclass de Pruebas de API con Postman
Top Content
WorkshopFree
Pooja Mistry
Pooja Mistry
En el panorama siempre en evolución del desarrollo de software, garantizar la fiabilidad y funcionalidad de las API se ha vuelto primordial. "Pruebas de API con Postman" es una masterclass completa diseñada para equipar a los participantes con los conocimientos y habilidades necesarios para sobresalir en las pruebas de API utilizando Postman, una herramienta poderosa ampliamente adoptada por profesionales en el campo. Esta masterclass profundiza en los fundamentos de las pruebas de API, avanza a técnicas de prueba avanzadas y explora la automatización, las pruebas de rendimiento y el soporte multiprotocolo, proporcionando a los asistentes una comprensión holística de las pruebas de API con Postman.
Únete a nosotros para esta masterclass para desbloquear todo el potencial de Postman para las pruebas de API, agilizar tus procesos de prueba y mejorar la calidad y fiabilidad de tu software. Ya seas un principiante o un probador experimentado, esta masterclass te equipará con las habilidades necesarias para sobresalir en las pruebas de API con Postman.