Test Drive Development: el desarrollo dirigido por pruebas
Hace pocos meses, después de una dura y larga semana de trabajo desarrollando la nueva versión de una web, el equipo esperaba celebrar la finalización de un proyecto ha costado mucho realizar. Nada más lejos de la realidad, ahora mismo en tu equipo de desarrolladores reina el desconcierto intentando averiguar cómo solucionar un error que ha surgido en el último momento que ha roto códigos y la web no funciona correctamente. Esto sucede porque no se ha tenido en cuenta qué es un TDD.
Esa noche en la que no lo tuviste en cuenta, fue cuando dijiste: “esto no me vuelve a suceder más, la próxima, añado antes el test”.
Nosotros tampoco queremos que vuelvas a sufrir este tipo de inconvenientes y en esta nueva entrada de blog, te vamos a enseñar una forma segura y eficaz de programar gracias al Test Drive Development.
¿Qué es un TDD?
El TDD es una práctica de programación en la que se empieza escribiendo las pruebas en primer lugar, luego el código fuente para pasar la prueba correctamente y terminar mostrando el código que se ha escrito.
En otras palabras, lo que vas a realizar es: mostrar la una entrada y una salida y que el test lo valide para proseguir con la programación y no sufrir posibles inconvenientes en el futuro.
¿Cómo conseguirlo? Pues creando un código más robusto y un desarrollo más eficiente. Gracias al conocimiento de qué es un TDD en programación, vamos a escribir pruebas y conseguir que se mantenga muy fáciles de escribir por 3 cuestiones fundamentales:
- Generar constantemente documentos.
- Rediseñar de forma más periódica el cogido para conseguir que se pueda comprobar más fácil.
- Crear una especie de “red de seguridad” para modificar códigos con mayor confianza.
Beneficios del TDD
Programar con este test de pruebas puede generarte muchos beneficios que se deben tener en cuenta.
A continuación, te dejamos algunos:
- Utilizar procesos de TDD significará que se conseguirá ser más concretos y evitar estructuras de códigos innecesarios.
- Se consigue información de API para poder solucionar posibles problemas en el futuro.
- Aporta una ingente cantidad de documentos que nos ayudará a resolver las posibles dudas.
- Redactar código de manera constante, permite la modificación mientras se crea.
- No es necesario que esperemos al final de proceso para rectificar y corregir errores.
- Es un método escalable y permite hacer crecer el proyecto.
- Utilizar TDD da como resultado tener al cliente satisfecho con el trabajo que ha recibido.
- Seguir el proyecto de primera mano reduce costes y tiempos.
El ciclo TDD
Aunque de primeras pueda parecer complejo, lo cierto es que su desarrollo es bastante sencillo. Sin embargo, no pienses que todo va a ser un camino de rosas, al menos hasta que consigas dominar esta forma de programar.
Lo primero, es saber qué es un TDD y redactar las historias de usuario. Los requisitos que vayamos a introducir deben quedar correctamente claros y, a partir de aquí, generar las pruebas que espera recibir el cliente.
Nota: si no aplicas correctamente la traducción de requisito a prueba, la aplicación del TDD va a ser con completo desastre.
Para que esto no suceda, debes tener en cuenta el ciclo del TDD: Red-Grenn-refactor:
- Red: debemos escribir un test que falle antes de escribir la implementación. Como norma general, en esta fase se utilizan test unitarios, aunque en según que contextos se puede hacer un TDD a través de un test de integración.
- Green: en esta fase, una vez y tengamos el test fallido, vamos a implementar un código mínimo para que pueda pasar el test.
- Refactor: después de haber conseguido que nuestro test pase la prueba, se debe examinar para comprobar si podemos introducir alguna mejorar. Cuando hayamos cerrado el ciclo, volvemos a escribir código de nuevo desde el principio utilizando la misma metodología.
Lectura recomendada: Las mejores tecnologías de desarrollo web.
Objetivos del TDD
Esta técnica para programar cuenta con 3 claros propósitos qué pasmos a contarte en las siguientes líneas.
1. Reducir el número de bugs
A más bugs, menos rentable nos va a salir nuestro proyecto. Esto es algo que debes tener en cuenta cuando sepas qué es un TDD.
El tiempo que inviertes en volver hacia atrás y corregir los errores, es tiempo que puedes invertir en otras tareas.
Si utilizar el TDD, vas a conseguir tener menos bugs y una rentabilidad mayor.
2. Añadir funcionalidades ajustadas al cliente
Un alto porcentaje de los casos, se comienza a desarrollar código que creemos que se puede ajustar a las necesidades del cliente y que, una vez presentada la fase de prueba, no le resultan útiles para sus necesidades.
En este caso, se ha invertido tiempo en desarrollar algo que va a quedar en desuso, que el cliente no ha pedido, perdiendo el tiempo.
El objetivo del TDD es poder eliminar ese código que no nos sirve y que no han sido pedidas por el cliente, redundando en eficiencia y rentabilidad de la aplicación.
3. Software reutilizable y preparado para modificaciones
Con buenas técnicas de programación, eficientes y sencillas de ejecutar, y conociendo qué es un TDD, se consigue que un proyecto sea modular y se pueda reutilizar.
Preparar las aplicaciones para el cambio es algo que no siempre se consigue, pero con el TDD sí.
Esto sucede gracias que cuando tenemos que cambiar alguna funcionalidad de la aplicación, en condiciones normales, se refactoriza el código ajeno. En cambio, con TDD se tiene la seguridad de que los cambios no van a romper las funcionalidades ya construidas.
Gracias a que primero se construye la prueba y luego el código, cualquier cambio que se vaya a producir va a tener la red de seguir de los test.
Errores más comunes en TDD: ¿Cómo evitarlos?
Si vas a comenzar a utilizar este nuevo método de programación, debes de tener en cuenta qué motivos pueden llevarte al fracaso las primeras veces que introduzcas el test:
- No introducir bien el enfoque de “primera la prueba”.
- No conseguir refactorizar todo el tiempo invertido en desarrollar.
- Redactar más pruebas a la vez.
- Olvidarse de ejecutar pruebas periódicamente, perdiendo el foco en los posibles fallos que se puedan comentar.
- Escribir las pruebas sin las aserciones pertinentes.
- Redactar pruebas para el código trival, como asesores o vista sin lógica.
Estos son algunos de los errores más comunes que se suelen cometer cuando no se conoce qué es un TDD y se introducen los códigos mal.
Te recomendamos que las tengas en cuenta antes de comenzar a redactar una nueva línea de código.
Te puede interesar: Los 5 mejores frameworks PHP de 2023.
Conclusión: ¿Por qué el TDD?
El mejor resumen es: todo queda probado, se crea un código de calidad, se evita desarrollar cosas sin necesidad y, como consecuencia, tenemos un cliente satisfecho.
Además, en el plano estrictamente laboral, se consigue una optimización del trabajo y de los recursos utilizados. De esta manera, no se pierde el tiempo en cosas innecesarias y se pone el foco en lo que verdaderamente importa, las necesidades del cliente.
Del mismo modo, no es la mejor técnica, ni tampoco la peor. Existen desarrolladores que prefieren trabajar sin este “salvavidas” y prefieren ir más al grano, mientras que otros quieren desarrollar y tener una visión más de futuro de lo que puede pasar para ponerle una solución a tiempo.
En definitiva, en Coco Solution estamos encantados de que conozcas qué es un TDD puede ampliar las formas de programación que conocías hasta ahora y añadir un nuevo método que, en el futuro, puede ayudarte a programar con mayor seguridad.