TDD y Python

1,439 views

Published on

Introducción a TDD y Python. Analizamos por qué hacer TDD y vemos un ejemplo de TDD accediendo al sistema de ficheros.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,439
On SlideShare
0
From Embeds
0
Number of Embeds
53
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

TDD y Python

  1. 1. TDD y Python javierj@us.es / @IWT2_Javier
  2. 2. TDD no es probar 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test.
  3. 3. Esto es todo Gracias por su atención
  4. 4. La complejidad “Test-Driven Development (TDD) is a deceptively simple idea” “El Desarrollo Dirigido por Pruebas (TDD) es una idea engañosamente simple”
  5. 5. ¿Qué buscamos? ¿Por qué querríamos hacer TDD?
  6. 6. La complicación
  7. 7. Una buena manera de aplicar TDD
  8. 8. Ahora a por un problema Hazme un programa que me busque ficheros del mismo tamaño y me los borre.
  9. 9. Piensa
  10. 10. Y tú, ¿qué harías? Con TDD
  11. 11. Escribe una prueba Mi primera prueba: Arrange: Un directorio Dos ficheros iguales dentro de ese directorio Act: Llamar al algoritmo de borrado Assert: Uno de los ficheros ya no está y el otro sí
  12. 12. Escribe una prueba Mi primera prueba: Arrange: Un directorio Dos ficheros iguales dentro de ese directorio Act: Llamar al algoritmo de borrado ¿Creo un directorio y dos ficheros a mano? Tengo que crearlo cada vez que ejecute la prueba ¿Creo un directorio y fichero con código? Tengo que aprender a hacerlo y necesito código para restaurarlo Assert: Uno de los ficheros ya no está y el otro sí ¿Obtengo un listado de los ficheros? Tengo que aprender a hacerlo No lo necesito (aún)
  13. 13. Vamos a escribir código Snippet 01
  14. 14. TDD = ¡¡¡ Piensa !!!! Directorio Dame Ficheros Borra este Borrado de ficheros
  15. 15. Utilizando Dobles de Prueba • Diseñamos el API que queremos. • No nos preocupamos por la implementación • Verificaos qué se está invocando • Devolvemos los valores adecuados para la prueba
  16. 16. Single Repsonsibility Principle A CLASS SHOULD HAVE ONLY ONE REASON TO CHANGE.
  17. 17. ¿Cuál es el mínimo código? Snippet 02
  18. 18. Vuelta a empezar Snippet 03
  19. 19. ¿Y qué hacemos con los mocks?
  20. 20. ¿Qué hacemos con los mocks? Cuando el directorio está vacío entonces no tengo ficheros. Cuando borro un fichero el directorio tiene un fichero menos. Cuando recupero un fichero de un directorio entonces puedo conocer su nombre. Cuando recupero un fichero de un directorio entonces puedo conocer su tamaño. Etc. Directorios temporales en Python (módulo tempfile)
  21. 21. ¿Y cuando lo ponemos todo junto?
  22. 22. En el mundo real
  23. 23. Conclusiones de este ejemplo • • • ¿Cómo leemos los ficheros de un directorio? ¿Cómo borramos ficheros? ¿Cómo leemos el tamaño de un fichero? • Cómo podemos leer una única vez cada directorio? • ¿Cómo sabemos si hay más de un fichero con el mismo tamaño? • UI
  24. 24. Retrospectiva de lo que Hemos Hecho Nos centramos en el algoritmo Mejora el diseño Hay que cambiar muchos tets si cambiamos código Tardamos más en terminar
  25. 25. Testing en Python Unittest, Doctest, N ose Mockito for Python, Mocker, Pydou bles Selenium, Django Testing Behave, PyFIT, Lettu ce, Mamba http://wiki.python.org/moin/PythonTestingToolsTaxonomy
  26. 26. Advertencia TDD Yo
  27. 27. Conclusiones Pruébalo y elige
  28. 28. Extra Para saber más de TDD. 28
  29. 29. ¿Quién soy yo?
  30. 30. Extra 10.000 líneas de código C#... Comprobado…. 124 assemblies .NET generados…. Comprobado…. 52 scripts de construcción… comprobado Ahora que mis pruebas unitarias están escritas puedo empezar a construir mis componentes.
  31. 31. Extra 31
  32. 32. Enlaces • • • • • • Blog: http://iwt2-javierj.tumblr.com/ Libro: http://www.iwt2.org/web/opencms/IWT2/comunidad/LibroTDD/?locale=es GameUS: http://www.gameus.es/ IWT2 DojoUS: http://www.iwt2.org/web/opencms/IWT2/comunidad/dojous/?locale=es Pybonacci: http://pybonacci.wordpress.com/2013/01/07/desarrollo-dirigido-por-pruebas-enpython-i-una-historia-que-pasa-todos-los-dias/#more-1352 http://pybonacci.wordpress.com/2013/06/19/desarrollo-dirigido-por-pruebas-enpython-ii-un-caso-practico-i/ Twitter: @IWT2_Javier/ @GameUsSev / @TDDPractico Fin 32
  33. 33. Ahora sí FIN

×