Este es el primer post sobre una serie de artículos que quiero escribir sobre TDD. Algo que descubrí hace relativamente poco tiempo pero que pienso que es algo muy importante y que debería ser primordial en todo desarrollo.
¿Qué es TDD?
Desarrollo guiado por pruebas de software, o Test-driven development (TDD) es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring). Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit test en inglés). En primer lugar, se escribe una prueba y se verifica que las pruebas fallan. A continuación, se implementa el código que hace que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que el software cumple con los requisitos que se han establecido
La secuencia de TDD es la siguiente:
- Test fallido: Escribir un test que falla.
- Pasando el test: Escribir el test que pase la función definida.
- Escribir código: El siguiente paso es escribir el código que haga que pasemos el test. No será un código definitivo pero si aceptable y será mejorado en el punto 5.
- Ejecutar el test: Si pasamos el test el programador estará seguro de su código.
- Refactorizar código: Eliminar la redundancia. Al volver a ejecutar continuamente los casos de prueba a lo largo de cada fase de refactorización, el desarrollador puede estar seguro de que el proceso no está alterando ninguna funcionalidad existente.
Test-driven development is a way of managing fear during programming . Fear makes you tentative. Fear makes you want to communicate less. Fear makes you shy away from feedback. Fear makes you grumpy. — TDD By Example
El desarrollo basado en pruebas es una manera de manejar el miedo durante la programación. El miedo te hace tentativo. El miedo te hace querer comunicar menos. El miedo te hace huir de la retroalimentación. El miedo te hace gruñón. — TDD By Example
¿Cuales son las ventajas de TDD?
- Uno se siente más seguro de su código y su lógica.
- El código es más limpio.
- Aumenta la calidad del código y su mantenibilidad.
- TDD puede llevar a un código más modular, flexible y extensible.
- Las pruebas de regresión son mucho más fáciles, ya que los casos de pruebas automatizadas encuentran errores con antelación (por lo que se está seguro al cambiar el código o pasar el código a producción).
El mayor problema de TDD
El problema con TDD es que no muestra su importancia en la etapa inicial del desarrollo. Su verdadero valor se aprecia cuando hay que refactorizar el código después de dos o tres meses de desarrollo.
Espero que este artículo haya sido de su interés, puede leer más sobre TDD en el siguiente enlace: https://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas