Todos los artículos
London vs Chicago

London vs Chicago

Hay dos escuelas conocidas en TDD: la escuela mockista (también conocida como Outside-in) y la escuela clasicista (también conocida como Inside-out).

blog-cover

Hay dos escuelas conocidas en TDD: la escuela mockista (también conocida como Outside-in) y la escuela clasicista (también conocida como Inside-out).

¿Por qué London y Chicago?

Dos empresas, una de Londres y otra de Chicago, afirmaban hacer TDD, pero se enfocaban en aspectos diferentes. La empresa de Londres construía software de afuera hacia adentro, mientras que la de Chicago de adentro hacia afuera. Veámoslas en más detalle.

Outside-in: Escuela de Londres

Proporciona un enfoque guiado por comportamiento para TDD. Comenzando desde el exterior de la aplicación y trabajando hacia adentro moviéndose a capas inferiores. Por ejemplo, comenzando desde la API/Controladores hacia abajo hasta las capas de aplicación o dominio.

PROS

  • Enfocado en Comportamiento: esto requiere muchos dobles de test porque testearás muchas abstracciones que aún no existen ya que estás creando lógica de alto nivel primero. No escribirás código muerto pero será fácil crear tests altamente acoplados a la lógica y por lo tanto hacer del refactoring una tarea difícil.
  • Separación Comando-Consulta: es una disciplina para gestionar efectos secundarios. O realizas una acción (comando) o pides un valor (consulta).

CONTRAS

  • Tests Frágiles: tiende a crear tests que se rompen fácilmente porque usualmente están demasiado acoplados al código de producción.
  • Refactoring Difícil: por la misma razón que “Tests Frágiles”, tener tests acoplados al código de producción hace el refactoring continuo muy difícil y consume mucho tiempo.

Inside-out: Escuela de Chicago

Es un enfoque informal, exploratorio, basado en estado de TDD. Comenzando desde el interior de la aplicación (usualmente el dominio) y trabajando hacia afuera hacia las APIs.

PROS

  • Red de Seguridad Fuerte: tiende a producir tests que están desacoplados de la implementación. Permitiéndote adoptar un estilo más experimental de cambiar software sin miedo a romperlo. Esto es deseable para el refactoring continuo.
  • Alta Cohesión: a medida que los tests se vuelven más generales, el código de producción se vuelve más específico. Esto promueve alta cohesión, y con alta cohesión viene bajo acoplamiento. Algo que promueve alta calidad de código: extensibilidad, mantenibilidad y testeabilidad.
  • Minimiza Dobles de Test: construir de adentro hacia afuera requiere menos dobles de test ya que estás construyendo sobre los tests previamente escritos. Esto ayuda a desarrollar tests menos frágiles.

CONTRAS

  • YAGNI: a menudo sobre-diseña soluciones, con código que realmente no se necesita (¡o ni siquiera se usa!) al final.

Conclusión

No se trata de elegir uno sobre el otro. Se trata de entender tu contexto e impulsar la optimización hacia esas cualidades que necesitan ser optimizadas. London y Chicago tienen cada una sus pros y contras. El mejor enfoque para TDD es una adopción integrada de estas dos escuelas.


Referencias

Ssearch Dtheme Llang Jolder Knewer Ttoc Ccopy ?help

Atajos de Teclado

Navegación

HInicio
BBlog
RLecturas
LCambiar idioma

Acciones

SBuscar
DCambiar tema
CCopiar URL
GGIr arriba

Artículos

JArtículo anterior
KArtículo siguiente
TMostrar/ocultar índice

General

?Mostrar ayuda
EscCerrar