TDD y Python

1,305 views

Published on

Una visión global de cómo aplicar Test-Driven Development en Python

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,305
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
15
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

TDD y Python

  1. 1. T.D.D. con Python Python-Sevilla@IWT2_Javier
  2. 2. Python-Sevilla Python_Sevilla / #PySVQhttp://www.linkedin.com/groups/PythonSevilla-4685758 https://groups.google.com/forum/?fromgroups=#!forum/python-sevilla.
  3. 3. 03. T.D.D. • Aprender los conceptos claves de TDD. • Empezar a practicar haciendo TDD con Python. • Realizar un ejercicio de TDD guiado.Objetivos 3
  4. 4. 03. TDD 1. Una idea intuitiva 2. El Proceso TDD 3. Buenas Prácticas en TDD 4. Ejemplo. 5. Extra 6. Kata ¿?Índice 4
  5. 5. Una Idea Intuitiva 5
  6. 6. 6
  7. 7. Una idea intuitivaDemasiado Constante Variable no rápido equivocada declaradaFaltan enemigos Mala lógica 7
  8. 8. El Proceso TDD
  9. 9. El Proceso TDD 10
  10. 10. 2. El Proceso TDD• Suponemos que estamos escribiendo una prueba para una clase que funciona como un carrito de la compra que aún no ha sido escrita.• Veamos un posible caso de prueba
  11. 11. 2. El Proceso TDD• Estamos tomando decisiones de diseño:• Decisiones sobre cómo crear un carrito: ¿cuál es el nombre de la clase X? ¿Tendrá un constructor sin parámetros? • Decisiones sobre cómo• Decisiones sobre añadir comprobamos que el carrito elementos: ¿Usaremos una ha almacenado correctamente Antes de escribir el producto. ¿qué métodos llamada a un método? ¿cuál el código será el nombre de ese cómo incluimos,? ¿cuáles el pensamos resultado esperado? ¿Hay que método? ¿Qué parámetros queremos usarlo. tendrá y de qué tipo serán? escribir antes una prueba para dicho método? 12
  12. 12. 2. El Proceso TDD El proceso de TDDEs decir, los pasos que vamos dando para ir escribiendo nuevo código Veamos un ejemplocompleto paso a paso
  13. 13. 2. El Proceso TDDEscribimos un test que ponga de relieve funcionalidad que queremos implementarSi la prueba no falla estudiamos qué está sucediendo y elegimos otra. Escribimos el código mínimo (más corto) para que la prueba pase con éxito. No nos preocupamos de escribirlo bonito, tenemos libertad para tomar atajos
  14. 14. 2. El Proceso TDD Ejecutamos la prueba y cambiamos el código hasta que la prueba funciona. Quitamos los atajos y refactorizamos el código y las pruebas.Y cómo Triangulando, completando el conjunto decontinuamos? pruebas o eligiendo una nueva funcionalidad.
  15. 15. Buenas Prácticas en TDD 16
  16. 16. Buenas prácticas en TDD1. Código mínimo (prueba y código).2. Triangular.3. Diario de diseño.4. Buenas herramientas de prueba (mocks).5. Saber de pruebas.6. Utilizar patrones de diseño y de pruebas7. Principios SOLID y GRASP.8. Usa las herramientas adecuadas
  17. 17. Buenas prácticas en TDDCódigo mínimo (prueba y código).
  18. 18. Buenas prácticas en TDDTriangular. ¿Qué quiero cambiar? Hacer el cambio Prepararlo para más cambios
  19. 19. Buenas prácticas en TDDDiario de diseño. Un fondo negro Un cuadrado rojo El cuadrado en el centro y en la parte baja de la pantalla Si pulso  mueve a la derecha Si pulso  mueve a la izquierda
  20. 20. Buenas prácticas en TDDDiario de diseño.
  21. 21. Buenas prácticas en TDDMocks, Spyes, Doubles, Stubs, etc. Self User Pedido Descuentos Database Descontar
  22. 22. Buenas prácticas en TDDSaber de pruebas. • Análisis de caminos • Particiones equivalentes. • Valores límite. • Método Categoría-Partición • Pruebas de integración • Pruebas de requisitos no funcionales.
  23. 23. Buenas prácticas en TDDUtilizar patrones. (arquitectónicos, de diseño, de prueba, deimplementación, todos ) Creation Method
  24. 24. Buenas prácticas en TDDPrincipios SOLID y GRASP (fuente: http://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife).
  25. 25. Testing en Python Unittest, Doctest, Nose Mockito for Python, Mocker, Pydou bles Selenium, Django Testing Behave, PyFIT, Lettu cehttp://wiki.python.org/moin/PythonTestingToolsTaxonomy
  26. 26. Ejemplo para entrar en calor 27
  27. 27. EjemploUn generador que devuelva los números pares: 2, 4, 6, 8,…. Nada que refactorizar: ni código ni Para continuar necesitamos pruebas. más pruebas
  28. 28. EjemploUn generador que devuelva los números pares: 2, 4, 6, 8,….
  29. 29. EjemploEvitar el código repetido (sobre todo el que puede cambiar)
  30. 30. Ejemplo¿Pero esto de verdad funciona? Probemos…... Pero esto no es TDD
  31. 31. Extra 32
  32. 32. Extra Encuesta de calidad (en OpinaHQ) http://opinahq.com/app/c/1460@IWT2_Javier / javierj@us.es
  33. 33. ExtraPara saber más de TDD. 34
  34. 34. Extrahttp://www.slideshare.net/Javier_J 35
  35. 35. Extra Ejemplo de mocks en Pythonhttp://iwt2-javierj.tumblr.com/post/36695988608/mocks-en-python-previa-python-tddEjemplo de Behave en Pythonhttp://iwt2-javierj.tumblr.com/post/36762766836/atdd-bdd-con-python-y-behave-previa-python-tdd 36
  36. 36. ExtraSegún lo que hemos visto en este módulo, ¿qué está haciendo mal nuetsro programador? 10.000 líneas de código C#... Comprobado…. 124 assemblies .NET Ahora que mis pruebas unitarias generados…. Comprobado…. 52 están escritas puedo empezar a scripts de construcción… construir mis componentes. comprobado
  37. 37. ExtraEs difícil pero se puede 38

×