Sin refactoring no es TDD

Parece evidente, ¿verdad? Cuando explicas TDD (Test Driven Development), explicas que tiene 3 fases: rojo, verde y refactoring. Sin embargo, parece que son las 2 primeras las que entran con mayor facilidad en la mente del programador.

Presentas la kata y allí van disparados a escribir su primer test para estar en rojo. Una vez allí, _baby step_ en el código con lo mínimo indispensable para pasar el test y ponernos en verde. Es entonces cuando deberíamos pensar en el refactoring, pero normalmente es difícil encontrar cosas a refactorizar en nuestro (poquito) código en las primeras iteraciones, así que pasamos a rojo otra vez escribiendo un nuevo test.

Este proceso se repite de forma rápida durante los primeros tests, y con la excusa de que con pocos tests es difícil encontrar duplicaciones o cosas a mejorar en el código que hace pasar estos tests, poco a poco entramos en el modo semárofo del rojo-verde.


Read more

Share Comments

Detectando tests dependientes con PHPUnit

A día de hoy, PHPUnit es el standard _de facto_ para escribir pruebas unitarias en PHP. En estas pruebas unitarias, intentamos que los tests sean totalmente aislados, es decir, que no tengan efectos secundarios, que no se conecten a servicios como API’s o bases de datos, y que no dependan unos de otros.

Sin embargo, cuando estamos escribiendo tests de integración para comprobar que ciertas clases se comunican correctamente entre ellas, o con otros servicios (base de datos, API’s, etc), los tests dejan de ser aislados, porque esa conexión es precisamente lo que queremos probar. Además, puede que tengan efectos secundarios porque, siguiendo con el ejemplo de la base de datos, vamos a comprobar si se han escrito datos correctos o si se han actualizado como deberían.


Read more

Share Comments

¿Donde pongo mis scripts?

Vale, te has creado un _script_ en Unix para automatizar una tarea, pero después de programar durante horas, ahora viene lo más difícil de todo… donde lo pones?

Podrías ponerlo en la carpeta /bin… o en /usr/bin… incluso en /home/../bin. Para qué tantas carpetas de binarios?

Vamos a intentar explicar para qué sirve cada una.


Read more

Share Comments

Evitar borrar todo tu disco con rm -rf

A quién no le ha pasado, verdad? Quieres borrar el contenido de una carpeta con el comando rm, pero sin querer pones el asterisco donde no debías y ZASCA! : todo tu disco duro se ha borrado por completo.

A veces no es tan dramático. A veces solo te equivocas en el directorio que querías borrar. Estabas un nivel más arriba o más abajo del que pensabas y adiós proyecto en el que llevabas toda la tarde trabajando y del que todavía no habías hecho commit.


Read more

Share Comments