Kata con Python                 Python-Sevilla@IWT2_Javier
Objetivos             • Resolver la kata Tenis               con TDD y Python             • Exponer errores y ver la      ...
Índice         1. Repaso de TDD         2. Kata Tennis.         3. PowerPoint-Driven             Development.         4. P...
Kata: Tennis               4
Cata - Tenis                         Reglas                         • un jugador comienza con puntación 0.                ...
Cata - Tenis                         Metas:                         • Los jugadores deben poder                           ...
PowerPoint-Driven   Development                    7
La primera prueba   No intentes hacerlo todo de             golpe.   • Elige algo pequeño y     simple.   • Escribe una pr...
La Segunda Prueba         ¿…y ahora?   • ¿Cuál es la prueba que te     hace avanzar más?   • Por ejemplo puedes     contin...
Ha pasado el tiempo          ¿atascado?    • No te preocupes si tienes      que volver a empezar.    • No es una pérdida d...
Esto se acaba  ¿Has terminado?• ¿Y si intentas simular una  partida de tenis con  números aleatorios?. ¿No has terminado?•...
Random Tenis               12
Random Tennis• ¿Y si se calcula aleatoriamente el jugador que gana?• ¿Y si ejecuto muchos partidos seguimos y  compruebo q...
Random TenisRandomPlay aún no    está hehco
Random Tenis                                                            Esto no es código de                              ...
Random TenisEste test no debería de fallar si todo lo hicimos        bien (y el test está bien escrito)
Random Tenis                            Ooops, demasiado lento. No vale                                para prueba unitari...
Otras soluciones                   18
Otras soluciones           TDD in Python in 5 minutesSetScore                          TestSetWinning: 6 pruebas          ...
Otras solucionesTDD in Python in 5 minutes
Otras soluciones              Solveet. Kata TDDSin pruebasPlayerMétodo game  https://github.com/andrewnix/Kata-Tennis-Pyth...
Otras solucionesMétodo game
Otras Soluciones           Solveet. Kata TDD           Sin pruebas           Decorador         Métodohttps://github.com/an...
Otras Soluciones           Solveet. Kata TDD           Sin pruebas           Decorador         Métodohttps://github.com/an...
Otras Soluciones           Solveet. Kata TDDPruebas a ojoGamePlayer
Otras SolucionesPruebas a ojoGamePlayer
Otras SolucionesSolveet. Kata TDD
Actividades                   • Consulta las solucioens                     si pruebas                   • ¿Crees que habr...
Extras         29
Extras• Repositorio GitHub:  https://github.com/javierj/kata-dojous   http://www.slideshare.net/Javier_J                  ...
Extra Ejemplo de mocks en Pythonhttp://iwt2-javierj.tumblr.com/post/36695988608/mocks-en-python-previa-python-tddEjemplo d...
Python-Sevilla     Python_Sevilla / #PySVQhttp://www.linkedin.com/groups/PythonSevilla-4685758    https://groups.google.co...
Upcoming SlideShare
Loading in …5
×

Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012

1,059 views

Published on

Kata Tenis para practicar TDD en la reunión Python Sevilla del 30/11/2012

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

  • Be the first to like this

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

