Le llamaban TDD...
En el blog de Luis Fraile, se ha planteado una interesante reflexión a raíz de unas palabra mías en el TTT. Vaya por delante el decir que creo no fueron del todo correctas desde un punto de vista purista. Yo afirmé algo como "en TDD da igual escribir las pruebas antes que después", cuando lo que debería haber dicho es: "En mi opinión, lo importante es escribir pruebas, da igual antes que después". Cuando una sala esta llena de gente de gran nivel, cualquier error es sacado rápidamente a la luz, algo que siempre ayuda: "Cuanto antes se descubre un error menos cuesta", dice una máxima de calidad del software. La corrección está hecha (no lo he visto pero seguro que Luis ya lo ha cambiado). En la ppt ahora hablará genéricamente de pruebas unitarias en lugar de TDD.
En TDD, sin duda, las pruebas se deben escribir antes. No es opcional si queremos decir que realmente seguimos las reglas de TDD. No hay discusión en esto si nos ponemos estrictos. Y los defensores a ultranza de está técnica esgrimen una serie de ventajas, que sin duda son ciertas, pero que en gran medida se obtienen también escribiendo las pruebas a posteriori.
En cualquier caso, desde mi experiencia, escribir las pruebas antes o después es un matiz que yo creo que se debe dejar en manos de cada desarrollador. Cada uno que haga lo que mejor le parezca y más cómodo le resulte. Quiero que los desarrolladores se sientan cómodos a la hora de escribir pruebas ante todo.
Yo, personalmente, uso un enfoque más bien mixto, eso sí cada vez más sesgado hacia escribir antes las pruebas. Hay veces que veo claro que test debo escribir y me lanzo ha escribirlos antes que la clase, hay veces que escribo primero la clase. Casi siempre que escribo los test antes, luego suelo tener que escribir alguna prueba más después para alcanzar cobertura suficiente. Tal y como yo lo veo, creo que escribir las pruebas antes, tiene una curva de aprendizaje mayor que escribirlas depués.
De todos modos, si yo escribo pruebas después del escribir el código (para cada porción pequeña de código, nunca cuando tengo cientos de líneas acumuladas que ya es tarde), las ejecuto con frecuencia y siempre antes de integrar código en el gestor de fuentes, integro las pruebas en la build, me preocupo por que sean rápidas y sobre todo tienen covertura suficiente, etc, etc... ¿No estoy haciendo TDD? En sentido estricto no, pero desde un punto de vista de la filosofía y ventajas que hacer pruebas unitarias aporta, si. Puedo asegurar que, aun escribiendo los test después, estos guían mi desarrollo de manera determinante. Y en un sentido amplio TDD = Desarrollo guiado por pruebas.
Interesantísimo el link que nos ha dejado El Bruno en los comentarios del post de Luis: TDD Proven Effective! Or is it? que viene a dar la misma conclusión que yo trato aquí: no hay grandes diferencias entre escribir pruebas antes o después, pero lo que nadie discute es que hay que escribir pruebas. Se le pedia a Luis responsabilidad y demás, pero la verdadera responsabilidad que tenemos es que todo el mundo sepa de las ventajas de las pruebas unitarias.
Resumiendo escribe pruebas unitarias, eso no es opcional, y luego si quieres llámalas Trinidad...