Nuestra recomendación es que primero revises las katas de Programación Orientada a Objetos (OOP) y luego avances a conceptos más complejos de testing. Una vez que hayas profundizado en estos conceptos, comienza con la aplicación de las técnicas de refactorización que te presentamos a continuación.
Vas a encontrar un listado de katas con un cierto nivel de dificultad y un link en cada una de ellas que te va a llevar a una explicación detallada y el ejercicio resuelto.
En cada link de cada kata encontrarás una introducción como contexto y seguidamente los detalles que necesitas para poder ejecutarla. Y recuerda: la mejor forma de aprender es practicando. ¿Empezamos?
Tennis Kata: Imagina que estás haciendo una Code review y debes identificar los code smells y cuales serían sus correctas abstracciones. Revisa una introducción y explicación a la Tennis kata de la propia voz de su autora.
Iteración 1: Nivel 1.
Iteración 2: Nivel 2. Abstrae los conceptos en objetos que encapsulen la lógica de la kata.
Iteración 3: Nivel 3. Revierte los cambios cuando un test falle
Import-User-Kata
Iteración 1: Crea un setup para poder hacer test de tú kata, identifica los code smells, y crea un test [Golden master]
El objetivo es el setup, no resolver la kata.
Iteración 2: Con los test anteriormente creados resuelve la kata.
Gilded Rose: Trabajar con código legacy.
Iteración 1: No tienes que hacer los test, utiliza los que ya tiene la kata por defecto.
Iteración 2: Aplicación de object calisthenic.
Iteración 3: Empezar a trabajar en Tests de Caracterización.
Iteración 4: Aplica cambios en paralelo.
Beverages Prices Kata: Refactoriza una kata con una herencia dolorosa
Iteration 1: Utiliza parallel changes.
Parrot Refactoring Kata
Iteración 1: Identifica el codesmell e intenta resolverlos.
Iteración 2: Refactorización con Object calisthenic.
Smelly Mars Rover: Kata diseñada para que refactoricemos los code smell que vamos viendo pudiendo aplicar Parallel changes:
Iteración 1: Identifica los smells y refactoriza en orden de importancia según tu punto de vista.
Iteración 2: Aplicación de object calisthenic
Iteración 3: Utiliza parallel changes. Utiliza la Herencia para mover la lógica hacia donde te lleva el código (el código te habla).
Al terminar mira como otros han resuelto este kata y finalmente aplica los cambios tu mismo (no siguiendo el vídeo, eso seria hacer trampa y engañarte a ti mismo).
Smelly Tic Tac Toe: Kata de refuerzo si se quiere trabajar sobre un dominio conocido.
Parallel Change Kata: Aprende como realizar refactors sin romper ningún test o error de compilación
BugZero Kata: Soluciona todos los bugs y cúbrelos con tests.
Racing Car Katas: Kata para trabajar SOLID. La idea es aprender qué principio SOLID no se está cumpliendo y cómo resolverlo.
Iteración 1: TirePressureMonitoringSystem exercise
Iteración 2: UnicodeFileToHtmlTextConverter exercise
Iteración 3: TicketDispenser exercise
Iteración 4: TelemetrySystem exercise
Iteración 5: Leaderboard exercise
TripService: Trabaja en ramas superficiales (cubre el código de prueba y luego refactoriza los cambios).
Aplica la técnica de costuras.
Trabaja con código legado añadiendo primero la cobertura con test que resuelvan poco a poco los casos de uso que vas entendiendo.
Comprende porqué el Singleton puede hacer mucho daño a tú testabilidad.
Refactoring Kata Lift Pass Pricing
Iteracion 1: Cubre todo de tests, utilizando tests de caracterización y prepara tu estrategia de testing de manera consciente y trabajando en la pirámide de test.
Iteracion 2: Evoluciona la arquitectura de la aplicación a una arquitectura hexagonal.