CursosEmpresasBlogLiveConfPrecios

Pruebas Unitarias e Integración en Desarrollo de Software

Clase 2 de 12 • Curso de Testing con Vue.js 2

Contenido del curso

Introducción

  • 1
    Pruebas en Proyectos de Software con Vue y Automatización

    Pruebas en Proyectos de Software con Vue y Automatización

    01:03 min
  • 2
    Pruebas Unitarias e Integración en Desarrollo de Software

    Pruebas Unitarias e Integración en Desarrollo de Software

    Viendo ahora
  • 3
    Evolución de Pruebas de Software: De Turing a la Calidad Actual

    Evolución de Pruebas de Software: De Turing a la Calidad Actual

    02:16 min
  • 4
    Preparación para pruebas de proyectos Vue con NPM y Vue Test Utils

    Preparación para pruebas de proyectos Vue con NPM y Vue Test Utils

    01:11 min

Entendiendo las pruebas

  • 5
    Pruebas de Entradas y Salidas en Componentes Vue

    Pruebas de Entradas y Salidas en Componentes Vue

    01:44 min

Herramientas de desarrollo

  • 6
    Pruebas unitarias en Vue con Test Utils: Introducción práctica

    Pruebas unitarias en Vue con Test Utils: Introducción práctica

    02:51 min
  • 7
    Pruebas unitarias con Jest: detección de anomalías y defectos

    Pruebas unitarias con Jest: detección de anomalías y defectos

    03:55 min

Desarrollo de pruebas

  • 8
    Aplicar TDD en Vue: Desarrollo y Pruebas de Funcionalidades

    Aplicar TDD en Vue: Desarrollo y Pruebas de Funcionalidades

    02:15 min
  • 9
    Pruebas de Software con Mocking en Aplicaciones de JavaScript

    Pruebas de Software con Mocking en Aplicaciones de JavaScript

    03:05 min
  • 10
    Pruebas Unitarias con Jest y Vue Test Utils

    Pruebas Unitarias con Jest y Vue Test Utils

    04:42 min
  • 11
    Pruebas Unitarias y Asíncronas en Vue con $nextTick

    Pruebas Unitarias y Asíncronas en Vue con $nextTick

    03:09 min

Tips y buenas prácticas

  • 12
    Pruebas Unitarias y Mocking en Vue con Jest

    Pruebas Unitarias y Mocking en Vue con Jest

    02:38 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Antes de comenzar con el curso es muy importante repasar el concepto de pruebas, esto para lograr entender mejor qué es lo que estamos haciendo y porqué lo hacemos de esa manera.

      Imaginemos el siguiente escenario:

      Tenemos un restaurante que hace platillos con huevos

      clase2.png

      Entre nuestros platillos están:

      • Omelettes de espinacas

      • Huevos revueltos con tocino

      • Huevos estrellados con arroz

      Dicho esto, podemos suponer dos cosas, que sólo nos alcanza para huevos o que somos muy buenos haciendo huevos.

      Partamos de la segunda opción. Si somos muy buenos haciendo huevos significa que todos los aspectos de mis platillos con huevo tienen una calidad superior garantizada.

      Justamente eso es lo que hacemos en el desarrollo de software. Al momento de hacer un proyecto, estamos acatando requerimientos en específico ( puede ser un restaurante que solo haga platillos con huevo ) y con herramientas en específico.

      Es nuestro deber asegurar la calidad de nuestro código y de nuestra solución. La manera en que nosotros hacemos eso es mediante las pruebas.

      Vamos a hacer dos tipos de pruebas que van a garantizar que cumplas con todos los requisitos para ser un crack en la calidad de tu código.

      Pruebas unitarias

      clase2-4.png

      Regresando al escenario del restaurante, para hacer un buen omelette necesito si o si huevos, y huevos en buen estado, no podridos ni rotos.

      Así que lo primero que hago para garantizar la calidad de mi omelette, es revisar que mis huevos pasen el estándar de calidad que requiero.

      En código nuestros huevos son todas las piezas atómicas de código que tenemos, e.g.

      • Una función

      • Un evento

      • Un botón

      • etc.

      Y el hacer pruebas unitarias involucra probar individualmente que estos módulos cumplan con su función bajo los estándares, si te estás preguntando cuáles son los estándares, no te preocupes, en un momento los explicaremos.

      Pruebas de integración

      clase2-5.png

      Las pruebas de integración serán nuestro omelette de espinacas.

      Al ya haber probado que nuestros huevos están en buenas condiciones, al igual que la espinaca, pasamos a integrarlos y formar un omelette.

      Las pruebas de integración involucran procesos y no piezas atómicas de código.

      Imagínate que al hacer el omelette nos damos cuenta de que el huevo que estamos usando es de codorniz y que tenemos más de 10kg de espinaca.

      Si lo viéramos desde la perspectiva de las pruebas unitarias, tanto el huevo como la espinaca pasaron las pruebas, pero al momento de integrarlo para el proceso final, no tienen realmente sentido y generan fallos en nuestro sistema

      En código se puede traducir a la forma en que una funcionalidad influye en el proceso completo de una aplicación; puede que nuestro código funcione sobre eventos. El tener pruebas de integración, garantiza que cuando lancemos esos eventos, no se rompa nada de nuestro código.

      Es muy fácil pasar por alto estas pruebas cuando no se tiene el panorama completo de nuestra aplicación, es por ello que como buenos desarrolladores debemos saber que es lo que nuestro código hace a todo el sistema, no solamente quedarnos con que nuestra función sirva.

      Estándares

      estand.png

      Hay varias instituciones que marcan estándares de cómo se deben crear y documentar las pruebas, entre el más usado es el IEEE Std 1008, Software Unit Testing, si quieres más información de este estándar puedes ingresar a este link, pero hay algo más que pauta el estándar de tu código, y es el cliente.

      Realmente, la calidad de tu código y de tus procesos se diseñan pensando en resolver los requerimientos de los clientes. Ojo, tus clientes no necesariamente son los usuarios finales, en muchos casos son tus lideres de proyecto.

      Pongamos un último ejemplo del restaurante, supongamos que aparte de ser fan de los huevos, eres fan de la pimienta, pero resulta que tu lider administrativo te comenta que la pimienta ha subido de precio exorbitantemente, por lo cual ya no podemos ponerle mucha pimienta.

      De esa manera, cambiaron los estándares de calidad de mi producto, no por una decisión de los clientes finales, sino más bien por una de mi lider administrativo.


      Hablando técnicamente los requerimientos de los programas cambian constantemente y más en la actualidad con tantas formas de trabajo ágiles, un día nuestro estándar de calidad puede ser que nuestro código pese 400 KB y el siguiente mes baja a 300 KB, por lo cual es super importante tener en cuenta el proceso de testing desde etapas tempranas del diseño de un proyecto.

      Y a final de todo, lo que estamos generando es tener calidad en el desarrollo de nuestro software y eso nos va a ayudar a ser mejores desarrolladores.

      En la siguiente clase ahondaremos más en la historia y el impacto de las pruebas en nuestro mundo actual.

      Pon en los comentarios, algún otro ejemplo que se te venga a la mente sobre pruebas unitarias y de integración en tu día a día.

      Comentarios

      Jose Daniel Barría Reyes

      Jose Daniel Barría Reyes

      student•
      hace 6 años
      Manuel Ojeda

      Manuel Ojeda

      student•
      hace 6 años
      Carlos Eduardo Gomez García

      Carlos Eduardo Gomez García

      teacher•
      hace 6 años
      Gerardo Ruiz

      Gerardo Ruiz

      student•
      hace 6 años
      Jovany Diego

      Jovany Diego

      student•
      hace 5 años
      Sergio Guzmán Mayorga

      Sergio Guzmán Mayorga

      student•
      hace 5 años

      Se me ocurre en una banda musical, cuando un integrante practica la cancion seria la prueba unitaria. Si logra tocarla de principio a fin habras pasado tu prueba unitaria. Luego viene la prueba de integracion, tocar con los demas musicos la pieza de principio a fin seria la prueba de integracion. Me encanta la musica y soy musico!

      Realmente no hago pruebas de ningún tipo pero usando el tenor de ellos puedo decir que hago unit testing frecuentemente de manera que creo una función y me aseguro que haga lo que tenga que hacer y al hacer click en mi botón de pruebas la función se llame adecuadamente.

      Y mi prueba de integración al ver que todo funcione en orden en conjunto.

      Vale, en resumen, las pruebas unitarias son las pruebas que me permiten probar las funcionalidades específicas de mi código, y las pruebas de integración son las que me permiten probar que todas esas funciones en conjunto hagan lo que yo necesito que mi aplicación haga.

      Y nuestro código se rige en estándares, que son básicamente las reglas que me dicen cómo tener un código más prolijo y aumentan la calidad de mi código incluso pudiendo hacer que pese menos, y el testing me ayudará a no romper nada en mi aplicación mientras aplico esos estándares ya que constantemente estaré mejorando mi código y necesito una forma de asegurar que nada se romperá (El testing):D!

      Siento que un error de integración clásico, es cuando los clientes ponen formularios de registro tremendamente extensos, que luego son costosos de administrar, y que se vuelven una carga durante todo el proceso de desarrollo cuando quieren volver atrás y cambiar ese formato por uno nuevo, generando un montón de errores de arrastre en el proceso.

      un caso sencillo seria simlpe login donde hay que validar que el campo de usuario y cotnrasena no esten vacios y sean caracteres aceptables para ambos campos que podamos ver esos campos que tengamos el boton de login

      Lo clásico es que le pasa al sistema cuando algo no existe, digamos si hacemos omelette con espinaca pero no hay huevos. Siempre es necesario probar esos edge cases que nadie se espera