Descuento por lanzamiento Curso de arquitectura

Shape Shape

Curso

Shape
Shape
Shape Shape
Courses Details Testing

Testing Efectivo en Java

Author
Domingo Suarez 12,433 Estudiantes entrenados
MercadoPago

Descripción

El Curso Testing Efectivo en Java está diseñado para desarrolladores que buscan dominar las mejores prácticas de pruebas en aplicaciones Java modernas. A lo largo del programa, los participantes aprenderán a implementar pruebas unitarias robustas con JUnit, técnicas de mocking efectivas con Mockito y pruebas expresivas basadas en especificaciones usando Spock. Además, explorarán el uso de Testcontainers para entornos de integración realistas, validarán la arquitectura del software con ArchUnit y aplicarán estrategias de testing que aseguran calidad en cada etapa del desarrollo.

Este curso no solo se enfoca en la parte técnica, sino que también proporciona una visión integral de cómo diseñar una estrategia de testing eficiente, integrarla en pipelines CI/CD y lograr sistemas escalables y confiables. Incluye prácticas con herramientas líderes de la industria, casos de estudio de fallos reales y un proyecto final que cubre todos los niveles de testing, desde la unidad hasta la arquitectura, garantizando que los alumnos adquieran habilidades aplicables en entornos de trabajo exigentes.

Puntos Clave

  1. Testing Unitario con JUnit 5: Aprenderás a diseñar pruebas unitarias efectivas que validan el comportamiento aislado de tus clases y métodos, aplicando buenas prácticas de JUnit.

  2. Mocking Efectivo con Mockito : Descubrirás cómo simular dependencias externas y controlar el comportamiento de los objetos, permitiendo que tus pruebas sean confiables y predecibles.

  3. Pruebas Basadas en Especificaciones con Spock : Utilizarás Spock para crear pruebas legibles, expresivas y mantenibles, aprovechando su enfoque declarativo ideal para TDD y BDD.

  4. Testing en Contexto con Spring Boot Test : Validarás componentes reales de tu aplicación Spring en un entorno controlado, aplicando pruebas de integración eficientes.

  5. Entornos Realistas con Testcontainers : Configurarás contenedores Docker desde tus pruebas para simular bases de datos, colas y servicios, reproduciendo escenarios cercanos a producción.

  6. Validación de Arquitectura con ArchUnit : Implementarás reglas automáticas que garantizan la integridad de la arquitectura, evitando dependencias indebidas y degradación estructural.

  7. Estrategias de Calidad y Cobertura : Adoptarás un enfoque profesional para diseñar tu pirámide de testing, maximizando la cobertura útil sin generar tests frágiles o redundantes.

  8. Automatización en CI/CD : Integrarás tus pruebas en pipelines de integración continua, ejecutando validaciones automáticas en cada cambio y generando reportes de calidad.

Temario


Testing Efectivo en Java

Introducción

  1. Introducción al Testing en Java

    • ¿Por qué hacer testing?
    • Principios de pruebas de software
    • Tipos de pruebas: unitarias, integración, E2E
    • Pirámide de testing
    • Herramientas y dependencias comunes: JUnit, Mockito, etc.

Pruebas Unitarias con JUnit 5

  1. JUnit Moderno

    • Estructura de un test con JUnit 5
    • Ciclo de vida de pruebas
    • Uso de anotaciones: @Test, @BeforeEach, etc.
    • Assertions más comunes
    • Pruebas parametrizadas con @ParameterizedTest
    • Extensiones con @ExtendWith
    • TDD y buenas prácticas

Interaction Based Testing

  1. Mocking con Mockito

    • Mocks, stubs y spies
    • Uso de `@Mock`, `@InjectMocks` y `@Captor`
    • Simulación de respuestas y verificación
    • Evitar over-mocking
    • Mocking de clases final y métodos estáticos

Spock Framework

  1. Testing Elegante con Spock

    • Sintaxis básica de Groovy
    • Bloques `given`, `when`, `then`, `expect`
    • Testing parametrizado con `where`
    • Comparación Spock vs JUnit
    • Ventajas expresivas en pruebas

Pruebas de Integración

  1. Testing en Contexto (Spring)

    • Test de repositorios (JPA, JDBC)
    • Test de servicios con contexto Spring
    • Uso de perfiles de testing y `@TestConfiguration`
    • Mocking de beans con `@MockBean`
    • Inyección de dependencias en tests

Testcontainers

  1. Testcontainers para entornos realistas

    • Conceptos de testeo con contenedores
    • Introducción a Testcontainers
    • Dependencias y configuración en Maven/Gradle
    • PostgreSQL, Kafka, Redis, Mongo como contenedores
    • Reutilización de contenedores en pipelines

Pruebas de Arquitectura con ArchUnit

  1. Testing de Arquitectura con ArchUnit

    • Conceptos de validación arquitectónica
    • Reglas predefinidas vs personalizadas
    • Validar capas, paquetes y dependencias
    • Integración con el ciclo de build

End-to-End Testing

    • MockMvc y WebTestClient
    • Simulación de flujos de usuario
    • Escenarios críticos
    • Tests con REST Assured (opcional)
    • Automatización de escenarios críticos

Buenas Prácticas y Estrategias de Testing

  1. Estrategia y Calidad

    • Cómo medir efectividad en testing
    • Métricas útiles vs irrelevantes
    • Coverage: métricas útiles y falsas seguridades
    • Detectar y evitar smell tests

CI/CD

  1. Integración con CI/CD

    • Ejecutar pruebas en GitHub Actions / GitLab CI
    • Reportes de cobertura (JaCoCo, Sonar)
    • Pruebas paralelas, build optimizado y performance en pipelines

Este curso ofrece una formación completa en el diseño de testing de aplicaciones Java utilizando herramientas modernas y enfoques avanzados, proporcionando a los participantes las habilidades necesarias para construir sistemas robustos y comprobables.

Fechas

El curso durará 4 semanas con un total de 20 horas efectivas, con 3 sesiones a la semana de 5 horas


  • 05 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 07 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 09 de agosto de 2025, 9:00a.m.-11:00a.m.

  • 12 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 14 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 16 de agosto de 2025, 9:00a.m.-11:00a.m.

  • 19 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 21 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 23 de agosto de 2025, 9:00a.m.-11:00a.m.

  • 26 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 28 de agosto de 2025, 7:30p.m.-9:00p.m.
  • 30 de agosto de 2025, 9:00a.m.-11:00a.m.

Requisitos

Conocimientos:

  • Conocimientos Básicos de Java
  • Experiencia en desarrollo de servicios web.
  • Experiencia Básica en Desarrollo de Software
  • Conocimientos Elementales de Maven o Gradle
  • Conceptos de Programación Orientada a Objetos (POO)
  • Motivación por Aprender Buenas Prácticas
  • Entorno de Desarrollo Funcional

Equipo de computo:

  • Al menos 8GB de RAM (16GB deseable)
  • Linux con kernel 3.10 o superior (Deseable Ubuntu, CentOS)
  • MacOS
  • Puede ser usado Windows, pero revisar requerimientos detallados en https://docs.docker.com/desktop/install/windows-install/#system-requirements

Course Instructor:

Author

Domingo Suarez

Java Champion