TDD (Test-Driven Development)

Remontándonos a los años 70, se puede presenciar la crisis de software que existía en ese entonces, la forma de trabajar era programar y probar, lo que conllevaba a presenciar errores en el desarrollo por mala comunicación entre los integrantes, duplicando trabajos. Muchas veces el proyecto final no era el deseado por el cliente, debido a esto surgen metodologías de desarrollo para contrarrestas dicha problemáticas.


De allí surgen metodologías de desarrollo tradicionales, ágiles e híbridas, cada una dirigida a un perfil de desarrollo diferente.


Las metodologías de desarrollo son importantes al momento de producir un sistema de información debido a que facilitan el desarrollo del mismo, organizando las tareas que hará cada integrante del equipo de desarrollo e indicando los pasos a seguir.


Si bien TDD es considerado una metodología de desarrollo, suele trabajar en conjunto con otras metodologías como SCRUM.


TDD (en español, desarrollo dirigido por pruebas) es una metodología de desarrollo de software, basada en codificar pruebas, escribir el código fuente y en último lugar refactorizar el código.

 

Objetivos de TDD

  •  Garantizar que las funciones realizan su trabajo correctamente.
  •  Minimizar errores.
  • Mayor productividad.
  • Desarrollar únicamente las funciones que el cliente necesita.
  • Generar y mantener un código reutilizable, adaptable a cambios.

 

Ciclo de TDD

 
Ciclo de TDD | CodeHoven


  • Seleccionar un requisito: Se elige de una serie de requisitos, tomando en cuenta el caso específico, expectativas y la facilidad para implementar.
  • Codificar la prueba: Se escribe una prueba específicamente para ese requisito, contando con la especificación y los requisitos de la funcionalidad detallados, antes de seleccionar la prueba a utilizar.
  • Verificar la prueba: En caso de que la prueba no presente problemas, el requisito ya estaba implementado o puede que la prueba sea incorrecta. Se llevaba a cabo la especificación de la implementación de manera sencilla, ejecutándola de forma automática.
  • Refactorización: Eliminar código duplicado que permita obtener un producto mas sencillo. Se deben realizar las pruebas luego de hacer modificaciones hasta que funcione.
  • Actualización de requisitos: Se actualiza en listado de requisitos, eliminando los que ya se encuentran implementados. Si se considera necesario se pueden añadir requisitos que resulten indispensables.

 

Tipos de pruebas

Test Unitarios
Se encarga específicamente de probar pequeñas partes del software de una manera independiente, como por ejemplo un modelo. Se caracterizan por ser: Atómicos, independiente, inocuo, rápido.

 

Test de integración
Se encarga de probar la integración entre dos o mas componentes, para ello pueden utilizar dependencias, usar datos reales, siempre y cuando no afecte el estado de la aplicación antes de aplicar dicha prueba.

 

Test del sistema
Poseen como objetivo principal realizar las pruebas al sistema, ejecutándolo como lo haría un usuario final, iniciando en la interfaz hasta llegar al guardado de datos.

 

Desventajas de TDD

  • Ralentizar un poco el desarrollo
  • Consumir tiempo escribiendo las pruebas.
  • Consumir tiempo manteniendo las pruebas.
  • Falsa sensación de seguridad

 

Para conocer sobre cómo trabajar con TDD, dirigirse a Primeros pasos con TDD 

 

Puedes encontrar algunos ejemplos de TDD, en:

  1. Ejemplo de TDD
  2. Empezando con TDD

 

Para finalizar es importante destacar lo útil e importante que es trabajar con una metodología de desarrollo, específicamente TDD donde podemos ahorrar trabajo probando código generado y purificando dicho código para hacerlo mas sencillo, esto genera una aplicación con mayores posibilidades de mantenerse en el tiempo.

 

Publicado el 20 de junio de 2019