🎯 Propósito: Aprender a atrapar errores antes de pasarlos a producción 🆕
Te cuento los requisitos y los trozos de código y plantilla que ya tienes disponibles para que sea aún más fácil.
“Espero que esté todo bien, te estaré vigilando”
Esto es lo último que dijo Terrible Íñiguez cuando entró en el despacho. Después de eso todos sabíamos que estaría buscando cualquier forma de que aquella pantalla de aplicación diera un ERROS y salir a buscar al CULPABLE.
Su nombre era Terrible, no era un mote.
Sus padres, al verlo en la cuna, pensaron que sería mejor avisar a la humanidad de quién era ese ser solo con ver su nombre.
Terrible es tu jefe y tú te encargas de mantener con vida un sistema que captura unos datos de un podcast (el favorito de Terrible) y devuelve cuatro datos fundamentales:
- El número del siguiente episodio
- La duración total de todos los episodios
- El número del episodio más corto
- El título de episodios aleatorios cuya suma de duración no dure más de 2 horas
👉 El origen de los datos es este: https://tormenta-codigo-app-terrible.vercel.app/api/podcast
👉 En la carpeta /plantillas
tienes el código resuelto en varios lenguajes de programación como JavaScript, Python, PHP o Kotlin. Funcionan todos con salida en consola.
👉 En la carpeta /guia-test
tienes un "how-to" para dar tus primeros pasos en testing
Es sabido que Terrible se pasa el día buscando como hacer que otros fallen y cambia a propósito los datos de origen.
El sistema en producción ejecuta cada 15 minutos un proceso que captura la información y se la envía por email a Terrible.
Tu no puedes controlar ese proceso, no tienes acceso.
Tampoco puedes controlar la fuente.
Así que solo te queda tu código.
⚡️ Tu misión es crear cualquier tipo de test que evite que Terrible reciba un error.
🚨 Puedes hacerlo en el LENGUAJE que quieras y utilizando el framework o herramienta de testing que más te guste.
1️⃣ No buscamos que cambies directamente el código para adaptarte a los nefastos cambios de Terrible.
2️⃣ Se busca que crees los tests, investigando como se hace para que seas capaz de cubrir todos los huecos posibles (que no son tantos)
3️⃣ Así podrás modificar el código para que sea más robusto y no se coma los errores.
Nota:
No voy a contarte qué cambios son, tendrás que descubrirlo poco a poco.
👉 Si te puedo decir que existe la posibilidad de que 1 de cada 4 veces los datos de origen no estén alterados.
👉 Simularemos los cambios de Terrible de forma aleatoria en esta otra URL de la API: https://tormenta-codigo-app-terrible.vercel.app/api/podcast/terrible
☝️ Ojo al /terrible
, marca la diferencia.
1️⃣ Deberías comenzar creando tus primeros tests con los datos correctos, que son los que están en la API con esta ruta: https://tormenta-codigo-app-terrible.vercel.app/api/podcast
2️⃣ Quizás quieras modificar el código original que tienes en /plantillas
. Hazlo tranquilamente
3️⃣ Cambia la ruta de la API a la de “terrible” y empieza a analizar que cambios hay que deberías probar primero con el test.
4️⃣ Luego escribes el código que soluciona el test que has creado.
⚡️ ¿Qué pasa si los datos alterados no permiten tan siquiera hacer cumplir la funcionalidad?
- Primera opción: No tengas en cuenta ese episodio
- Segunda opción: Muestra un error que le haga saber a Terrible que le has pillado
- Los tests que has realizado
- El código funcional que hace la tarea de los cuatro datos fundamentales
- Las dependencias que necesitamos instalar para ejecutar los tests
📝 ¿Cómo se hacen tests? Consulta la carpeta /guia-test
de este mismo repo.
- Atreverse es de valientes: Un sistema de caché para que la última solución correcta sea la salida del sistema aunque haya datos alterados
✉️ Cuando tengas la solución, añades una issue en este repositorio y nos cuentas lo que has hecho y cuáles han sido tus principales aprendizajes y dificultades, ¡a la comunidad le encantará saberlo!
👉 Hay que compartir el código.
👉 Puedes hacer un fork de este repositorio y trabajar sobre él (no es obligatorio)
🎁 Sortearemos regalos entre los participantes ;)
2 de Noviembre de 2023
- Testing, al menos el principio, una cualidad MUY DESEADA en los developers a la hora de contratarlos
- Enfrentarte a cambios en APIs que no controlas
- Ser más responsable con tu código
Este reto se realiza por y para la Comunidad Malandriner
❤️