TDD es un acrónimo para Test Driven Development.
Como su nombre indica,
este concepto gira en torno a la idea de que el flujo de tu desarrollo de software,
será guiado por pruebas.
Empezó a tener mucha tracción a principios del 2000
cuando Kent Beck publicó un libro
titulado Test Driven Test Driven Development by Example.
Puede que reconozcas a Kent Beck,
también es conocido por sus contribuciones a la Programación Extrema
y el Manifiesto Ágil.
El proceso fundamental del desarrollo basado en pruebas
es escribir nuestro código haciendo un bucle sobre tres etapas principales de la aplicación,
rojo, verde y refactorizar.
Para la etapa roja,
empezamos escribiendo una prueba que describe un requisito
que queremos que cumpla nuestra aplicación.
Mientras escribimos el test,
pretendemos que toda la funcionalidad ya está ahí.
Lo más probable es que esta prueba falle.
Nos centraremos entonces en hacer la menor cantidad de trabajo
necesario para obtener esta nueva prueba para pasar.
Mientras que al mismo tiempo mantener todas las demás pruebas
que ya tenemos en su lugar, sigue pasando.
Tan pronto como todas las pruebas estén pasando,
hemos alcanzado oficialmente la fase verde.
No se preocupe si su trabajo más reciente parece un poco desordenado y difícil de leer.
Ahora estamos listos para mejorar nuestro código.
Es crítico que realicemos mejoras incrementales y confirmar a menudo.
Cada mejora sólo puede ser aceptada si todas las pruebas siguen pasando.
La fase de refactorización puede durar tanto como queramos.
Nos detendremos una vez que pensemos que nuestro código es lo suficientemente bueno.
Tan pronto como estemos contentos con el estado del código,
podemos escribir otra prueba para otro objetivo que queremos que cumpla nuestra aplicación.
Esto nos llevará de vuelta a la etapa roja.
Este es el bucle de refactorización rojo-verde
que es la fuerza impulsora detrás del desarrollo basado en pruebas.
¿Por qué no ponemos estos conceptos a prueba?
En este curso, crearemos un clon
del popular juego Wordle, utilizando el desarrollo basado en pruebas.
Como estamos creando esta aplicación,
nos centraremos en cómo el desarrollo basado en pruebas
no sólo le permite escribir software con requisitos robustos y claros,
sino que también te ayuda a ti y a tu equipo a escribir un código muy limpio y fácil de mantener.
Además de aprender el desarrollo basado en pruebas,
este curso también hará uso de de Vue 3 y su API de composición.
Ejecutaremos nuestras pruebas con Vitest
y haremos un amplio uso de Vue test Utils para ayudarnos a realizar aserciones.
Por último, pero no menos importante, este curso es también una buena oportunidad
para explorar un poco de TypeScript.
Yo recomendaría un poco de experiencia básica con Vue antes de ver este curso.
No te preocupes si nunca has escrito TypeScript antes,
todavía serás capaz de seguir con el contenido.
Además, no nos centraremos en los fundamentos y la sintaxis
de las herramientas de prueba en este curso,
sino más bien en el proceso de desarrollo basado en pruebas.
Por lo tanto, si eres nuevo en las pruebas,
puede que merezca la pena consultar la documentación de Vue Test Utils
o consultar nuestro curso sobre cómo probar componentes Vue.
He dejado enlaces para estos dos recursos en la descripción de abajo.