Test driven development

December 12, 2018

...

Test driven development... o desarrollo dirigido por pruebas... deberías aprenderlo? es tan difícil como dicen?

TL;DR

Si!, deberías, pero de la forma correcta y fácil, no complicándolo más de lo que es!

Velocidad de desarrollo

Quizás esta es la principal razón por la que muchos nos negamos (yo al comienzo lo oncontraba una perdida de tiempo) a aprender testing. Y las razones no son para extrañarse... escribes código, funciona y además debes escribir los tests. Eso ya suena al doble de trabajo!, y la verdad es que lo es, siempre y cuando tu base de código sea pequeña. Que tan pequeña? Tal vez unas cuantas semanas o meses de un desarrollador. Y la verdad es dura, es mucho más rápido que nosotros hagamos click o pinchemos en nuestra aplicación y veamos si el resultado es el correcto, sobre todo si aún no te has sumergido en el mundo de las pruebas automáticas. Pero luego de un tiempo comenzarás a ver la frustración.

Tu proyecto ya creció, ya tiene más de varios meses de desarrollo, se te olvidó como implementaste esa funcionalidad hace tiempo pero sigues lanzando nuevas funcionalidades y, de pronto, empiezan a llegar los reportes de errores. El usuario A no puede ingresar a la funcionalidad B, lo corriges y BOOM! otro reporte de error, rompiste otra funcionalidad, tu estrés se empieza a acumular, los usuarios empiezan a quejarse, la gente te empieza a mirar mal y empiezan a dudar de la calidad de tu trabajo... esto es algo NORMAL!, todos pasamos por eso alguna vez, y la verdad es que las personas saben que existen errores en el desarrollo de software, pero también saben que necesitan un producto funcionando y que opere en el largo plazo. Esto ya es una necesidad, por así decirlo como la ley del software, si no funciona no sirve. Y todos quieren sacar software rápido!

En el largo plazo el testing automático logrará que reduzcas los tiempos de pruebas y también te ayudará a transparentar si cometiste un error y rompiste otra funcionalidad. Es muy importante que tomes en cuenta de que, si es un proyecto pequeño (just4fun) no es tan necesario, pero si este proyecto cumple con que será un proyecto a largo plazo, en ese caso el testing será algo primordial.

Las empresas hoy en día buscan personas que sean capaces de testear su propio código y, como bonus, que puedan escribir tests para el código de otros, no te imaginas los dolores de cabeza que les ahorrarás! y dólares también les ahorrarás.

Calidad del código

Escribir tests no es fácil, sobre todo si el código escrito parece un tallarín, pirámide de la muerte o patrón MVC (acá nos gusta la programación funcional orientada a eventos :D). Esto te va a forzar a escribir el código de otra forma y te hará amar patrones que, si bien existen hace muchos años, hacen que todo sea mucho más sencillo!

  • Inyección de dependencias
  • Publish/subscribe Estos permiten desacoplar el código, lo que hace que escribir tests a tus funciones sea mucho más sencillo!

Documentación

Los tests además te permiten generar documentación, como utilizar la api de una librería a módulo que escribiste, también le dice a otros desarrolladores que esperarse de tu código!

Despliegue con confianza!

No hay nada más tranquilizador que saber que tu código no ha roto nada, que todo funciona y que puedes realizar el paso a producción con confianza!

Spoiler!

Los tests prueban lo que tu quieres probar, es buena práctica siempre redactar a lo menos la descripción de lo que quieres probar antes de comenzar con la implementación, y siempre comenzar manejando el error, porque tendrás errores! Esto quiere decir de que de todas maneras en tu código habrán errores que no estas capturando y que nadie detectó a tiempo, pero te aseguro que van a ser mucho mucho menos errores que los que tenías antes!


Suscríbete

Suscríbete a la lista para más cursos, posts y videos tutoriales. Prometo no enviarte más de un correo semanal 🙏

Creado por Nicolás Schürmann ingeniero e instructor de software. Cuando no está programando, esta frente a una cámara dictando cursos, creyéndose youtuber o apoyando a sus alumnos. Puedes seguirlo en twitter o también suscribirte a su canal de youtube. Considera comprar sus cursos por este medio y así apoyas al instructor.