CursosEmpresasBlogLiveConfPrecios

Pruebas de caja negra

Clase 25 de 31 • Curso de Introducción al Pensamiento Computacional con Python

Clase anteriorSiguiente clase

Contenido del curso

Introducción al pensamiento computacional
  • 1
    Introducción al pensamiento computacional

    Introducción al pensamiento computacional

    02:26
  • 2
    Introducción al cómputo

    Introducción al cómputo

    15:39
  • 3
    Introducción a los lenguajes de programación

    Introducción a los lenguajes de programación

    09:25
Introducción a Python
  • 4

    Preparación de tu computadora

    01:16
  • 5
    Elementos básicos de Python

    Elementos básicos de Python

    10:38
  • 6
    Asignación de variables

    Asignación de variables

    06:06
  • 7
    Cadenas y entradas

    Cadenas y entradas

    14:12
  • 8
    Programas ramificados

    Programas ramificados

    11:37
  • 9
    Iteraciones

    Iteraciones

    09:12
  • 10

    Bucles for

    03:48
Programas numéricos
  • 11

    Representación de flotantes

    03:45
  • 12
    Enumeración exhaustiva

    Enumeración exhaustiva

    07:21
  • 13
    Aproximación de soluciones

    Aproximación de soluciones

    12:45
  • 14
    Búsqueda Binaria

    Búsqueda Binaria

    10:34
Funciones, alcance y abstracción
  • 15
    Funciones y abstracción

    Funciones y abstracción

    09:12
  • 16
    Scope o Alcance

    Scope o Alcance

    10:00
  • 17
    Especificaciones del código

    Especificaciones del código

    05:26
  • 18
    Recursividad

    Recursividad

    11:07
  • 19

    Fibonnacci y la Recursividad

    01:10
Tipos estructurados, mutabilidad y funciones de alto nivel
  • 20

    Funciones como objetos

    01:40
  • 21
    Tuplas

    Tuplas

    08:09
  • 22
    Rangos

    Rangos

    07:35
  • 23
    Listas y mutabilidad

    Listas y mutabilidad

    14:00
  • 24
    Diccionarios

    Diccionarios

    06:56
Pruebas y debugging
  • 25
    Pruebas de caja negra

    Pruebas de caja negra

    11:50
  • 26
    Pruebas de caja de cristal

    Pruebas de caja de cristal

    07:46
  • 27
    Debugging

    Debugging

    09:56
