¿Qué es la arquitectura?
La arquitectura implica la toma de decisiones relevantes de diseño.
Ahora la pregunta clave es ¿cómo nos ayuda TDD a tomar estas decisiones relevantes? Básicamente tenemos que plantear pruebas que nos ayuden en la definición de la arquitectura.
El proceso de construcción
Podemos plantear el proceso con un esquema de alto nivel:
- Premisas:
- El resultado es consecuencia del proceso
- El desarrollo es guiado por pruebas
- El proceso es iterativo y los incrementos son pequeños
- Al trabajar de forma iterativa hay desperdicios
- Integración, verificación y entrega continua
- Mantenerlo estúpidamente simple (KISS)
- Técnicas:
- BDD/TDD
- Integración continua / Despliegue continuo
- Walking Skeleton
- Arquitectura Hexagonal
Arrancamos de forma temprana teniendo un pipeline de deployment y un ambiente en el cual desplegar. En la primera semana del proyecto se puede armar el esqueleto del proyecto, subirlo a un repositorio, que compile y despliegue.
Ciclo BDD/TDD
- Arrancamos con una funcionalidad desde la perspectiva del usuario.
- Para esta funcionalidad escribimos pruebas de aceptación (los tradicionales casos de prueba). Esto es una prueba a nivel de requerimiento.
- Para satisfacer estas pruebas de aceptación voy a tener que crear un conjunto de objetos y es aquí donde entramos en el ciclo de TDD. Escribo pequeñas pruebas para cada uno de los objetos que van a intervenir en resolver esa transacción de negocio.
Si bien es cierto que escribimos una prueba de aceptación y de repente para que pase una sola prueba de aceptación voy a tener que dar varias vueltas al ciclo de TDD. Por ejemplo, puedo tener 1 prueba de aceptación y 10 pruebas unitarias.
---
Bibliografía