Estilos de TDD: London vs. Chicago

Hace un tiempo cobró cierta popularidad entre los practicantes de TDD el debate sobre los denominados estilos o escuelas de TDD: «London» y «Chicago». Hay varias explicaciones en la web sobre las diferencias de estos estilos ([1][2][3][4]) que podríamos resumir brevemente en dos dimensiones:

  • Flujo
    El estilo Chicago (también denominado «tradicional») propone un desarrollo de adentro hacia afuera, se comienza por los objetos del dominio y luego se agrega la capa de interface/controllers.
    El estilo London propone un desarrollo de afuera hacia adentro, lidiando de entrada con las cuestiones de interface/controllers y llegando a los objetos de dominio a partir de las necesidades que la interface/controllers nos va demandando.
  • Aserciones:
    En el estilo Chicago los tests hacen asserts sobre el estado de los objetos y los resultados.
    En el estilo London los tests están más enfocado en la interacciones entre los objetos y para ello depende en gran medida del uso de mocks.

Estos dos estilo dieron un salto de popularidad a partir de una serie de videos realizados por Bob Martin y Sandro Mancuso. En estos videos Bob (Chicago) y Sandro (London) muestran y comparan el desarrollo de una aplicación (Rest API) utilizando estos dos estilos.

Al estilo Chicago se lo suele asociar al libro Test-Driven Development by Example de Kent Beck mientras que al estilo London se lo suele asociar con el libro Growing Object-Oriented Software Guided by Tests de Freeman y Pryce. Sin embargo, a mi parecer, comparar los enfoques London y Chicago a partir de estos dos libros me parece errado porque el alcance y foco de las propuestas descriptas en estos libros es distinta. El libro de Beck es un libro que tiene un foco claro en el uso de TDD a nivel del modelo de objetos de dominio. Por su parte, el libro de Freeman tiene un foco es más amplio, apunta al proceso de desarrollo de una aplicación (no solo del modelo de objetos de dominio). Es así que el libro de Freeman contempla también cuestiones como arquitectura hexagonal, walking skeleton e integración continua. Tengamos presente que el libro de Beck es de 2003 mientras que el de Freeman es de 2009. Al mismo tiempo en su perspectiva de desarrollo de una aplicación, el libro de Freeman plantea un doble ciclo de tests donde el ciclo interno es el que coincide con el ciclo de TDD que plantea Beck. Es por esto que no creo que sea Freeman o Beck, sino que los veo como complementarios.

Volviendo a London vs. Chicago, un punto central en la discusión es el uso de mocks. Si solo pensamos TDD para el desarrollo del modelo de objetos de dominio puede que el uso de mocks no resulte útil. Pero si ampliamos el foco de la discusión y consideramos el desarrollo de una aplicación completa incluyendo las cuestiones de «infraestructura» (interfaces, persistencia, etc.), entonces los mocks toman otra relevancia/utilidad.

Continuará…

[1] https://josemyduarte.github.io/2018-12-09-tdd-outside-in/
[2] https://devlead.io/DevTips/LondonVsChicago
[3] https://dev.to/hiboabd/a-beginners-explanation-of-the-chicago-london-approaches-4o5f
[4] https://nvoulgaris.com/comparing-tdd-flavours/


3 comentarios en “Estilos de TDD: London vs. Chicago

  1. Pingback: Blog de NicoPaez

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.