En ocasiones los desarrolladores se enfrentan a desarrollos complejos, con los tiempos ajustados donde intentan obtener un código limpio, mantenible y que funcione. TDD es una metodología que ayuda a conseguir esto y, junto a la metodología ágil, crear software de calidad en el menor tiempo posible. Nuestro SlashBoy Agustín Dotta, nos enseñará hoy en qué consiste el TDD y cómo puede ayudarnos en nuestros desarrollos.
Para entender qué es y cómo funciona el TDD debemos conocer antes su definición. TDD (Test Driven Development) a menudo se traduce como Programación orientada a test. Sin embargo, este concepto es erróneo. Una traducción más realista sería Programación dictaminada por test, donde los test son los que te indican cuánto y cómo vas escribir tu código. TDD se basa en escribir primero los test, lo que supone el mayor cambio respecto a las metodologías tradicionales, y donde estos nos indicarán qué código hay que implementar para poder hacer que funcione. Una vez tengamos el código para poder pasar el test, se refactoriza para dejar un código limpio. Esta metodología se resumen en tres etapas:- Red (pruebas): escribimos un test que debería pasar un componente de nuestra aplicación. Éste no debe compilar y debe fallar.
- Green (codificar): escribimos el código que haga pasar el test. En este caso, no hacerlo perfecto está bien visto para que lo pase ya que en la siguiente etapa se va refactorizar. Con ello lo que conseguimos es la solución más sencilla posible.
- Refactor (refactorizar): refactorizamos el código escrito en la etapa anterior para que sea código limpio y funcione.
- Se testa todo el código.
- Sólo se escriben test, por ejemplo, cuando se tiene una tasa de cobertura de test muy elevada.
- Se testa cosas demasiado complejas. Hay que recordar que los test son unitarios por lo que cuando un test es muy complejo se debe separar en varios test.
- Debe ser rápido
- Ser reutilizable, es decir, ajo las mismas condiciones siempre se tiene que comportar igual.
- Tiene un nombre claro y explícito de tal modo que no genere dudas sobre lo que hace.
- Es atómico: es decir, sólo comprueba una cosa a la vez.
- Sólo falla si tu código está mal. No depende del entorno o de ficheros externos.



