TDD o Test Driven Development es una metodología donde hacemos todo al revés. Por un momento vamos a dejar de programar para dedicarnos a escribir las pruebas.
Pero, ¿cómo vamos a saber lo que debemos probar si ni siquiera hemos escrito el código? Muy buena pregunta. Eso es exactamente lo que vamos a descubrir a continuación.
Las pruebas son código que escribimos para comprobar que otra parte del código funciona correctamente. Sin embargo, no debemos olvidar que podemos caer en muy malas prácticas al escribir nuestro código sin saber exactamente lo que debe hacer, qué resultados debemos conseguir o cuándo deben saltar las alarmas.
En ocasiones puede parecer que es más demorado. Pero, así como toda buena práctica, esto es solo al principio, solo es un primer “obstáculo” que debemos superar para conseguir muchos beneficios.
A la larga, seguir estas metodologías y buenas prácticas nos ahorra tiempo y esfuerzo en errores que debemos resolver. Será mucho más fácil implementar nuevas características y evitaremos escribir código inútil que vamos a utilizar.
Gracias a TDD podemos agilizar nuestro proceso de creación de código. Nos preocupamos más por el qué y el por qué antes del cómo. Todo el código que necesitamos para implementar eso que planeamos con las pruebas será problema un poco más adelante. Por ahora, lo que importa es asegurarnos que estamos resolviendo los problemas correctos.
Nuestra metodología de pruebas funciona muy parecido a un concepto de sistemas y física que conocemos como Black Box: Estudiamos o trabajamos a partir de las entradas (inputs) y las salidas o respuestas que produce o debería producir nuestro sistema (outputs).
Con nuestras pruebas es igual. Definimos los argumentos que le enviamos a “la caja negra” y las posibles respuestas que debemos obtener dependiendo de las combinaciones de argumentos.
El desarrollo de nuestras pruebas es el siguiente:
No hay una herramienta como tal para implementar la metodología de TDD. Más bien, existen herramientas que nos ayudan a escribir y correr nuestras pruebas de forma automatizada.
Aquí algunas de las herramientas y frameworks más populares para diferentes lenguajes:
Omití algunas herramientas y lenguajes que también pueden ser muy útiles. Si quieres, puedes decirme tus favoritos en los comentarios 😃.
Si quieres dar tus primeros pasos en el mundo del testing, te invito a tomar el Curso de Introducción al Testing con JavaScript, donde aprenderás sobre todos los tipos de testing y cuándo vale la pena implementarlos en tu negocio.
Y si ya conoces del tema pero quieres especializarte en algún lenguaje, framework o metodología en específico, te recomiendo las siguientes clases,cursos y rutas de aprendizaje en Platzi:
#NuncaParesDeAprender 🤓💚
Juan eres un crack!
¡Tú también! 👏😎
Muy interesante el articulo aunque me gustaría conocer acerca de que tipo de herramientas son usadas y recomendadas para lenguajes como C#?
NUnit, NBehave, XUnit, MSTest, como runners, TDD es una prácitca, no depende de una herramienta o tecnología.
Oye Juan felicitaciones"!! De verdad que manejas bien el tema. Continúa así. Oye habré por ahí alguna pagina que me recomiendes donde puede concer mas sobre el testing?Por favor.Saludios!
Hay muchos cursos sobre testing en Platzi. Te recomiendo para comenzar el de Fundamentos de Pruebas de Software: https://platzi.com/clases/pruebas-software/. 😉
PHP ya contiene bastantes funciones para validar los inputs que nos envían los usuarios, el testing valida código en general o simplemente inputs / outputs ? Gran artículo enhorabuena
Puede probar lo que tu quieras. En este caso, el testing del que estamos hablando se refiere a probar que la aplicación funcione correctamente, no tanto a que los usuarios escriban formularios correctos.
Te recomiendo el Curso de Introducción a Laravel, en los últimos proyectos del curso estudiamos sobre testing y TDD. 😉
https://platzi.com/clases/intro-laravel/
Muy buena información, todo muy bien explicado 😉👌👌
Muy Bueno 😎
Eric Elliott in Medium
Una buena lectura
Me interesa mucho Javascript, Voy a probar cómo me va aprendiendo la metodología TDD con Jest. 😃 😃
El Curso de Unit Testing con Jest en React te puede ayudar. 😉
https://platzi.com/clases/jest/
Buen articulo, me gusto el aparte de herramientas que ayudan a escribir y correr pruebas de forma automatizada, gracias por compartir!!
Hay muchos cursos sobre testing en Platzi. Te recomiendo para comenzar el de Fundamentos de Pruebas de Software: https://platzi.com/clases/pruebas-software/. 😉
En el siguiente link explican como hacer las pruebas en Laravel (PHP).
https://platzi.com/clases/1842-intro-laravel/27118-metodologia-tdd-y-testing-http/
Tema supremamente interesante.
¡Gracias por este texto David! Venía buscando buena información sobre el tema.
@juandc que herramienta opensource recomendas, para escribir casos de prueba? (para analistas funcioales, que no aplican TDD)
Crack!
No hay algún curso que te enseñen Pruebas de API o Moviles?
Lo de las pruebas se me hace un tema super interesante, aunque aun no me queda claro lo siguiente: una vez que verifique mi función, en qué momento y cómo hago para poder usar mi función? (in python)
Quizá en algún momento haga un curso sobre eso porque me imagino que en cada lenguaje es un poco distinto.