Pruebas: Haz más con menos

Rate this content
Bookmark

¿Cómo puedes tener la confianza de que tu código está bien probado? Para mí, los criterios son sencillos: te sientes cómodo desplegándolo automáticamente en producción un viernes por la noche, y el flujo de lanzamiento se mantiene tan verde como un árbol perenne. En esta charla, compartiré algunos enfoques que estoy siguiendo para alcanzar ambos objetivos en aplicaciones Node.js (APIs, BFFs, etc).

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

Eugene Fidelin
Eugene Fidelin
27 min
13 Jun, 2024

Comments

Sign in or register to post your comment.
  • Eugene Fidelin
    Eugene Fidelin
    eBay
    Slides: https://www.slideshare.net/slideshow/testing-do-more-with-less-jsnation-2024/269740608
Video Summary and Transcription
Esta charla se centra en enfoques prácticos para probar aplicaciones Node.js, incluyendo el uso de métricas Dora y la estrategia del trofeo de pruebas. Se enfatiza la importancia de cubrir flujos críticos con pruebas de integración y de extremo a extremo, teniendo en cuenta también el costo y la velocidad de diferentes tipos de pruebas. El ponente recomienda simular servicios de terceros y utilizar pruebas de instantáneas, pero advierte sobre el potencial de falsos positivos. Se sugiere Playwright como herramienta preferida, y se enfatiza la importancia de la ejecución automatizada de pruebas.
Available in English: Testing: Do More With Less

1. Introducción a las pruebas de aplicaciones Node.js

Short description:

Mi charla trata sobre hacer más con menos en las pruebas, y será un enfoque práctico sobre cómo puedes probar tu aplicación Node.js. Pero antes de que muchos equipos lleguen a eso, pueden responder sí a estas preguntas, necesitan pasar por algunos caminos e implementar algunas cosas. Entonces, ¿cómo te aseguras de que estás avanzando en la dirección correcta? Para eso existen las llamadas métricas Dora, que significa investigación y algo de DevOps. Tiene cuatro métricas clave, y tres de ellas se ven directamente afectadas por las buenas pruebas.

Hola a todos. Gracias por venir. Mi charla trata sobre hacer más con menos en las pruebas, y será un enfoque práctico sobre cómo puedes probar tu aplicación Node.js.

Primero, intenta responder la pregunta de si tu código está bien probado. Pero sé honesto. ¿Te sientes cómodo desplegándolo automáticamente un viernes por la noche y simplemente irte a casa? ¿Quién puede levantar la mano? Genial. Tenemos algunas personas valientes aquí en la sala. Bueno. Pero, ¿tu canal de lanzamiento siempre se mantiene tan verde como tu árbol de Navidad? También es importante. Eso está genial, chicos. Tal vez la próxima vez hagamos una charla juntos. Aprenderé de ustedes.

Pero antes de que muchos equipos lleguen a eso, pueden responder sí a estas preguntas, necesitan pasar por algunos caminos e implementar algunas cosas. Entonces, ¿cómo te aseguras de que estás avanzando en la dirección correcta? Para eso existen las llamadas métricas Dora, que significa investigación y algo de DevOps. Básicamente te ayuda a entender qué tan bueno es tu equipo o la empresa en términos de rendimiento y velocidad, es decir, qué tan bueno eres en lanzar software.

Tiene cuatro métricas clave, y tres de ellas se ven directamente afectadas por las buenas pruebas. La primera es la frecuencia de despliegue. Básicamente mide con qué frecuencia tu equipo despliega con éxito en producción. Puedes imaginar que si aún tienes pruebas manuales, espero que no, pero algunas compañías aún tienen pruebas manuales, no puedes desplegar con mucha frecuencia. Probablemente despliegues una vez cada dos semanas o una vez al mes. Idealmente, deberías desplegar bajo demanda. El tiempo de entrega para el cambio. Las pruebas también tienen un gran impacto en esta métrica, porque incluso si tienes pruebas automatizadas, imagina que tienes pruebas de extremo a extremo muy inestables y lentas. Esto significa que cada vez que haces push al master, cada vez que tu canal de despliegue comienza, puede llevarte horas, y si falla, puede llevarte días o incluso semanas obtener un canal de despliegue en verde. Nuevamente, eres muy lento. Y por último, pero no menos importante, donde las pruebas juegan un papel importante es la tasa de fallos en los cambios. Básicamente mide con qué frecuencia tu despliegue causa algún problema en producción, y tiene una conexión directa con la cobertura de pruebas. Pero no la cobertura de pruebas como mides, oh, el 80% de mis líneas están cubiertas. Estoy feliz. No. Esta es la cobertura real.

2. Optimización de la Cobertura de Pruebas y Enfoques

Short description:

El trofeo de pruebas te ayuda a enfocarte en escribir las pruebas correctas. Las pruebas unitarias tienen un costo bajo y una velocidad alta, mientras que las pruebas de extremo a extremo tienen un costo alto y una velocidad baja. Las pruebas de integración brindan una buena confianza a un costo moderado. Comienza escribiendo pruebas de integración y considera escribir pruebas unitarias para casos específicos. Habla con tu equipo de negocios y de productos para identificar flujos críticos.

¿Estás probando las cosas correctas? ¿Estás cubriendo los flujos que aportan más valor a la empresa? Entonces, ¿cómo puedes abordar tus pruebas, cómo puedes escribir menos pruebas y obtener una mayor confianza? Así que, nuevamente, supongo que al menos has escuchado, o incluso tal vez ya estás aplicando el trofeo de pruebas. Se promueve y se hizo popular después de que Kent C. Dodds, creo, escribiera un artículo al respecto y ahora imparte capacitaciones al respecto. Pero básicamente, la idea principal del trofeo de pruebas es ayudarte a enfocarte en escribir las pruebas correctas. Si ves que cada prueba tiene su costo y te brinda cierto nivel de confianza, y tiene cierta velocidad.

Entonces, las pruebas unitarias tienen un costo muy bajo, ¿verdad? Es muy fácil escribir pruebas unitarias, especialmente hoy en día que tenemos GPT, puedes preguntar y generará pruebas unitarias automáticamente. Te brindan, diría yo, una confianza promedio porque si solo tienes pruebas unitarias, es posible que no sea suficiente para implementar automáticamente, pero la velocidad es muy alta. Puedes ejecutarlas más rápido. Por otro lado, las pruebas de extremo a extremo. El costo para ellas es muy alto porque no solo es el costo de escribir la prueba de extremo a extremo, sino también mantenerla a largo plazo. Necesitas una infraestructura especial, necesitas un entorno especial donde debes ejecutarlas, ese entorno debe ser estable. Pero te brinda una confianza muy alta. Si tu prueba de extremo a extremo está en verde, tienes mucha confianza de que todo funciona como se espera, pero la velocidad es baja, ¿verdad? En algún punto intermedio están las pruebas de integración. El costo para ellas es muy similar al de las pruebas unitarias, te brindan una muy buena confianza. Diría que, en mi experiencia, solo tener pruebas de integración a veces es suficiente y puedes prescindir de las pruebas de extremo a extremo y su velocidad sigue siendo alta. Y puedes ver que en este trofeo de pruebas, se enfatiza que la cantidad de pruebas de integración debe superar la cantidad de pruebas de extremo a extremo y pruebas unitarias.

Entonces, ¿cómo abordas esto? Paso número cero. ¿Recuerdas? Puedes habilitar linters estáticos y verificaciones de tipo. Es gratis, ¿verdad? Todos deberían hacerlo. Paso número uno. Comienzas escribiendo pruebas de integración. Intentas escribir pruebas de integración para cada flujo feliz y no feliz. Luego verificas la cobertura de tus pruebas. Identificas, ok, tal vez hay algunos casos de borde para los cuales no tiene sentido escribir una prueba de integración, puedes escribir una prueba unitaria para cubrirlos. O tal vez dentro de tu aplicación, hay algún código reutilizable que utilizas en varias partes. Entonces, tal vez lo consideres como una biblioteca. Entonces, también tiene sentido escribir pruebas unitarias para eso. Y por último, en términos de pruebas, habla con tu equipo de negocios, habla con tu producto. Pídeles que identifiquen los flujos críticos para el negocio.

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

Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
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.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Un Marco para Gestionar la Deuda Técnica
TechLead Conference 2023TechLead Conference 2023
35 min
Un Marco para Gestionar la Deuda Técnica
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.

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
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
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.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
React Day Berlin 2022React Day Berlin 2022
86 min
Uso de CodeMirror para construir un editor de JavaScript con Linting y AutoCompletado
Top Content
WorkshopFree
Hussien Khayoon
Kahvi Patel
2 authors
Usar una biblioteca puede parecer fácil a primera vista, pero ¿cómo eliges la biblioteca correcta? ¿Cómo actualizas una existente? ¿Y cómo te abres camino a través de la documentación para encontrar lo que quieres?
En esta masterclass, discutiremos todos estos puntos finos mientras pasamos por un ejemplo general de construcción de un editor de código usando CodeMirror en React. Todo mientras compartimos algunas de las sutilezas que nuestro equipo aprendió sobre el uso de esta biblioteca y algunos problemas que encontramos.