Principios del Test Driven Development con Python
Los veteranos suelen decir que los trabajos más complicados suelen ser aquellos que involucran partir del “desastre” de alguien más, pero, cuando se trata de programación, ¿Qué hay de nuestros propios desastres? El Test Driven Development (TDD) viene al rescate.
Esta metodología viene de perlas para evitar que tengas que lidiar con los desastres que causó el tú de las 3am con 5 tazas de café encima y un estrés que probablemente esté contribuyendo a generar entradas y no solo monetarias, lamentablemente.
¿Qué es el Test Driven Development?
Es una práctica de desarrollo de software / enfoque / metodología que se centra en escribir pruebas automatizadas antes de escribir el código de la funcionalidad real. La principal ventaja del TDD es que garantiza que el código esté respaldado por pruebas automatizadas sólidas, lo que reduce la probabilidad de errores y facilita la detección temprana de problemas. También promueve un diseño de software modular y más mantenible.
Mitigar todas las fallas que puedan llegar a darse, es bastante utópico, hay cosas que se pasan por alto por el error humano que está presente o factores externos no controlables, pero no por ello es sensato decir que sea mejor opción entregarse a la improvisación, el resultado claramente sería caótico con el segundo curso de acción en un proyecto serio.
¿Te gustaría aprender Test Driven Development con Python? En Azul School tenemos un curso para iniciar desde cero. Tambien encontraras toda una ruta de aprendizaje para empezar desde cero en Python: Ruta de aprendizaje – Python desde cero.
Principios del TDD
Como bien se mencionó anteriormente, son dos pasos claves, pero el curso de acción general, al ser detallado, se añaden 2 pasos/principios más:
- Escribir las pruebas: En primer lugar, se crea una prueba automatizada que describe el comportamiento que se espera de la nueva funcionalidad o característica del software. Esta prueba inicial debe fallar porque la funcionalidad aún no se ha implementado.
- Escribir el código/lógica a implementar: A continuación, se escribe el código necesario para que la prueba pase con éxito. El objetivo es escribir la cantidad mínima de código que cumple con los requisitos de la prueba.
- Ejecutar las pruebas: Se ejecutan todas las pruebas automatizadas existentes para asegurarse de que la nueva funcionalidad no haya afectado negativamente otras partes del software. Si alguna prueba falla, se debe corregir el código hasta que todas las pruebas pasen nuevamente.
- Refactorizar el código: Después de que las pruebas pasen con éxito, se puede realizar una refactorización del código para mejorarlo en términos de legibilidad, eficiencia u otros aspectos. La clave es que la refactorización no debe introducir nuevos errores, y las pruebas deben asegurar que el comportamiento funcional del software se mantenga intacto
Hay autores que prefieren dejar estos principios en 3, donde el segundo incluye al tercero, pero al final del día, la metodología sigue siendo la misma y su “bucle” base no varía en cuando a su aplicación.
¿Cómo se implementa el TDD con Python?
Pytest es la respuesta, este framework es bastante útil para facilitar el escribir, organizar y ejecutar pruebas. Cabe destacar que Python tiene una biblioteca estándar con un marco de pruebas conocido como unittest, pero Pytest presenta ciertas ventajas en cuanto a menos redundancia y actualizaciones más frecuentes que lo hacen una mejor opción.
Aparte de esto, existen varios complementes mantenidos por la comunidad que lo hacen bastante llamativo, el equipo del aula de software libre de la Universidad de Córdoba hizo una excelente lista con varios ejemplos al respecto:
- Pytest-django : proporciona un conjunto de herramientas creadas específicamente para probar aplicaciones de Django
- Pytest-xdist : se usa para ejecutar pruebas en paralelo
- Pytest-cov : agrega soporte de cobertura de código
- Pytest-instafail : muestra fallas y errores inmediatamente en lugar de esperar hasta el final de una ejecución
Así que, si se trata de cultivar mejores prácticas de programación con Python, aprender e implementar el Test Driven Development (TDD), es un paso de admirar. Porque para tener un buen código limpio, es necesario contar con buenos hábitos al programar. Es mejor un momento fuera del confort que 50 horas de buscar un bug, para que al final resulte ser un
proyecto.
Respuestas