Excepciones y afirmaciones
  • 28
    Manejo de excepciones

    Manejo de excepciones

    07:05
  • 29

    Excepciones y control de flujo

    01:26
  • 30
    Afirmaciones

    Afirmaciones

    04:36
  • 31
    Conclusiones

    Conclusiones

    02:33
    René Sanchez

    René Sanchez

    student•
    hace 6 años

    ❤

    import unittest def suma(num1, num2): # Si hacemos un cambio en el return donde queremos obtener el numero absoluto abs(num1) esto provocara un error en el test para sumar negativos, al hacer un cambio y tener casos de prueba para validar el funcionamiento correcto esto provoca que lo solucionemos inmediatamente conjunto a prever el desconocimiento de donde ocurre o ocurra este error return num1 + num2 # Esta creacion del objeto crea automaticamente los testeo dentro del modulo de python class CajaNegraTest(unittest.TestCase): # Las pruebas desde funciones def test_suma_dos_positivos(self): num_1 = 10 num_2 = 5 resultado = suma(num_1, num_2) # Esto funciona asi: # (valor, valorQuerido) = valor == valorQuerido (Nos devuelve un true o false) self.assertEqual(resultado, 15) # Esto funciona asi: # (valor, valorQuerido) = valor > valorQuerido (Nos devuelve un true o false) self.assertGreater(resultado, 14) # Esto funciona asi: # (valor, valorQuerido) = valor >= valorQuerido (Nos devuelve un true o false) self.assertGreaterEqual(resultado, 15) # Esto funciona asi: # (valor, valorQuerido) = valor < valorQuerido (Nos devuelve un true o false) self.assertLess(resultado, 16) # Esto funciona asi: # (valor, valorQuerido) = valor <= valorQuerido (Nos devuelve un true o false) self.assertLessEqual(resultado, 15) def test_suma_dos_negativos(self): num_1 = -10 num_2 = -7 resultado = suma(num_1, num_2) self.assertEqual(resultado, -17) if __name__ == '__main__': unittest.main()
      Felipe Cortés

      Felipe Cortés

      student•
      hace 6 años

      Excelente para complementar

      Javier Roma Corrales

      Javier Roma Corrales

      student•
      hace 6 años

      Gracias a ti y a compañeros como tu que aclaran ciertas cosas.

    Karl Behrens Gil

    Karl Behrens Gil

    student•
    hace 5 años

    Pruebas de caja negra

    Las pruebas de caja negra se basan en la especificación de la función o el programa, aquí debemos probas sus inputs y validar los outputs. Se llama caja negra por que no necesitamos saber necesariamente los procesos internos del programa, solo contrastar sus resultados.

    Estos tipos de pruebas son muy importantes para 2 tipos de test:

    • Unit testing: se realizan pruebas a cada uno de los módulos para determinar su correcto funcionamiento.

    • Integration testing: es cuando vemos que todos los módulos funcionan entre sí.

    Es una buena práctica realizar los test antes de crear tus lineas de código, esto es por que cualquier cambio que se realice a futuro los test estaran incorporados para determinar si los cambios cumplen lo esperado.

    En Python existe la posibilidad de realizar test gracias a la libreria unittest. Puede ser que el siguiente código no lo entiendas en su totalidad, pero en una próxima guía detallare mas el tema de clases en programación. Por ahora te mostrare como se realizan estos test.

    """Importamos la libreria de unittest.""" import unittest """Creamos una clase para los test, en este caso se llamara CajaNegraTest, y como parámetro.""" class CajaNegraTest(unittest.TestCase): """Definimos la funcion que generara el test.""" def test_suma_dos_positivos(self): "Para nuestro ejemplo usaremos 2 parametros.""" num_1 = 10 num_2 = 5 """Y dentro de la variable resultado guardaremos lo que nos retornara la función suma.""" resultado = suma(num_1, num_2) """Y para terminar definimos la variable resultado y cual es el valor esperado.""" self.assertEqual(resultado, 15) """Para definir el módulo de Python escribimos lo siguiente.""" if __name__ == '__main__': unittest.main()

    Luego de escribir nuestro archivo iremos a la consola y ejecutaremos el test

    python3 caja_negra.py E # Obtenemos un error en nuestro test ====================================================================== ERROR: test_suma_dos_positivos (__main__.CajaNegraTest) # Veremos aqui el test con error ---------------------------------------------------------------------- Traceback (most recent call last): File "caja_negra.py", line 9, in test_suma_dos_positivos resultado = suma(num_1, num_2) NameError: name 'suma' is not defined # La función suma no esta definida ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (errors=1)

    Como vimos en el recuadro anterior no definimos la función suma, para ello vamos a crearla.

    import unittest def suma(num_1, num_2): return num_1 + num_2 class CajaNegraTest(unittest.TestCase): def test_suma_dos_positivos(self): num_1 = 10 num_2 = 5 resultado = suma(num_1, num_2) self.assertEqual(resultado, 15) if __name__ == '__main__': unittest.main()

    Ahora ejecutaremos denuevo nuestro test en la terminal.

    python3 caja_negra.py . ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
      David Vergara

      David Vergara

      student•
      hace 5 años

      Gracias por los apuntes

      Jaime Jesús González Muñoz

      Jaime Jesús González Muñoz

      student•
      hace 5 años

      Gracias por los apuntes

    Diego Gabriel Barrionuevo

    Diego Gabriel Barrionuevo

    student•
    hace 6 años

    cuando nosotros estamos "fumando dos numeros" 04:05 min

      José María Rodríguez García

      José María Rodríguez García

      teacher•
      hace 5 años

      Jajajajajja le pause y me empece a reir.....

      Sebastian Cifuentes

      Sebastian Cifuentes

      student•
      hace 5 años

      Jajajaja lo devolví para saber si yo había escuchado mal.

    Misael Yered Ruiz Zamora

    Misael Yered Ruiz Zamora

    student•
    hace 5 años

    NOTA: El nombre de los métodos debe empezar con TEST para que sean reconocidos (como en test_suma_dos_positivos) de lo contrario unittest no va a reconocer nada. A mi no me funcionaba nada y me dí cuenta que había escrito TEXT en vez de TEST.

      Aaron Joel Limachi Quispe

      Aaron Joel Limachi Quispe

      student•
      hace 5 años

      No encontraba mi error, gracias por tu aporte

      Juan David Cepeda López

      Juan David Cepeda López

      student•
      hace 5 años

      Nunca pense en eso, lei este comentario, probe cambiando la palabra test de las funciones, y al ejecutarlo quede como :O :O Increíble, sin la palabra test, no funciona.

    Fredy Alberto Orozco Loaiza

    Fredy Alberto Orozco Loaiza

    student•
    hace 6 años

    Sinceramente si me voy a dedicar al mundo digital

      Axel Yaguana

      Axel Yaguana

      Team Platzi•
      hace 5 años

      x2 Pasaré de ingeniería civil a data science.

      Alejandro Picado Brenes

      Alejandro Picado Brenes

      student•
      hace 5 años

      Adelante, muchos éxitos

    Daniel Guarín García

    Daniel Guarín García

    student•
    hace 6 años

    La verdad se entiende muy poco el tema de class, import, self. Sin embargo, el contexto de caja negra se logra entender, espero que mas adelante se profundice en esos temas. Como recomendación, podrían colocar una especie de "favoritos", para que uno pueda tener un marcador de vídeos que considera importante y pueda ingresar fácilmente a estos.

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 5 años

      El tema de class y self lo verás en programación orientada a objetos. Import es como decirle a python: Oye, voy a necesitar esa herramienta para este programa, úsala por favor

      Oliver Piña

      Oliver Piña

      student•
      hace 5 años

      Con import, primero hay que recordar que es un modulo. Los modulos son divisiones de programas "largos", permiten una organizacion y division logica del codigo. Ahora, para poder utilizar ese programa se utiliza la palabra clave "import" seguido del nombre del modulo. ejemp: Import time

    Manuel Alejandro Hermoso

    Manuel Alejandro Hermoso

    student•
    hace 5 años

    Si todavía te estás preguntando porque se usa

    <self>

    y no quieres esperar para entenderlo tienes que mirar este vídeo:

    https://youtu.be/ic6wdPxcHc0

      Jorge Luis Tancara Nina

      Jorge Luis Tancara Nina

      student•
      hace 5 años

      In english

      Miguel Angel Reyes Moreno

      Miguel Angel Reyes Moreno

      student•
      hace 5 años

      Es un apuntador para la variable en la que mandemos a llamar un método definido en la clase.

    Leonardo Matías Windey

    Leonardo Matías Windey

    student•
    hace 5 años

    Observación: Si la función a la que le realizaremos la prueba, no comienza con la palabra test no contará como tal, por ende, no figurará en consola al ejecutar nuestro programa. Por ej:

    class CajaNegraTest (unittest.TestCase): def test_suma (self): ... def test_operacion_mat (self): ... def test_nombre (self): ...

    Espero esta observación les sea de utilidad.

      Cristhian Julian Astoquilca Romero

      Cristhian Julian Astoquilca Romero

      student•
      hace 5 años

      Tienes razón :0 . Gracias por el aporte. Ahora queda averiguar el por qué :) .

      Leonardo Matías Windey

      Leonardo Matías Windey

      student•
      hace 5 años

      Porque es una palabra reservada del lenguaje, está dentro de su biblioteca.

    Juan Rodriguez

    Juan Rodriguez

    student•
    hace 6 años

    Lo tendré en cuenta para cuando me haya casado y me vaya de luna de miel no vaya a joder mi lindo codigo de hoy.

    Esteban Ramírez García

    Esteban Ramírez García

    student•
    hace 5 años

    Aqui dejo una tabla extraída de la documentación de python donde se explica esencialmente que evalúan los métodos de este framework de unit testing

    Screenshot (12).png

    Andrés Felipe Díaz Rodríguez

    Andrés Felipe Díaz Rodríguez

    student•
    hace 6 años

    hola quiero aclarar que hice el programa y note que si no llamamos los métodos con test al inicio la clase no los incluye en el test.

    Josué Alfredo Tomas Machaca Fajardo

    Josué Alfredo Tomas Machaca Fajardo

    student•
    hace 6 años

    Tengo que revisar este contenido en el futuro.

    Miguel Torres

    Miguel Torres

    student•
    hace 6 años

    He visto la verdad! Ahora soy NEO en la matrix

    Muchas cosas de este curso son así. :O

    José Vásquez

    José Vásquez

    student•
    hace 5 años

    Para las funciones que no retornan un valor, como se realizan las pruebas?

      Josue Noha Valdivia

      Josue Noha Valdivia

      student•
      hace 5 años

      ummh interesante dejare mi comentario aqui y esperare las respuestas xD... Lo unico que se me ocurre es testearlas manualmente en puntos criticos (donde pueda que se genere un error)

      José Vásquez

      José Vásquez

      student•
      hace 5 años

      Yo creo que se hacen las pruebas de cristal, ya que al principio dice que las pruebas cajas negras son para validar inputs y outputs. Pero lo que me llena un poco de dudas es que por ejemplo, una forma de programación defensiva es validar que los output tengan el tipo correcto y si no se levanta un excepción.

    Luis Ruiz Ramos

    Luis Ruiz Ramos

    student•
    hace 6 años

    Entendí muy poco de lo que tiene el código pero la explicación está perfecta.

    Jose Antonio Rojas Ollarves

    Jose Antonio Rojas Ollarves

    student•
    hace 5 años

    self:


    Es un parametro de referencia a la instancia actual, de la clase y se usa para acceder a las variables que pertenecern a la clase. "self" Es simplemente un estandar puedes llamarlo como gustes, pero tiene que ser el primer parametro en cualquier funcion de la clase, ejemplo:


    class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(abc): print("Hello my name is " + abc.name) p1 = Person("Jose", 20) p1.myfunc() -----------

    Puedes cambiarle el nombre a self, como por ejemplo objeto y dara el mismo resultado, pero es un standar que se utiliza para hacer el codigo mas limpio y legible

      Marcos Monteverde

      Marcos Monteverde

      student•
      hace 3 años

      Gracias!!

    Melido Enrique Bello Navarro

    Melido Enrique Bello Navarro

    student•
    hace 5 años

    Las pruebas de caja negra son una chuleria

    Aprendizaje del video

    #Caja negra #¿Qué es la prueba de caja negra? #Es la forma para que un module funcione solo y en conjunto con otros modulos. #¿Qué se necesita para usar la prueba de caja negra? importar el unittest module y poner una clase con unittest.TestCase como parametro. #Definir la función que queremos probar. Y usar self.assertEqual(El valor de la funcion, El valor que queremos obtener). #Ya luego poner unittest.main() en un if __name__=='__main__' para inicializarlo. #Ejemplo: import unittest def suma(num_1, num_2): return num_1 + num_2 class CajaNegraTest(unittest.TestCase): def test_suma_dos_positivos(self): num_1 = 10 num_2 = 5 resultado = suma(num_1, num_2) self.assertEqual(resultado, 15) def test_suma_dos_negativos(self): num_1 = -10 num_2 = -5 resultado = suma(num_1, num_2) self.assertEqual(resultado, -15) if __name__=='__main__': unittest.main()

    Ejercicio personal:

    #Ejercicio Personal: Repetir el proceso de caja negra con modulus, una operación algo confusa para mi. Todo con el objetivo de obtener los valores primos de una lista y sumarlos. import unittest def lista(inicio, final): my_list = list(range(inicio, final+1)) #Esta es la forma usada anteriormente de crear una lista con 100 numeros. return my_list def filtrar_enteros(): enteros = [i for i in lista(int(input('El numero en el que empezará su lista: ')), int(input('El numero en que acabará su lista: '))) if i % 2 == 0] return enteros def sumar_lista(): empezar = 0 for i in filtrar_enteros(): empezar += i return empezar class CajaNegraTest(unittest.TestCase): def test_filtrar_valores_primos_de_una_lista(self): resultado = sumar_lista() print(resultado) self.assertEqual(resultado, resultado) if __name__=='__main__': unittest.main()
    Andres Troaños

    Andres Troaños

    student•
    hace 5 años

    Entonces, estos test son lo primero que se hace? y si todo sale bien, lo boro y continuo con mi código o en que momento puedo borrar esto ?

      Sebastian Cifuentes

      Sebastian Cifuentes

      student•
      hace 5 años

      Por lo que entiendó estas pruebas siempre deberían estar pero solamente en desarrollo, en producción no deberían de salir.

      María Fernanda Magallanes Z

      María Fernanda Magallanes Z

      student•
      hace 5 años

      Deberías tener los tests aparte. Generalmente estos test de caja negra los haces cuando programas con TDD, googlea sobre TDD, es súper interesante. Pero la idea no es borrar los test sino más bien tenerlos ahí por si después vas a actualizar algo pero no quieres dañar funcionalidades que ya sabes que funcionan y necesitas.

    Royer Guerrero Pinilla

    Royer Guerrero Pinilla

    student•
    hace 6 años

    Probablemente ya sepas que son los bugs (Errores) pero si quieres saber porque se le dice así bug y no error en este articulo lo explican Artículo sobre bug Bug literalmente traducido al español es Insecto 🐞

      Alejandro Picado Brenes

      Alejandro Picado Brenes

      student•
      hace 5 años

      Muy interesante

    Sebastián Andrade

    Sebastián Andrade

    student•
    hace 5 años

    Una pregunta a ver si entendí ¿debemos primero escribir la funcion "mal" aposta para ver los posibles errores que peude traer y poco a poco ir escribirendola "bien"?¿o fue solo el profesor para enseñarnos como muestra los errores el modulo?

      Aaron Joel Limachi Quispe

      Aaron Joel Limachi Quispe

      student•
      hace 5 años

      No entiendo que es "aposta" pero imagino que es similar a decir "a propósito". En ese sentido el profesor no se refería a hacer mal la función sino a ir mejorando de a poco hasta obtener los resultados esperados. En los ejemplos simples parece absurdo pero en proyectos más grandes cobra mayor sentido.

      Sebastián Andrade

      Sebastián Andrade

      student•
      hace 5 años

      Ah, ya entendi, gracias. Y si entendiste bien "aposta" significa a proposito xdd

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