SlideShare uma empresa Scribd logo
1 de 37
T.D.D. con Python
Python-Sevilla
@IWT2_Javier
BETA
http://www.linkedin.com/groups/PythonSevilla-4685758
Python-Sevilla
Python_Sevilla / #PySVQ
https://groups.google.com/forum/?fromgroups=#!forum/python-sevilla.
3
• Aprender los conceptos
claves de TDD.
• Empezar a practicar
haciendo TDD con
Python.
• Realizar un ejercicio de
TDD guiado.
03. T.D.D.
Objetivos
4
1. Una idea intuitiva
2. El Proceso TDD
3. Buenas Prácticas en
TDD
4. Ejemplo.
5. Extra
6. Kata ¿?
03. TDD
Índice
5
Una Idea Intuitiva
6
7
Una idea intuitiva
Constante
equivocada
Mala lógica
Variable no
declarada
Faltan enemigos
Demasiado
rápido
El Proceso TDD
10
El Proceso TDD
1. 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
12
• 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 añadir
elementos: ¿Usaremos una
llamada a un método? ¿cuál
será el nombre de ese
método? ¿Qué parámetros
tendrá y de qué tipo serán?
2. El Proceso TDD
• Decisiones sobre cómo
comprobamos que el carrito
ha almacenado correctamente
el producto. ¿qué métodos
incluimos,? ¿cuáles el
resultado esperado? ¿Hay que
escribir antes una prueba para
dicho método?
Antes de escribir
el código
pensamos cómo
queremos usarlo.
2. El Proceso TDD
El proceso de TDD
Es decir, los pasos que
vamos dando para ir
escribiendo nuevo
código
Veamos un ejemplo
completo paso a paso
2. El Proceso TDD
Escribimos un test que ponga de relieve funcionalidad
que queremos implementar
Si 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
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.
Triangulando, completando el conjunto de
pruebas o eligiendo una nueva funcionalidad.
Y cómo
continuamos?
16
Buenas Prácticas en
TDD
Buenas prácticas en TDD
1. 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 pruebas
7. Principios SOLID y GRASP.
8. Usa las herramientas adecuadas
Buenas prácticas en TDD
Código mínimo (prueba y código).
Buenas prácticas en TDD
¿Qué quiero cambiar?
Hacer el cambio
Prepararlo para más cambios
Triangular.
Buenas prácticas en TDD
Diario 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
Buenas prácticas en TDD
Diario de diseño.
Buenas prácticas en TDD
Mocks, Spyes, Doubles, Stubs, etc.
User Pedido Descuentos Database
Self
Descontar
Buenas prácticas en TDD
• Análisis de caminos
• Particiones equivalentes.
• Valores límite.
• Método Categoría-Partición
• Pruebas de integración
• Pruebas de requisitos no funcionales.
Saber de pruebas.
Buenas prácticas en TDD
Utilizar patrones. (arquitectónicos, de diseño, de prueba, de
implementación, todos )
Creation
Method
Buenas prácticas en TDD
Principios SOLID y GRASP (fuente: http://www.codeproject.com/Articles/93369/How-I-explained-OOD-to-my-wife).
Testing en Python
http://wiki.python.org/moin/PythonTestingToolsTaxonomy
Unittest, Doctest.
Nose
Mockito for Python,
Mocker, Pydoubles
Selenium, Django
Testing
Behave, PyFIT,
Lettuce
27
Ejemplo para entrar
en calor
Ejemplo
Un generador que devuelva los números pares: 2, 4, 6, 8,….
Nada que refactorizar: ni código ni
pruebas.
Para continuar necesitamos
más pruebas
Ejemplo
Un generador que devuelva los números pares: 2, 4, 6, 8,….
Ejemplo
Evitar el código repetido (sobre todo el que puede cambiar)
Ejemplo
¿Pero esto de verdad funciona? Probemos…...
Pero esto no es
TDD
32
Extra
33
Extra
Para saber más de TDD.
34
Extra
http://www.slideshare.net/Javier_J
35
Extra
Ejemplo de mocks en Python
http://iwt2-
javierj.tumblr.com/post/36695988608/mocks-en-
python-previa-python-tdd
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.
Según lo que hemos visto en este módulo, ¿qué está haciendo mal nuetsro programador?
37
Extra
Es difícil pero se puede

Mais conteúdo relacionado

Destaque

Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...
Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...
Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...Kelvin Hoogeboom
 
Guia buenas prácticas uso racional de energia en el sector de la pyme
Guia buenas prácticas uso racional de energia en el sector de la pymeGuia buenas prácticas uso racional de energia en el sector de la pyme
Guia buenas prácticas uso racional de energia en el sector de la pymeEnrique Posada
 
Vr voor kerkbezoek onderzoeksrapport versie-2
Vr voor kerkbezoek   onderzoeksrapport versie-2Vr voor kerkbezoek   onderzoeksrapport versie-2
Vr voor kerkbezoek onderzoeksrapport versie-2rloggen
 
Guia de Evaluación, Monitoreo y Supervisión para servicios de salud
Guia de Evaluación, Monitoreo y Supervisión para servicios de saludGuia de Evaluación, Monitoreo y Supervisión para servicios de salud
Guia de Evaluación, Monitoreo y Supervisión para servicios de saludAnibal Velasquez
 
INFORME DE AUDITORIA GUBERNAMENTAL
INFORME DE  AUDITORIA GUBERNAMENTALINFORME DE  AUDITORIA GUBERNAMENTAL
INFORME DE AUDITORIA GUBERNAMENTALmalbertorh
 
Currículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaCurrículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaDiego Ponce de Leon
 
Mello anthony despierta charlas sobre la espiritualidad [doc]
Mello anthony   despierta charlas sobre la espiritualidad [doc]Mello anthony   despierta charlas sobre la espiritualidad [doc]
Mello anthony despierta charlas sobre la espiritualidad [doc]Mario Paternina
 
Magazine Het Ondernemersbelang de Baronie 0212
Magazine Het Ondernemersbelang de Baronie 0212Magazine Het Ondernemersbelang de Baronie 0212
Magazine Het Ondernemersbelang de Baronie 0212HetOndernemersBelang
 
Plan estratégico seguridad de los pacientes de extremadura
Plan estratégico seguridad de los pacientes de extremaduraPlan estratégico seguridad de los pacientes de extremadura
Plan estratégico seguridad de los pacientes de extremaduraSociosaniTec
 
32 ways to make your blog suck less
32 ways to make your blog suck less32 ways to make your blog suck less
32 ways to make your blog suck lessScott Hanselman
 
Interacciones farmaco-alimento
Interacciones farmaco-alimentoInteracciones farmaco-alimento
Interacciones farmaco-alimentoGénesis Cedeño
 
Metodología de la investigacióm
Metodología de la investigaciómMetodología de la investigacióm
Metodología de la investigaciómPaul Itusaca Canaza
 
Spe salvi ben_xvi
Spe salvi ben_xviSpe salvi ben_xvi
Spe salvi ben_xviCSR
 

Destaque (20)

Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...
Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...
Hoe veilig is het werken in een verontreinigde bodem(compleet)_K.Hoogeboom_16...
 
Geld verdienen met Linkedin
Geld verdienen met LinkedinGeld verdienen met Linkedin
Geld verdienen met Linkedin
 
Guia buenas prácticas uso racional de energia en el sector de la pyme
Guia buenas prácticas uso racional de energia en el sector de la pymeGuia buenas prácticas uso racional de energia en el sector de la pyme
Guia buenas prácticas uso racional de energia en el sector de la pyme
 
Vr voor kerkbezoek onderzoeksrapport versie-2
Vr voor kerkbezoek   onderzoeksrapport versie-2Vr voor kerkbezoek   onderzoeksrapport versie-2
Vr voor kerkbezoek onderzoeksrapport versie-2
 
Alas en la oscuridad --caryangel y rous
Alas en la oscuridad --caryangel y rousAlas en la oscuridad --caryangel y rous
Alas en la oscuridad --caryangel y rous
 
Guia de Evaluación, Monitoreo y Supervisión para servicios de salud
Guia de Evaluación, Monitoreo y Supervisión para servicios de saludGuia de Evaluación, Monitoreo y Supervisión para servicios de salud
Guia de Evaluación, Monitoreo y Supervisión para servicios de salud
 
Libro el pequeño vampiro
Libro   el pequeño vampiroLibro   el pequeño vampiro
Libro el pequeño vampiro
 
INFORME DE AUDITORIA GUBERNAMENTAL
INFORME DE  AUDITORIA GUBERNAMENTALINFORME DE  AUDITORIA GUBERNAMENTAL
INFORME DE AUDITORIA GUBERNAMENTAL
 
Currículo Nacional de la Educación Básica
Currículo Nacional de la Educación BásicaCurrículo Nacional de la Educación Básica
Currículo Nacional de la Educación Básica
 
Mello anthony despierta charlas sobre la espiritualidad [doc]
Mello anthony   despierta charlas sobre la espiritualidad [doc]Mello anthony   despierta charlas sobre la espiritualidad [doc]
Mello anthony despierta charlas sobre la espiritualidad [doc]
 
Magazine Het Ondernemersbelang de Baronie 0212
Magazine Het Ondernemersbelang de Baronie 0212Magazine Het Ondernemersbelang de Baronie 0212
Magazine Het Ondernemersbelang de Baronie 0212
 
Plan estratégico seguridad de los pacientes de extremadura
Plan estratégico seguridad de los pacientes de extremaduraPlan estratégico seguridad de los pacientes de extremadura
Plan estratégico seguridad de los pacientes de extremadura
 
32 ways to make your blog suck less
32 ways to make your blog suck less32 ways to make your blog suck less
32 ways to make your blog suck less
 
Estrategias de porter
Estrategias de porterEstrategias de porter
Estrategias de porter
 
pronostico de venta
pronostico de ventapronostico de venta
pronostico de venta
 
Interacciones farmaco-alimento
Interacciones farmaco-alimentoInteracciones farmaco-alimento
Interacciones farmaco-alimento
 
Metodología de la investigacióm
Metodología de la investigaciómMetodología de la investigacióm
Metodología de la investigacióm
 
Curso de economia
Curso de economia Curso de economia
Curso de economia
 
Fkinetic
FkineticFkinetic
Fkinetic
 
Spe salvi ben_xvi
Spe salvi ben_xviSpe salvi ben_xvi
Spe salvi ben_xvi
 

Semelhante a TDD y Python

TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasOrlando Bustos Mateluna
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd introfperezplain
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development TechniquesEduardo Turiño
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturinowebcat
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizDiego Caballero
 
Pruebas de usabilidad, guerrilla style
Pruebas de usabilidad, guerrilla stylePruebas de usabilidad, guerrilla style
Pruebas de usabilidad, guerrilla styleJose Leiva
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6Manuel Garcia
 
Introducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasIntroducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasAlejandro Hernández
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoHernan Wilkinson
 
Seminario en CDA 2015 - "Mobile exploratory testing"
Seminario en CDA 2015 - "Mobile exploratory testing" Seminario en CDA 2015 - "Mobile exploratory testing"
Seminario en CDA 2015 - "Mobile exploratory testing" Federico Toledo
 
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico Toledo
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico ToledoMeetup TestingUY 2016 - hands-on de testing exploratorio - Federico Toledo
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico ToledoFederico Toledo
 

Semelhante a TDD y Python (20)

TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por PruebasTDD 101 - Introducción al Desarrollo Dirigido por Pruebas
TDD 101 - Introducción al Desarrollo Dirigido por Pruebas
 
Artalde Tdd intro
Artalde Tdd introArtalde Tdd intro
Artalde Tdd intro
 
[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques[ES] webcat 2014-03 Demystifying Development Techniques
[ES] webcat 2014-03 Demystifying Development Techniques
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino"Demystifying development techniques" por @eturino
"Demystifying development techniques" por @eturino
 
TDD
TDDTDD
TDD
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Pruebas de usabilidad, guerrilla style
Pruebas de usabilidad, guerrilla stylePruebas de usabilidad, guerrilla style
Pruebas de usabilidad, guerrilla style
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 
Frontend Developer
Frontend DeveloperFrontend Developer
Frontend Developer
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Código Limpio
Código LimpioCódigo Limpio
Código Limpio
 
Plantillas en Drupal 6
Plantillas en Drupal 6Plantillas en Drupal 6
Plantillas en Drupal 6
 
Introducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebasIntroducción al desarrollo guiado por pruebas
Introducción al desarrollo guiado por pruebas
 
S1.pdf
S1.pdfS1.pdf
S1.pdf
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intento
 
Seminario en CDA 2015 - "Mobile exploratory testing"
Seminario en CDA 2015 - "Mobile exploratory testing" Seminario en CDA 2015 - "Mobile exploratory testing"
Seminario en CDA 2015 - "Mobile exploratory testing"
 
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico Toledo
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico ToledoMeetup TestingUY 2016 - hands-on de testing exploratorio - Federico Toledo
Meetup TestingUY 2016 - hands-on de testing exploratorio - Federico Toledo
 
Kata tdd
Kata tddKata tdd
Kata tdd
 
Kata tdd
Kata tddKata tdd
Kata tdd
 

Mais de Javier_J

TDD y Python
TDD y PythonTDD y Python
TDD y PythonJavier_J
 
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebas
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebasCodemotion 2013 - Desarrollo de videojuegos dirigido por pruebas
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebasJavier_J
 
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...Javier_J
 
GamwUS. Desarrollo Diriguido por Pruebas y Videojuegos
GamwUS. Desarrollo Diriguido por Pruebas y VideojuegosGamwUS. Desarrollo Diriguido por Pruebas y Videojuegos
GamwUS. Desarrollo Diriguido por Pruebas y VideojuegosJavier_J
 
Videojuegos en Javascript con TDD y Jasmine
Videojuegos en Javascript con TDD y JasmineVideojuegos en Javascript con TDD y Jasmine
Videojuegos en Javascript con TDD y JasmineJavier_J
 
Introducción a Pruebas en Android
Introducción a Pruebas en AndroidIntroducción a Pruebas en Android
Introducción a Pruebas en AndroidJavier_J
 
GameUs - Herramientas de Desarrollo de Videojuegos
GameUs - Herramientas de Desarrollo de VideojuegosGameUs - Herramientas de Desarrollo de Videojuegos
GameUs - Herramientas de Desarrollo de VideojuegosJavier_J
 
Herramientas para el Desarrollo de Videojuegos
Herramientas para el Desarrollo de VideojuegosHerramientas para el Desarrollo de Videojuegos
Herramientas para el Desarrollo de VideojuegosJavier_J
 
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Javier_J
 
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012Javier_J
 
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012Javier_J
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanIWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanJavier_J
 
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanIWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanJavier_J
 
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012IWT2 Dojo US. Introducción a TDD. 5 octubre 2012
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012Javier_J
 
Introducción a IWT2 Dojo US. 5 noviembre 2.012
Introducción a IWT2 Dojo US. 5 noviembre 2.012Introducción a IWT2 Dojo US. 5 noviembre 2.012
Introducción a IWT2 Dojo US. 5 noviembre 2.012Javier_J
 

Mais de Javier_J (16)

TDD y Python
TDD y PythonTDD y Python
TDD y Python
 
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebas
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebasCodemotion 2013 - Desarrollo de videojuegos dirigido por pruebas
Codemotion 2013 - Desarrollo de videojuegos dirigido por pruebas
 
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...
Conferencia Agile Spain 2.013 - Programando Juegos Casuales con Desarrollo Di...
 
GamwUS. Desarrollo Diriguido por Pruebas y Videojuegos
GamwUS. Desarrollo Diriguido por Pruebas y VideojuegosGamwUS. Desarrollo Diriguido por Pruebas y Videojuegos
GamwUS. Desarrollo Diriguido por Pruebas y Videojuegos
 
Videojuegos en Javascript con TDD y Jasmine
Videojuegos en Javascript con TDD y JasmineVideojuegos en Javascript con TDD y Jasmine
Videojuegos en Javascript con TDD y Jasmine
 
Introducción a Pruebas en Android
Introducción a Pruebas en AndroidIntroducción a Pruebas en Android
Introducción a Pruebas en Android
 
GameUs - Herramientas de Desarrollo de Videojuegos
GameUs - Herramientas de Desarrollo de VideojuegosGameUs - Herramientas de Desarrollo de Videojuegos
GameUs - Herramientas de Desarrollo de Videojuegos
 
Herramientas para el Desarrollo de Videojuegos
Herramientas para el Desarrollo de VideojuegosHerramientas para el Desarrollo de Videojuegos
Herramientas para el Desarrollo de Videojuegos
 
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
Kata Tenis Completa Paso a Paso. Python Sevilla 30/11/2012
 
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012
Kata Tenis. Enunciados y soluciones alternativas. Python Sevilla 30/11/2012
 
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012
IWT2 Dojo US. Presentación, próximas actividades y agenda. 9 noviembre 2012
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanIWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
 
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: SokobanIWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
IWT2 DojoUs. 05 octubre 2012. Ejercicio: Sokoban
 
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012IWT2 Dojo US. Introducción a TDD. 5 octubre 2012
IWT2 Dojo US. Introducción a TDD. 5 octubre 2012
 
Introducción a IWT2 Dojo US. 5 noviembre 2.012
Introducción a IWT2 Dojo US. 5 noviembre 2.012Introducción a IWT2 Dojo US. 5 noviembre 2.012
Introducción a IWT2 Dojo US. 5 noviembre 2.012
 

TDD y Python

Notas do Editor

  1. Vamos a empezar viendo una idea intuitiva de la filosofía de TDD. Si alguna vez hemos escrito un programa seguro que captamos la idea enseguida.
  2. A todos nos ha pasado que entramos en un bucle corrección- ejcución – comrobación a man. Esto quema mucho 8muy repetitivo), perdemos tiempo y, si más adelnate vuelve a fallar lo que arreglamos nos desmoralizamos. Esto pasa sobee todo en los videojuegos ya que la percepciones: gráficos, jugabilidad, etc. son tan importantes. Sin embargo sí que podemos ahorrarnos trabajo (aunque al principio parezca que trabajamos ,ás) haciendo que el código compruebe al código. Con esto tenemos unos cimientos para ir avanzando.
  3. Si hemos escrito algún programa o código, seguro que se nos ha quedado la idea e que, si lo volviéramos a hacer justo al terminarlo, lo habríamos hecho muchísimo mejor. Eso es porque ya hemos descubierto no solo cómo hacerlo, sino también cómo queremos utilizarlo. Vamos dando pasos muy pequeños para segurarnos d elo que funciona y lo que no.
  4. Una vez vista la idea intuitiva vamos a definir de manera formal TDD, y cómo lo aplicaremos a lo largo de todo el curso para diseñar nuestro código.
  5. Si nos fijamos, en la prueba ya hemos tenido que tomar un conjunto de decisiones que tienen un impacto muy grande sobre el código que tendremos que escribir (en este caso la clase carrito). Piensa en esas decisiones ante de pasar a la siguiente transparencia.
  6. Las primeras decisiones que tomamos al escribir una prueba es ¿cómo creamos un objeto carrito? ¿cuál es el nombre de la clase carrito? ¿tendrá un constructor sin parámetros? Después tendremos que seguir tomando decisiones , por ejemplo cómo añadimos elementos al carrito. ¿Usaremos una llamada a un método? ¿cuál será el nombre de ese método? ¿Qué parámetros tendrá y de qué tipo serán? Estas decisiones son el diseño de nuestro código, nos condicionan como lo usaremos, la facilidad para modificarlo y probarlo y la claridad a la hora de repasarlo más adelante (incluso por otras personas). Por ello, todas estas decisiones son muy importantes.
  7. El proceso de TDD consiste en hacer lo que hemos visto en las dos transparencias anteriores y utilizar las pruebas para que nos ayuden a tomar las decisiones de diseño de código más adecuadas. Todo TDD se resume en esta imagen. Veamos la película completa y, a continuación, veremos cada elemento con más detalle. Primero centramos nuestro foco: ¿en qué vamos a trabajar a continuación? ¿acceso a datos? ¿validaciones? ¿diseñar nuevas clases? ¿implementar lógica de negocio? Una vez que hemos elegido lo que haremos a continuación y teemos claro el objetivo a conseguir, creamos una prueba. (completar).
  8. Si este ejemplo te parece trivial, tienes razón. Pero queremos que te centres en aplicar TDD y no en porblemas de programación. Ya verás como los ejercicios son bastante más elaborador. La mejor manera de aclarar las ideas e smediante un ejemplo muy muy sencillo. Tieens disponible el código del ejemplo en la plataforma virtual. ¿Por qué no vas haciendo el ejemeplo paso a paso en Eclipse? Recuerda que aquí hemos tenido que decidir cómo se llama la clase, como se crean objetos, como se lláma el método, cuáles son sus parámetros y tipo devuelto, etc..
  9. Falta el código en esta transparencia.
  10. El diario de diseño es una herramienta muy útil también cuando utilizamos TDD. Este diario no e smás que la lista de tareas que tenemos endientes de hacer, por lo general código a escribir o funcionalidad a implementar. El principal objetivo es mantenernos en todo momento con el foco centrado. ¿No te ha pasado nunca que te has concentrado mucho en escribir una prueba y luego no recordabas muy bien qué querías implementar? El diario nos ayudará con esto. Veremos todo esto con más detalles y ejemplos justo a continuación.
  11. ¿Sabías que vas a pasra más tiempo leyendo código y modificándolo que excribiéndo código nuevo?
  12. Razones para escribir el mínimo código posible (aunque parezca que no tiene valor). Realmente estamos diseñando el código, no codificando. Estamos escribiendo pruebas para todo nuestro código, si escribimos código más complejo, este no estará probado. Podemos tener algo que se ejecute, y se pruebe, my rápido.
  13. Tenemos que tener centrado el foco en lo que qeremos probar, pro eso tomamos notas d elas cosas que van surgiendo y que hay que hacer. No confundir esto con los requisitos Documental Indy Game El diario de diseño es una herramienta muy útil también cuando utilizamos TDD. Este diario no e smás que la lista de tareas que tenemos endientes de hacer, por lo general código a escribir o funcionalidad a implementar. El principal objetivo es mantenernos en todo momento con el foco centrado. ¿No te ha pasado nunca que te has concentrado mucho en escribir una prueba y luego no recordabas muy bien qué querías implementar? El diario nos ayudará con esto.
  14. Tenemos que tener centrado el foco en lo que qeremos probar, pro eso tomamos notas d elas cosas que van surgiendo y que hay que hacer. No confundir esto con los requisitos Documental Indy Game El diario de diseño es una herramienta muy útil también cuando utilizamos TDD. Este diario no e smás que la lista de tareas que tenemos endientes de hacer, por lo general código a escribir o funcionalidad a implementar. El principal objetivo es mantenernos en todo momento con el foco centrado. ¿No te ha pasado nunca que te has concentrado mucho en escribir una prueba y luego no recordabas muy bien qué querías implementar? El diario nos ayudará con esto.
  15. ¿Cómo porbarías este método? No devuelve nada Necesita al menos cuatro objetos adicionales: databse, user, pedido, descuentos ¿Tengo que tenerlos ya implementados y probados? La solucióne s aplicar mocks. < definiciónd e mocks >
  16. A la vista de un código, ¿cómo sé qué tengo que probar? ¿Cómo sé cuáles son las pruebas relevantes y las repetidas? << Buscar una imagen que vaya en esta línea >>
  17. En este ejemplo estamos aplicando el patrón de prueba Creation Method documentado en el libro xUnit Test Patterns Este patrón en concreo se utiliza para ocultar los detalles de la creación de objetios a la prueba y tenerlos localizados en un único punto de cambio, ya que estos detalles por ejemplo los constructores) pueden ir cmabiando en la construcción incremental del código
  18. Si no hemos utilizado TDD uno de los principales diferencias es que muchas de las clases que surgen no las decidimos nsootros sino que surgen en las refactorizaciones. Para identificar claramente cuando hemos de crear una nueva clase y dónd eponer los nuevos métodos que van suriendo utilizamos los principios SOLID y GRASP
  19. Elegir la herramienta de tetsing adecuada. Pydoubles:
  20. Es importante que todos usemos ls mismas palabras para referirnos a los mismos conceptos.
  21. Lo cambios que hagamos al código deben seguir haciendo que la primera prueba funcione. Si no, paramos, escribimos una prueba como queremos que sea el código, la pasamos y continuamos.
  22. ¿Por qué esto no es TDD? Porue no estoye scirbiendo una prueba para que falle y añadir una nueva prueba. ¿Es malo escribir pruebas sin hacer TDD? No. ¿Es malo añadir esta prueba? Puede, ya que esta prueba hace lo mismo que las otras. Sirve para darnos sgeuridad peor no busca un error que no bsuque las anteriores. Es c´doigo redundánte que dbeería quitarse en el omento en que haya que mnatenerlo.
  23. Hora de poner en práctica todo lo aprendido.
  24. Comparte tus comentarios a esta viñeta en los foros del curso.