Trabajando con código legado by Michael Feathers
¿Qué es código legacy?
El código legacy es simplemente código sin tests.
Beneficios de los tests
El comportamiento es clave para entender los beneficios del testing:
El comportamiento es lo más importante del software. Los usuarios dependen de él. Les gusta que añadamos funcionalidad (si es lo que querían), pero si cambiamos o rompemos comportamiento del que dependen, pierden la confianza.
Cómo implementar tests en bases de código legacy
Para cambiar código necesitas tests. Pero para añadir tests muchas veces tienes que cambiar código.
El enfoque sugerido:
- Identificar puntos de cambio.
- Encontrar puntos de test.
- Romper dependencias.
- Escribir tests.
- Hacer cambios y refactorizar.
Un término útil es “costura” (seam): un lugar donde puedes cambiar el comportamiento sin editar ese código directamente. Como la costura en la ropa, donde dos partes se unen. En software, estos lugares suelen tener interfaces bien definidas. Puedes aprovecharlos para cambiar implementaciones con inyección de dependencias o mocking en tests.