¿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.
¿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