Outside-in TDD
La metodología outside-in TDD intenta potenciar el carácter comunicativo de la programación orientada a objetos, poniendo énfasis en los mensajes entre objetos colaboradores y prestando atención al diseño del sistema.
Para ello, comienza desde el exterior del mismo, creando un test de aceptación que describe lo que se va a desarrollar y estableciendo un doble ciclo en el que vamos alternando entre el nivel de aceptación y el unitario. En el nivel unitario se diseña la colaboración entre objetos, decidiendo la atribución de responsabilidades en cada fase de la iteración. Para ello, se usan dobles de test, mocks, fijando ciertas expectativas sobre ellos.
El autor más destacado en este enfoque es Sandro Mancuso, que la introduce en varias publicaciones y conferencias1.
Outside-in TDD no contradice el enfoque clásico, pero propone una metodología más aplicable al desarrollo de software en condiciones reales y le da contexto, poniendo énfasis en las necesidades de diseño.
Por otro lado, es posible realizar un outside-in siguiendo las reglas clásicas, buscando el diseño durante las fases de refactor. No es habitual encontrar ejemplos. Uno de ellos es este del propio Sandro Mancuso con la Rover kata2, aunque no se trata de una aplicación completa.