CursosEmpresasBlogLiveConfPrecios

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

Clase 3 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

    01:03 min
  • 2

    Pruebas Unitarias e Integración en Desarrollo de Software

    03:29 min
  • 3

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

    Viendo ahora
  • 4

    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

    01:44 min

Herramientas de desarrollo

  • 6

    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

    03:55 min

Desarrollo de pruebas

  • 8

    Aplicar TDD en Vue: Desarrollo y Pruebas de Funcionalidades

    02:15 min
  • 9

    Pruebas de Software con Mocking en Aplicaciones de JavaScript

    03:05 min
  • 10

    Pruebas Unitarias con Jest y Vue Test Utils

    04:42 min
  • 11

    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

    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

      Para entender la importancia de agregar pruebas a un proyecto, debemos remontarnos tiempo atrás, cuando la industria del software apenas estaba iniciando.

      Era el año 1949 y una ilustre persona llamada Alan Turing, estaba discutiendo el cómo poder probar las falencias en una rutina. En ese entonces una rutina se veía algo como esto:

      descarga.png

      Y existía la práctica de debugging solamente para encontrar esas falencias. Se imaginan que tan difícil debió haber sido el encontrar donde está el error en este tipo de programas.

      Por lo cual, fue lógico que empezaran a buscar maneras de automatizar esas pruebas.

      De los primeros indicios de unit testing fue el paper Checking a Large Routine por Alan Turing, si tienen el tiempo para buscarlo y leerlo háganlo, es muy bueno.

      Historia de automatización del software

      Básicamente, la intención, en esos tiempos, era "buscar que el código funcione sin fallos, pero esto solamente nos aseguraba que corría el código y ya."

      “Las pruebas de software son el proceso de ejecutar un programa con la intención de encontrar errores” G.J. Myers.

      Entre 1957 y 1978, se añadió un nuevo concepto a las pruebas, que no era el debugging, sino el testing.

      Este nuevo concepto hace alusión a que el programa no solamente debe de funcionar, sino que debe de resolver la problemática planteada, eso quiere decir, que se tenía una lista de requerimientos que se debían de cumplir y se utilizaban las pruebas para esto.

      Estas pruebas se realizaban al final de los programas, después de haber terminado de hacerlo.

      apollo_1.jpg
      Código usado en el viaje a la luna en 1959, escrito por Margaret Hamilton.

      Se imaginan revisar ese código después de terminarlo, ¡Sería horrible!

      Afortunadamente a principios de 1980 se empezaron a crear programas para que hicieran esta parte. Debido a esto, cambió el panorama de las pruebas. Pasamos de buscar fallas en el código a revisar la calidad del código y de las diferentes implementaciones.

      “El objetivo general de las pruebas de software es confirmar la calidad de los sistemas software ejercitando sistemáticamente el software en unas circunstancias cuidadosamente controladas” E.F. Miller.

      Del año 1985 a la actualidad se entró en la etapa de prevención. La IEEE empezó a crear estándares para tener pruebas en diferentes partes del proceso de desarrollo de software.

      Esto hizo que se viera a las pruebas como una característica de la calidad de todo el proceso que involucra el desarrollo de proyecto de software.

      “Hacer pruebas significa comparar los resultados actuales con un estándar” Hutcheson, M.L.


      De todo lo anterior podemos concluir que realmente las pruebas son un proceso superimportante en la calidad de nuestro trabajo.

      El no tener pruebas en tu proyecto significa, no tener la calidad requerida para que sea considerado dentro del estándar de un buen proyecto de software.

      Así que la más grande diferencia entre no tener pruebas o si en tu código, es el no tener código de calidad o sí tenerlo.


      Siendo sinceros, no sabía que Alan Turing también había comenzado con esto, escribe en los comentarios si tú ya conocías esto, y si no, ¿qué te pareció?.

        Jose Daniel Barría Reyes

        Jose Daniel Barría Reyes

        student•
        hace 6 años

        Yo tampoco sabia que Alan Turing hacia eso. Supongo que luego de este curso, puedo presumirle a la gente que hago lo mismo que Alan Turing. Me parece super genial todo!

          Mikele Guedes

          Mikele Guedes

          student•
          hace 6 años

          jajaja "sabías que hago lo mismo que Alan Turing? pues sí" me encanta

          Te acuerdas del test de turing? que es más conocido com "captcha" para comprobar si eres un humano y no un robot. Pues ahí vemos que Turing ya hacia unos tests muy chéveres 😎👌

          Efrén Martínez Rodríguez

          Efrén Martínez Rodríguez

          student•
          hace 6 años

          Igual no sabia que Alan Turing hacia lo mismo :3

        Juan Esteban Galvis

        Juan Esteban Galvis

        student•
        hace 6 años

        Sabía el genio que fue Alan Turin y su aporte a la informática pero no al testing.

        Me gusto mucho y entendí que una cosa es hacer debugging para probar que el código corre y otra cosa es hacer testing para verificar si el resultado es el correcto. (Para mí, los errores más molestos en programación son los que no te sacan error, todo parece funcionar pero algo lo rompe sin dejar error).

        Carlos Eduardo Gomez García

        Carlos Eduardo Gomez García

        teacher•
        hace 5 años

        Interesante, entonces podemos decir que uno de los puntos importantes a la hora e revisar la calidad de un código es ver si este código tiene pruebas implementadas, algo así como los rubros para aprobar una materia, si no cumples cierto rubro, pierdes ese porcentaje.

        Algo importante que mencionan aquí es la parte de Estas pruebas se realizaban al final de los programas, después de haber terminado de hacerlo.

        Es interesante que en esa época se hicieran al final del programa, pero realmente si es tedioso tener que hacer las pruebas para el final del programa, afortunadamente existe el TDD que prácticamente nos obliga primero a programar las pruebas con la intención de generar errores y luego corregir esos errores con ayuda de las mismas pruebas, y una vez corregidos los errores, tratar de refactorizar el código sin afectar el resultado final y cumpliendo los estándares de buena calidad.

        Sin duda hacer testing es garantizar que tu código es de calidad, ¿Por qué? Simplemente porque al ver que tienes un sistema de testing implementado puedes darte cuenta que el código realmente hace lo que tiene que hacer, ya no es solo ver que el código funcione, sino que haga lo que debe hacer ^^!

          Esteban Javier Gold Muros

          Esteban Javier Gold Muros

          student•
          hace 5 años

          Lo que ayudan los test, es que si agregas código nuevo o lo modificas, siga haciendo lo que tenía que hacer, así te ahorras el estar debugueando

        Andres Miguel Hernandez Garcia

        Andres Miguel Hernandez Garcia

        student•
        hace 4 años

        Las imagenes no se ven @Platzi

        Juan Esteban Galvis

        Juan Esteban Galvis

        student•
        hace 6 años

        Se habla sobre el tema de las pruebas en el curso de buenas prácticas para escritura de código: https://platzi.com/clases/mejor-codigo/ (Spoiler, una recomendación puede ser escribir primero los test y luego empezar el desarrollo del programa)

          Esteban Javier Gold Muros

          Esteban Javier Gold Muros

          student•
          hace 5 años

          Si, es lo que dice TDD

        Natali Rodríguez

        Natali Rodríguez

        student•
        hace 4 años

        El no tener pruebas en tu proyecto significa, no tener la calidad..""

        Victor Matta Pereira

        Victor Matta Pereira

        student•
        hace 4 años

        Me parece fantástico todo lo que voy leyendo hasta ahora, solo una corrección: el viaje a la luna donde Hamilton hizo ruido, fue en 1969, y no en el 59. Saludos !

        Jose Barboza

        Jose Barboza

        student•
        hace 4 años

        calidad: testing

        Jose Orlando Parra Soto

        Jose Orlando Parra Soto

        student•
        hace 5 años

        no lo conocía, de verdad muy impresionante

        Luis Jose Torres Muñoz

        Luis Jose Torres Muñoz

        student•
        hace 5 años

        La verdad cada vez comprendo el valor de hacer test a tu codigo

        Gerardo Ruiz

        Gerardo Ruiz

        student•
        hace 6 años

        Me recordó a la crisis informática del año 2000, donde todos estaban en crisis por lo que pasaría jejeje

        Ariel Onoriaga

        Ariel Onoriaga

        student•
        hace 6 años

        Sinceramente lo poco que sabía sobre Alan Turing, es la tan famosa Maquina de Turing, la cual bueno, planteo los fundamentos de todo lo que conocemos hoy en día

        Juan Manuel Robledo

        Juan Manuel Robledo

        student•
        hace 5 años

        No sabia quien fue el inventor de las pruebas de código. Ahora se que Alan Turing lo fue.