TDD en Python Javier Andrés Mansilla - Except Test Driven Development
Resumen de la charla Introducción PyUnit Procedimiento general TDD a través de un ejemplo Conceptos importantes Conclusiones
Introducción Porqué testear? ✔ Los programadores somos humanos, y cometemos errores Porqué testear unidades mínimas? ✔ Garantizar el correcto funcionamiento de un soft (como un todo), es tarea muy difícil, casi imposible ✔ Solución: construir el programa como la unión de unidades mínimas (atómicas) de las cuales es inmediato asegurar corrección
Introducción (cont.) Software testing vs. TDD ✔ Software testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software. 1 ✔ It is good to emphasize the fact that TDD is not a method of testing, but a method of designing software
Introducción (cont.) Con TDD podemos asegurar: ✔ que se genera sólo la porción de código necesaria para satisfacer el objetivo ✔ que todo el código está testeado (cubierto por tests) ✔ rápida retroalimentación sobre la corrección del programa (por ejemplo, al momento de refactorizar código)
Es un framework de testeo para Python Deriva de JUnit, Smalltalk-Unit Provee: ✔ Automatización ✔ Código compartido para inicialización/finalización ✔ Agrupación en colecciones PyUnit
Procedimiento general ● Preparar el entorno para el/las prueba/s ● Crear el caso de prueba ● Chequear el resultado de la corrida de ese caso de prueba ● Si hubo falla/s, generar/corregir el código necesario para satisfacer el caso de prueba ● Si no, agregar más casos de prueba
Gráficamente...
TDD by example
self.assert_
self.assert_ (cont.) A lo que teníamos le agregamos:
self.assertEqual
self.assertEqual (cont.) A lo que teníamos le agregamos:
Adecuando el entorno
Redefiniendo código A lo que teníamos le agregamos:
self.assertRaises
self.assertRaises (cont.) Sigue siendo válido el código que teníamos:
Un poquito de robustez
Versión final de __init__
Agregando nuevas clases
Versión inicial de depositar
Agregando casos de prueba
Segunda versión de depositar
Método especial: setUp
Otro caso de prueba más...
Versión final de depositar A lo que teníamos le agregamos:
Duplicación de código
Superclase: OperacionCaja
Heredando...
test suite & test runner
Consideraciones finales TDD es una herramienta fundamental para desarrollo ágil. TDD es especialmente útil cuando se debe resolver un problema que no está totalmente definido, o cuando el cliente no sabe exactamente lo que quiere. Por ende, su utilización es ideal en ambientes de desarrollo iterativo.
Preguntas? La última versión de esta presentación está disponible en: