Desarrollo de Aplicaciones

Tests y Test Driven Development

Refactorizando código siempre corres el riesgo de cambiar algo que no debas, por descuido de no fijarte en algún caso límite o por cualquier otro motivo. De este cambio nace un error y depende de lo límite que sea la situación errónea puedes tardar meses en darte cuenta del error.

Tests y Test Driven Development

¿Cómo solucionar errores de refactorización?

Los tests nos ayudan a verificar código. Hay varios tipos, por ejemplo un test para comprobar que cierta función devuelve un dato del tipo adecuado, o un test que compruebe que todo un flujo de trabajo es correcto, por ejemplo si envío un GET a '/posts' obtendré un listado con los 5 últimos posts y cada uno de ellos contendrá su título, el resumen y el nombre del autor.

El primero mira que un código concreto funciona como está previsto, el segundo es agnóstico en cuanto a código, da igual como devuelva el listado, sólo nos interesa que este listado exista.

Podremos usar el primer tipo en casos muy críticos y el segundo en casos más generales, pero como podemos utilizar los dos a la vez no descartaremos uno así sin ningún motivo de peso.

Volviendo a refactorizar, podemos escribir los tests adecuados para todo lo que hace la aplicación, aquí es crucial verificar todos los casos, tanto los más "normales" como los casos más límites.

Esto nos llevará bastante tiempo, pero nos aseguraremos de que después de refactorizar obtendremos una aplicación muy robusta.

Ahora pensemos en una aplicación nueva, de momento es solo una carpeta vacía en nuestro ordenador.

Sería genial ir haciendo los tests a medida que programamos, así cuando llegue el momento de refactorizar tendremos la carga más importante de trabajo realizada.

¿Qué pasa si hacemos los tests antes de programar? Hacer los tests es fácil, son solo unas pocas líneas, luego al ejecutarlo veremos que da errores y esos errores los podemos usar para que nos vayan guiando a la hora de programar, de ahí el concepto Test Driven Development (TDD).

Por ejemplo, podemos crear un test que obtenga los últimos 5 posts. Cuando vayamos a '/posts' obtengamos los 5 últimos posts, el test es básicamente crear los 5 posts y visitar la url. Nos encontramos con que no podemos crear posts porque en nuestra aplicación (recordemos que esta vacía) no existe el concepto de 'post'. Lo creamos. El siguiente error es que al visitar '/posts' recibimos un 404, creamos la página. El siguiente es que en '/posts' no hay posts, los creamos. Ahora el test da 'verde' (cuando phpunit, por ejemplo, no encuentra errores pinta un mensaje en este color). Es hora de pensar y hacer el siguiente test y de programar lo necesario para que funcione a medida que el error del test nos indique.

Comparte este artículo

Artículos Relacionados