TDD | Test Driven Development en Api REST con Nodejs y Express desde cero
Adoptar el paradigma de Test Driven Development (TDD) es un parteaguas en tu carrera como desarrollador de software, marca un antes y un después ya que cambia la manera en la que estamos acostumbrados a codear en nuestro día a día.
En este post definiremos conceptos clave y en un vídeo te muestro cómo es hacer una api REST con Node y Express aplicando este paradigma.
Update: Node JS TDD (Test Driven Development) Tutorial con MongoDB
He creado un nuevo post en mi blog personal donde comparto paso a paso cómo hacer una API básica con Node JS, Express y MongoDB usando Test Driven Development.
A continuación, seguimos con el contenido de este post.
Pre requisitos
Necesitas tener instalado:
- Nodejs versión ≥10.14.2.
- Npm ≥ 6.4.1.
- Tu editor/IDE de código preferido.
- La terminal de comandos de tu preferencia.
Y estar familiarizado con:
- Javascript.
- Nodejs.
- NPM.
- Express.
- API Rest.
- Terminal de comandos.
¿Qué es TDD?
TDD o Test Driven Development (Desarrollo basado en pruebas), es una técnica usada para desarrollar software que consiste en iniciar por los tests y después la implementación que hará que esos tests pasen.
Podemos encontrar varias ventajas:
- Diseñar el software de acuerdo a cómo será usado por el usuario (en mi opinión, la principal ventaja porque le das valor directo al usuario).
- Prevenir bugs al tener el software testeado, que equivale a ahorrar dinero.
- Software de mayor calidad.
- Poder implementar después CI o Continuous Integration (Integración continua).
Y de cada una de estas ventajas, podemos sacar otras ventajas derivadas.
Personalmente, pienso que lo principal es asegurarse que el software añade el valor esperado, esto es, que cumpla con el propósito por el que fue creado. Esto es lo esencial.
Los pasos de TDD
Estos son pasos generales con los que se aplica el TDD:
- Escribir el test.
- Ejecutar el test (esperando que falle).
- Escribir la implementación de ese test.
- Ejecutar el test de nuevo (esperando que pase).
- Refactorizar (limpiar código si es necesario).
- Repetir.
Y tal cual estos son los pasos que iremos siguiendo.
Historias de usuario y criterios de aceptación
Por lo común, el stakeholder o el product owner es quien nos proveerá de esta información porque es quién conoce al producto/negocio. Lo recomendado es que siempre sean redactadas en inglés.
A continuación las historias de usuario y criterios de aceptación que estaremos trabajando en nuestro ejemplo.
As user, i want to register my data in the system so that i can keep my data.
Criteria acceptance:
Save user data
- Given a user with his name and valid email
- When the user send his data to the system
- Then the system must save the user data
Save user data: validate user data
- Given a user data with his name and invalid email
- When the user send his data to the system
- Then the system must return error validation message as “the email must be like ‘john.doe@mail.com’”
As user, i want to see all the users data stored in the system so that i can consult it
Show all users
- Given users in the system
- When a user wants to see all the users in the system
- Then the system must show all the users data
As user, i want to update my name and email so that i can keep right information
Update user data
- Given a user with his name and valid email
- When the user send his data to the system for update
- Then the system must update only the user data
As user, i want to delete my data from the system so that i can feel free to use the system
Delete user data
- Given a user registered in the system
- When the user sends a request to delete his data
- Then the system must delete the user data
El objetivo es poder validar y satisfacer los criterios de aceptación por medio de tests, ¿Interesante, no crees?
Vídeo
🔔 Bonus: ¿Te gustaría dar un paso al siguiente nivel en React JS?
Te dejo links de mis cursos premium de Udemy donde te ayudo a subir tu nivel de seniority 🤓 ☕️.
Aquí tienes en versión ebook de algunos de los cursos arriba mencionados 📚.
¿Te ha gustado el contenido? te invito a darle clap 👏 y compartirlo! 😃
Puedes subscribirte a mi canal de YouTube para más contenidos de este tipo ⚡️🤘