Test Driven Development Avanzado

Duración: 20 horas



¿Conoces TDD, tomaste cursos, leíste libros pero no podés o no sabés como aplicarlo en tu trabajo?
¿Mantenés un sistema que está muy acoplado con la base de datos y crees que es imposible practicar TDD?
 ¿Tu sistema tiene muchos años y cada vez que cambias algo se rompe otra cosa?
¿Tenés que desarrollar un sistema muy complejo y no sabés cómo conviene aplicar TDD?
¡Entonces este curso es para vos!

El objetivo de este curso es que los asistentes aprendan a utilizar TDD en contextos complejos de desarrollo y mantenimiento de software (similares a los mencionados en la sección anterior). Este curso te ayudará a realizar TDD cuando estás manteniendo un sistema legacy, altamente acoplado y te dará técnicas y herramientas que aliviarán tu proceso de re-diseño indispensable en sistemas existentes.
También se verá cómo hacer TDD cuando se utilizan frameworks que imponen un diseño particular y modelo de desarrollo generalmente no pensado para hacer TDD y que dificultan su uso. Durante este curso veremos muchas técnicas de reingeniería de software que nos permitirán aplicar TDD en contextos adversos, como refactorings, re-diseño, selección de hot-spots, etc.
Al finalizar este curso estarás capacitado para aplicar TDD para el desarrollo y mantenimiento de sistemas complejos, altamente acoplados y con diseños no pensados para ser testeados. Manejarás técnicas de refactoring y diseño avanzadas y podrás tomar buenas decisiones de diseño que favorezcan la testeabilidad de tu sistema.

Temario
  • Repaso de Fundamentos de TDD
  • Repaso de conceptos de buen diseño (Cohesión y Acoplamiento)
  • Problemas de Sistemas existentes (Entropía en el diseño)
  • Cómo escribir tests mantenibles
  • Aplicación de TDD en sistemas existentes
  • Cómo testear con base de datos relacionales
  • Ejemplos concretos de aplicación de TDD en sistemas complejos
  • Impacto del Refactoring y cómo usarlo para realizar un desarrollo incremental
  • Los 10 mandamientos de TDD
  • Tests Smells

Refactorings:
  • Extract Method/Inline Method
  • Extract Variable/Inline Variable
  • Change Method Signature
  • Introduce Parameter/Add Parameter Object/Extract Class from Parameter
  • Convert local to field/Encapsulate Field
  • Rename method/Rename Class/Rename variable
  • Move method
  • Pull up/Push down
  • Extract Class/Introduce Interface / Superclass
  • Generalize declared Type

Encadenamiento de Refactorings:
  • Extract Variable+Entract Method+Inline
  • Encapsulate Field+Move
  • Extract Interface+Generalize declared type
  • Extract Parameter Object + Move
  • Extract Parameter Object + Generalize Declared Type

Resultado esperado
  • Los asistentes estarán capacitados para aplicar TDD bajo situaciones complejas de desarrollo
  • Los asistentes estarán capacitados para aplicar TDD a sistemas existentes sin “morir” en el intento

Que no cubre
  • Conceptos particulares sobre los distintos tipos de testing
  • Uso de algún lenguaje de programación particular

Pre-requisitos
Haber realizado el curso Construcción de Software Robusto con TDD o conocimientos acorde a lo presentado en dicho curso

Audiencia
Programadores, Diseñadores, Arquitectos

Cursos relacionados

Lenguajes de programación

Smalltalk - Java

Estas empresas se capacitaron con nosotros

Capacitate con nosotros