No notes for slide

Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012

  1. 1. Kata con Python Python-Sevilla@IWT2_Javier
  2. 2. Objetivos • Resolver la kata Tenis con TDD y Python • Exponer errores y ver la manera de detectarlos. • Comparar distintas soluciones desarrolladas con TDD.Objetivos 2
  3. 3. Índice 1. Repaso de TDD 2. Kata Tennis. 3. PowerPoint-Driven Development. 4. Primer diseño (y pruebas). 5. Continuamos. 6. Refactorizar la clase Player. 7. El Partido de Tenis. 8. Random tennis 9. Conclusiones.Índice 10. Otras soluciones. 11. Extra 3
  4. 4. Kata: Tennis 4
  5. 5. Cata - Tenis Reglas • un jugador comienza con puntación 0. • Los puntos se ganan en esta secuencia: 0 -> 15 -> 30 - > 40. • Si un jugador consigue 40 y puntúa de nuevo, el jugador gana el juego si el otro no tiene 40 puntos. • Si los dos jugadores tienen al mismo tiempo 40 puntos, se llama "iguales" (deuce en inglés) • Puntuar durante iguales, da al jugador "ventaja". Si el otro jugador puntúa en ese momento, la puntuación vuelve a iguales. • Si un jugador tiene "ventaja" y puntúa de nuevo, el jugador gana el juego.http://www.solveet.com/exercises/Kata-Tennis/13 5
  6. 6. Cata - Tenis Metas: • Los jugadores deben poder ganar puntos. • El juego debe terminar con un ganador. • Debes de manejar la casuística de "iguales" • Después de terminar el juego, debe determinarse quién es el ganador. • Debe ser posible obtener laAplica TDD de manera puntuación de cualquier de estricta. los jugadores en cualquier momento del partido. 6
  7. 7. PowerPoint-Driven Development 7
  8. 8. La primera prueba No intentes hacerlo todo de golpe. • Elige algo pequeño y simple. • Escribe una prueba que lo muestre. • Codifica la prueba. • Por ejemplo: pasar de 0 a 15 o el match aún no ha terminado 8
  9. 9. La Segunda Prueba ¿…y ahora? • ¿Cuál es la prueba que te hace avanzar más? • Por ejemplo puedes continuar con las puntuaciones hasta la casuística de los 40. • Recuerda refactorizar. 9
  10. 10. Ha pasado el tiempo ¿atascado? • No te preocupes si tienes que volver a empezar. • No es una pérdida de tiempo. Ya verás como la siguiente vez te sale una solución MUCHO MEJOR. 10
  11. 11. Esto se acaba ¿Has terminado?• ¿Y si intentas simular una partida de tenis con números aleatorios?. ¿No has terminado?• Refactoriza y que quede bonito 11
  12. 12. Random Tenis 12
  13. 13. Random Tennis• ¿Y si se calcula aleatoriamente el jugador que gana?• ¿Y si ejecuto muchos partidos seguimos y compruebo que todo funciona correctamente?• Esto ya no son pruebas unitarias.• Si podemos hacerlo sin cambiar una coma de nuestro código es una buena indicación (si no, intentamos documentar los problemas con pruebas y corregimos nuestro código) Vamos a hacerlo
  14. 14. Random TenisRandomPlay aún no está hehco
  15. 15. Random Tenis Esto no es código de producción ,sino de pruebas Todo funciona a la primeraPor qué limitarnos a un único partido? Por qué no jugamos10.000? Vamos a hacerlo
  16. 16. Random TenisEste test no debería de fallar si todo lo hicimos bien (y el test está bien escrito)
  17. 17. Random Tenis Ooops, demasiado lento. No vale para prueba unitaria.Pues parece que funciona.
  18. 18. Otras soluciones 18
  19. 19. Otras soluciones TDD in Python in 5 minutesSetScore TestSetWinning: 6 pruebas TestScoreNames: 1 prueba http://css.dzone.com/articles/tdd-python-5-minutes
  20. 20. Otras solucionesTDD in Python in 5 minutes
  21. 21. Otras soluciones Solveet. Kata TDDSin pruebasPlayerMétodo game https://github.com/andrewnix/Kata-Tennis-Python/
  22. 22. Otras solucionesMétodo game
  23. 23. Otras Soluciones Solveet. Kata TDD Sin pruebas Decorador Métodohttps://github.com/andrewnix/Kata-Tennis-Python/
  24. 24. Otras Soluciones Solveet. Kata TDD Sin pruebas Decorador Métodohttps://github.com/andrewnix/Kata-Tennis-Python/
  25. 25. Otras Soluciones Solveet. Kata TDDPruebas a ojoGamePlayer
  26. 26. Otras SolucionesPruebas a ojoGamePlayer
  27. 27. Otras SolucionesSolveet. Kata TDD
  28. 28. Actividades • Consulta las solucioens si pruebas • ¿Crees que habrían salido estas soluciones haciendo TDD? • ¿Serías capa de escribir prueba spara ese código tal cuál está escrito, sin modificarlo?Autoevalua TDD 28
  29. 29. Extras 29
  30. 30. Extras• Repositorio GitHub: https://github.com/javierj/kata-dojous http://www.slideshare.net/Javier_J 30
  31. 31. 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 31
  32. 32. Python-Sevilla Python_Sevilla / #PySVQhttp://www.linkedin.com/groups/PythonSevilla-4685758 https://groups.google.com/forum/?fromgroups=#!forum/python-sevilla.

×