SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
Desarollando
  aplicaciones web
      en python


           Tati Al-Chueyr
            @globocom


PyConAr – 23 Septiembre de 2011, Junín
Desarollando
  aplicaciones web
      en python
    con pruebas

           Tati Al-Chueyr
            @globocom


PyConAr – 23 Septiembre de 2011, Junín
__intro__
tati.__doc__
●
    ingeniera en informática (Unicamp)
●
    analista desarrolladora G1 (globo.com)
●
    alumna maestria en informática PUC-Rio
●
    entusiasta de software libre desde 2002
●
    contribución más importante: InVesalius
●
    pythonista y miembro de APyB
●
    en el tiempo libre, juga de desarollar con
    #android y/o #arduino
tati.__file__
globo.com
●
    crea y mantiene las tecnologías web de Globo
●
    5 areas: noticias deportes entretenimiento tecnología videos
●
    10 + anõs
●
    400.000 ++ subscriptores
●
    250 + profesionales de tecnología
●
    25 + equipos scrum
globo.com
●
    45 millones de visitas diarias
●
    1.800.000 visitas por hora
●
    32.000 accesos por minuto
globo.com
●
    110 Gbps de banda
●
    12.000.000+ líneas de código en producción
●
    1.000 + servidores
●
    100.000.000 + de vídeos servidos / mes
●
    500 + terabytes de tráfico sólo durante la
    transmisión de la Copa del Mundo 2010
__main__
1
 IZ
 U

      ¿qué sabes acerca de pruebas?
Q




(a) siempre hago desarollo basado en pruebas
(b) cuándo tengo tiempo, lo hago
(c) alguién ha mencionado eso, pero no practico
(d) a mi no me gusta, muy aburrido
(e) no conosco nada acerca pruebas     Respuestas
                                       (a) 5
                                       (b) 15
                                       (c) 3
                                       (d) 1
                                       (e) 8
ejemplo 1 – inventor dulce de leche
problema: tiene un programa de preguntas y respuestas, e debes implementar la
función
quien_fue_el_inventor_del_dulce_de_leche
que contesta la pregunta con la verdadeira
respuesta.
ejemplo 1 – inventor dulce de leche

               preguntas_y_respuestas.py
ejemplo 1 – inventor dulce de leche

               preguntas_y_respuestas.py




                test_preguntas_y_respuestas.py
ejemplo 1 – inventor dulce de leche

               preguntas_y_respuestas.py




                test_preguntas_y_respuestas.py
ejemplo 1 – inventor dulce de leche

           preguntas_y_respuestas.py
observación
●   A seguir...
    vamos utilizar el software DojoTools
    un semáforo adaptado con Arduino
    desarrollado por @turicas y @ tati_alchueyr
    para soporte a Coding Dojos

●   Se interesó por Arduino?
    Veja la charla “Robótica con Python y Arduino”, a las 15:30, con
    Álvaro Justen, en la sala 35
ejemplo 1 – inventor dulce de leche


            Moraleja del Ejemplo 1

    La prueba no debe caberse al programa

    El programa debe comprometerse con la
    verdad
ejemplo 2 – pronóstico del tiempo
ejemplo 2 – pronóstico del tiempo
problema: la temperatura es originalmente en
farenheit y hay que convertela a grados
celcius


        ¿alguien recuerda la formula?
ejemplo 2 – pronóstico del tiempo
problema: la temperatura es originalmente en
farenheit y hay que convertela a grados
celcius


             °F = °C x 9/5 + 32

             °C = (°F - 32) x 5/9
ejemplo 2 – pronóstico del tiempo

                  °C = (°F - 32) x 5/9



                                     utils_tiempo.py
     2




         ¿esta listo?                                  Respuestas
 IZ
 U




                                                       (a) 0
Q




                                                       (b) 0
         (a) si                                        (c) 0
         (b) no
         (c) quizas
ejemplo 2 – pronóstico del tiempo

                  °C = (°F - 32) x 5/9



                                     utils_tiempo.py
     2




         ¿esta listo?                                  Respuestas
 IZ
 U




                                                       (a) 0
Q




                                                       (b) 0
         (a) si                                        (c) 0
         (b) no
         (c) quizas
ejemplo 2 – pronóstico del tiempo
¿que pasa?




 test_utils_tiempo.py
                           fail
ejemplo 2 – pronóstico del tiempo
¿que pasa?


  test_utils_tiempo.py




  utils_tiempo.py




http://stackoverflow.com/questions/455612/python-limiting-floats-to-two-decimal-points
ejemplo 2 – pronóstico del tiempo
¿que pasa?


test_utils_tiempo.py




utils_tiempo.py




utils_tiempo.py
ejemplo 2 – pronóstico del tiempo


             Moraleja del Ejemplo 2

    Es importante pruebar los posibles casos
    de error de su función.

    Si la función realizar operaciones con
    números, pueden ser útiles: valor nulo,
    número negativo y valores flotantes.
TDD Test Driven Development
1) Escribir pruebas que fallan
2) Escribir código para que pruebas pasen
TDD – Test Driven Development
TDD suena muy simple, ¿verdad?
Entonces ¿por qué no todos lo hacen el 100% del tiempo?


Es complicado ...
●   Los plazos
●   Gestión no técnica


●   Obligaciones concurrentes
●   La mala planificación / estimaciones


●   Algunos códigos no se prestan fácilmente a TDD
●   En algunos casos, TDD no tiene sentid
Tests are vivos
     "Si usted hace su análisis correcto, usted nunca se
     encontrará con un escenario en el que la producción
     de pruebas no había previsto.




●
    No pensar en ellos como algo que tiene que "hacer
    llegar"
●
    Independientemente de cómo / cuando llegue la prueba
    de escritura de hecho, se los revisa de manera regular
BDD – Behavior Driven Dev
BDD – Behavior Driven Dev
●
    pruebas que simulan lo que los usuarios
    hagan
●
    pruebas de browser
●
    más complejos que un test de una función
Lettuce: Python's cucumber
●
    Behaviour driven development
●
    http://lettuce.it
BDD in Python with Lettuce
BDD in Python with Lettuce
BDD in Python with Lettuce
Splinter: automatizar acciones web

 ●
     http://splinter.cobrateam.info
 ●
     interfaz limpia par hacer cosas in web
 ●
     puede ser usado para pruebas
 ●
     o para automatización de cosas en general
Splinter: automatizar acciones web
Splinter: automatizar acciones web
Splinter: automatizar acciones web
¿como vender pruebas?
Hay muchas cosas que pueden hacer el mal en las pruebas
●   El error más grande no es invertir tiempo para escribir la
    prueba
●   "El código no probado se rompe por el diseño"


Cómo vender a su jefe?
●   Ahorro de dinero
●   Ahorro de tiempo de desarrollo ($$$)
●   Los desarrolladores más felices
●   Ahorro de tiempo en el control de calidad ($$$)
●   confianza
más herramientas

Nose: pypi.python.org/pypi/nose
Coverage: pypi.python.org/pypi/coverage
Mock: pypi.python.org/pypi/mock


Jenkins: http://jenkins-ci.org/
1
 IZ
 U

      ¿qué sabes acerca de pruebas?
Q




(a) siempre hago desarollo basado en pruebas
(b) cuándo tengo tiempo, lo hago
(c) alguién ha mencionado eso, pero no practico
(d) a mi no me gusta, muy aburrido
(e) no conosco nada acerca pruebas     Respuestas
                                       (a) 0
                                       (b) 0
                                       (c) 0
                                       (d) 0
                                       (e) 0
¿conoces python y django?
¿quieres trabajar con nosotros?
¿dudas?
muchas gracias!



identi.ca: @tatialchueyr
 twitter: @tati_alchueyr

 http://tatialchueyr.com

Más contenido relacionado

Similar a Desarrollando aplicaciones web en Python con pruebas

Plantilla Implementacion Jenny
Plantilla Implementacion  JennyPlantilla Implementacion  Jenny
Plantilla Implementacion JennyJenny Romero
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Plantilla implementacion jenny
Plantilla implementacion  jennyPlantilla implementacion  jenny
Plantilla implementacion jennyJenny Romero
 
Analysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursAnalysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursJaime Restrepo
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesMartín Volpe
 
Plantilla implementacion final
Plantilla implementacion finalPlantilla implementacion final
Plantilla implementacion finalDaisyDuran5
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)Videoconferencias UTPL
 
Plantilla implementacion Karen
Plantilla implementacion KarenPlantilla implementacion Karen
Plantilla implementacion Karenilianasolis
 
Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Mariano Reingart
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Plantilla implementación karen
Plantilla implementación karenPlantilla implementación karen
Plantilla implementación karenilianasolis
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxjgs07
 
Plantilla implementación proyecto final
Plantilla implementación proyecto  finalPlantilla implementación proyecto  final
Plantilla implementación proyecto finalYorleny Ureña
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no ProgramadoresJavier_J
 

Similar a Desarrollando aplicaciones web en Python con pruebas (20)

Python + Ciencia = ♥
Python + Ciencia = ♥Python + Ciencia = ♥
Python + Ciencia = ♥
 
Plantilla Implementacion Jenny
Plantilla Implementacion  JennyPlantilla Implementacion  Jenny
Plantilla Implementacion Jenny
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Plantilla implementacion jenny
Plantilla implementacion  jennyPlantilla implementacion  jenny
Plantilla implementacion jenny
 
Analysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behavioursAnalysis of time windows to detect botnets behaviours
Analysis of time windows to detect botnets behaviours
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
 
Pyrapidc
PyrapidcPyrapidc
Pyrapidc
 
Plantilla implementacion final
Plantilla implementacion finalPlantilla implementacion final
Plantilla implementacion final
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-II BIMESTRE-(abril agosto 2012)
 
Manual robotica
Manual roboticaManual robotica
Manual robotica
 
Plantilla implementacion Karen
Plantilla implementacion KarenPlantilla implementacion Karen
Plantilla implementacion Karen
 
Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)Programación Python para Zombis (charla relámpago)
Programación Python para Zombis (charla relámpago)
 
Plantilla implementacion
Plantilla implementacionPlantilla implementacion
Plantilla implementacion
 
Guia 5 dev c++
Guia 5 dev c++Guia 5 dev c++
Guia 5 dev c++
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Python Vs C
Python Vs CPython Vs C
Python Vs C
 
Plantilla implementación karen
Plantilla implementación karenPlantilla implementación karen
Plantilla implementación karen
 
Clase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptxClase 2 - Introducción a la programación con Python I.pptx
Clase 2 - Introducción a la programación con Python I.pptx
 
Plantilla implementación proyecto final
Plantilla implementación proyecto  finalPlantilla implementación proyecto  final
Plantilla implementación proyecto final
 
AdV - Programación para no Programadores
AdV - Programación para no ProgramadoresAdV - Programación para no Programadores
AdV - Programación para no Programadores
 

Más de Tatiana Al-Chueyr

Integrating ChatGPT with Apache Airflow
Integrating ChatGPT with Apache AirflowIntegrating ChatGPT with Apache Airflow
Integrating ChatGPT with Apache AirflowTatiana Al-Chueyr
 
Contributing to Apache Airflow
Contributing to Apache AirflowContributing to Apache Airflow
Contributing to Apache AirflowTatiana Al-Chueyr
 
From an idea to production: building a recommender for BBC Sounds
From an idea to production: building a recommender for BBC SoundsFrom an idea to production: building a recommender for BBC Sounds
From an idea to production: building a recommender for BBC SoundsTatiana Al-Chueyr
 
Precomputing recommendations with Apache Beam
Precomputing recommendations with Apache BeamPrecomputing recommendations with Apache Beam
Precomputing recommendations with Apache BeamTatiana Al-Chueyr
 
Scaling machine learning to millions of users with Apache Beam
Scaling machine learning to millions of users with Apache BeamScaling machine learning to millions of users with Apache Beam
Scaling machine learning to millions of users with Apache BeamTatiana Al-Chueyr
 
Clearing Airflow Obstructions
Clearing Airflow ObstructionsClearing Airflow Obstructions
Clearing Airflow ObstructionsTatiana Al-Chueyr
 
Scaling machine learning workflows with Apache Beam
Scaling machine learning workflows with Apache BeamScaling machine learning workflows with Apache Beam
Scaling machine learning workflows with Apache BeamTatiana Al-Chueyr
 
Responsible machine learning at the BBC
Responsible machine learning at the BBCResponsible machine learning at the BBC
Responsible machine learning at the BBCTatiana Al-Chueyr
 
Powering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonPowering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonTatiana Al-Chueyr
 
Responsible Machine Learning at the BBC
Responsible Machine Learning at the BBCResponsible Machine Learning at the BBC
Responsible Machine Learning at the BBCTatiana Al-Chueyr
 
PyConUK 2018 - Journey from HTTP to gRPC
PyConUK 2018 - Journey from HTTP to gRPCPyConUK 2018 - Journey from HTTP to gRPC
PyConUK 2018 - Journey from HTTP to gRPCTatiana Al-Chueyr
 
PythonBrasil[8] - CPython for dummies
PythonBrasil[8] - CPython for dummiesPythonBrasil[8] - CPython for dummies
PythonBrasil[8] - CPython for dummiesTatiana Al-Chueyr
 
QCon SP - recommended for you
QCon SP - recommended for youQCon SP - recommended for you
QCon SP - recommended for youTatiana Al-Chueyr
 
PyConUK 2016 - Writing English Right
PyConUK 2016  - Writing English RightPyConUK 2016  - Writing English Right
PyConUK 2016 - Writing English RightTatiana Al-Chueyr
 
InVesalius: 3D medical imaging software
InVesalius: 3D medical imaging softwareInVesalius: 3D medical imaging software
InVesalius: 3D medical imaging softwareTatiana Al-Chueyr
 
Automatic English text correction
Automatic English text correctionAutomatic English text correction
Automatic English text correctionTatiana Al-Chueyr
 
Python packaging and dependency resolution
Python packaging and dependency resolutionPython packaging and dependency resolution
Python packaging and dependency resolutionTatiana Al-Chueyr
 
Rio info 2013 - Linked Data at Globo.com
Rio info 2013 - Linked Data at Globo.comRio info 2013 - Linked Data at Globo.com
Rio info 2013 - Linked Data at Globo.comTatiana Al-Chueyr
 

Más de Tatiana Al-Chueyr (20)

Integrating ChatGPT with Apache Airflow
Integrating ChatGPT with Apache AirflowIntegrating ChatGPT with Apache Airflow
Integrating ChatGPT with Apache Airflow
 
Contributing to Apache Airflow
Contributing to Apache AirflowContributing to Apache Airflow
Contributing to Apache Airflow
 
From an idea to production: building a recommender for BBC Sounds
From an idea to production: building a recommender for BBC SoundsFrom an idea to production: building a recommender for BBC Sounds
From an idea to production: building a recommender for BBC Sounds
 
Precomputing recommendations with Apache Beam
Precomputing recommendations with Apache BeamPrecomputing recommendations with Apache Beam
Precomputing recommendations with Apache Beam
 
Scaling machine learning to millions of users with Apache Beam
Scaling machine learning to millions of users with Apache BeamScaling machine learning to millions of users with Apache Beam
Scaling machine learning to millions of users with Apache Beam
 
Clearing Airflow Obstructions
Clearing Airflow ObstructionsClearing Airflow Obstructions
Clearing Airflow Obstructions
 
Scaling machine learning workflows with Apache Beam
Scaling machine learning workflows with Apache BeamScaling machine learning workflows with Apache Beam
Scaling machine learning workflows with Apache Beam
 
Responsible machine learning at the BBC
Responsible machine learning at the BBCResponsible machine learning at the BBC
Responsible machine learning at the BBC
 
Powering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and PythonPowering machine learning workflows with Apache Airflow and Python
Powering machine learning workflows with Apache Airflow and Python
 
Responsible Machine Learning at the BBC
Responsible Machine Learning at the BBCResponsible Machine Learning at the BBC
Responsible Machine Learning at the BBC
 
PyConUK 2018 - Journey from HTTP to gRPC
PyConUK 2018 - Journey from HTTP to gRPCPyConUK 2018 - Journey from HTTP to gRPC
PyConUK 2018 - Journey from HTTP to gRPC
 
Sprint cPython at Globo.com
Sprint cPython at Globo.comSprint cPython at Globo.com
Sprint cPython at Globo.com
 
PythonBrasil[8] - CPython for dummies
PythonBrasil[8] - CPython for dummiesPythonBrasil[8] - CPython for dummies
PythonBrasil[8] - CPython for dummies
 
QCon SP - recommended for you
QCon SP - recommended for youQCon SP - recommended for you
QCon SP - recommended for you
 
Crafting APIs
Crafting APIsCrafting APIs
Crafting APIs
 
PyConUK 2016 - Writing English Right
PyConUK 2016  - Writing English RightPyConUK 2016  - Writing English Right
PyConUK 2016 - Writing English Right
 
InVesalius: 3D medical imaging software
InVesalius: 3D medical imaging softwareInVesalius: 3D medical imaging software
InVesalius: 3D medical imaging software
 
Automatic English text correction
Automatic English text correctionAutomatic English text correction
Automatic English text correction
 
Python packaging and dependency resolution
Python packaging and dependency resolutionPython packaging and dependency resolution
Python packaging and dependency resolution
 
Rio info 2013 - Linked Data at Globo.com
Rio info 2013 - Linked Data at Globo.comRio info 2013 - Linked Data at Globo.com
Rio info 2013 - Linked Data at Globo.com
 

Desarrollando aplicaciones web en Python con pruebas

  • 1. Desarollando aplicaciones web en python Tati Al-Chueyr @globocom PyConAr – 23 Septiembre de 2011, Junín
  • 2. Desarollando aplicaciones web en python con pruebas Tati Al-Chueyr @globocom PyConAr – 23 Septiembre de 2011, Junín
  • 4. tati.__doc__ ● ingeniera en informática (Unicamp) ● analista desarrolladora G1 (globo.com) ● alumna maestria en informática PUC-Rio ● entusiasta de software libre desde 2002 ● contribución más importante: InVesalius ● pythonista y miembro de APyB ● en el tiempo libre, juga de desarollar con #android y/o #arduino
  • 6. globo.com ● crea y mantiene las tecnologías web de Globo ● 5 areas: noticias deportes entretenimiento tecnología videos ● 10 + anõs ● 400.000 ++ subscriptores ● 250 + profesionales de tecnología ● 25 + equipos scrum
  • 7. globo.com ● 45 millones de visitas diarias ● 1.800.000 visitas por hora ● 32.000 accesos por minuto
  • 8. globo.com ● 110 Gbps de banda ● 12.000.000+ líneas de código en producción ● 1.000 + servidores ● 100.000.000 + de vídeos servidos / mes ● 500 + terabytes de tráfico sólo durante la transmisión de la Copa del Mundo 2010
  • 9.
  • 10.
  • 11.
  • 12.
  • 14. 1 IZ U ¿qué sabes acerca de pruebas? Q (a) siempre hago desarollo basado en pruebas (b) cuándo tengo tiempo, lo hago (c) alguién ha mencionado eso, pero no practico (d) a mi no me gusta, muy aburrido (e) no conosco nada acerca pruebas Respuestas (a) 5 (b) 15 (c) 3 (d) 1 (e) 8
  • 15. ejemplo 1 – inventor dulce de leche problema: tiene un programa de preguntas y respuestas, e debes implementar la función quien_fue_el_inventor_del_dulce_de_leche que contesta la pregunta con la verdadeira respuesta.
  • 16. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py
  • 17. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py test_preguntas_y_respuestas.py
  • 18. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py test_preguntas_y_respuestas.py
  • 19. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py
  • 20. observación ● A seguir... vamos utilizar el software DojoTools un semáforo adaptado con Arduino desarrollado por @turicas y @ tati_alchueyr para soporte a Coding Dojos ● Se interesó por Arduino? Veja la charla “Robótica con Python y Arduino”, a las 15:30, con Álvaro Justen, en la sala 35
  • 21. ejemplo 1 – inventor dulce de leche Moraleja del Ejemplo 1 La prueba no debe caberse al programa El programa debe comprometerse con la verdad
  • 22. ejemplo 2 – pronóstico del tiempo
  • 23. ejemplo 2 – pronóstico del tiempo problema: la temperatura es originalmente en farenheit y hay que convertela a grados celcius ¿alguien recuerda la formula?
  • 24. ejemplo 2 – pronóstico del tiempo problema: la temperatura es originalmente en farenheit y hay que convertela a grados celcius °F = °C x 9/5 + 32 °C = (°F - 32) x 5/9
  • 25. ejemplo 2 – pronóstico del tiempo °C = (°F - 32) x 5/9 utils_tiempo.py 2 ¿esta listo? Respuestas IZ U (a) 0 Q (b) 0 (a) si (c) 0 (b) no (c) quizas
  • 26. ejemplo 2 – pronóstico del tiempo °C = (°F - 32) x 5/9 utils_tiempo.py 2 ¿esta listo? Respuestas IZ U (a) 0 Q (b) 0 (a) si (c) 0 (b) no (c) quizas
  • 27. ejemplo 2 – pronóstico del tiempo ¿que pasa? test_utils_tiempo.py fail
  • 28. ejemplo 2 – pronóstico del tiempo ¿que pasa? test_utils_tiempo.py utils_tiempo.py http://stackoverflow.com/questions/455612/python-limiting-floats-to-two-decimal-points
  • 29. ejemplo 2 – pronóstico del tiempo ¿que pasa? test_utils_tiempo.py utils_tiempo.py utils_tiempo.py
  • 30. ejemplo 2 – pronóstico del tiempo Moraleja del Ejemplo 2 Es importante pruebar los posibles casos de error de su función. Si la función realizar operaciones con números, pueden ser útiles: valor nulo, número negativo y valores flotantes.
  • 31. TDD Test Driven Development 1) Escribir pruebas que fallan 2) Escribir código para que pruebas pasen
  • 32. TDD – Test Driven Development
  • 33. TDD suena muy simple, ¿verdad? Entonces ¿por qué no todos lo hacen el 100% del tiempo? Es complicado ... ● Los plazos ● Gestión no técnica ● Obligaciones concurrentes ● La mala planificación / estimaciones ● Algunos códigos no se prestan fácilmente a TDD ● En algunos casos, TDD no tiene sentid
  • 34. Tests are vivos "Si usted hace su análisis correcto, usted nunca se encontrará con un escenario en el que la producción de pruebas no había previsto. ● No pensar en ellos como algo que tiene que "hacer llegar" ● Independientemente de cómo / cuando llegue la prueba de escritura de hecho, se los revisa de manera regular
  • 35. BDD – Behavior Driven Dev
  • 36. BDD – Behavior Driven Dev ● pruebas que simulan lo que los usuarios hagan ● pruebas de browser ● más complejos que un test de una función
  • 37. Lettuce: Python's cucumber ● Behaviour driven development ● http://lettuce.it
  • 38. BDD in Python with Lettuce
  • 39. BDD in Python with Lettuce
  • 40. BDD in Python with Lettuce
  • 41. Splinter: automatizar acciones web ● http://splinter.cobrateam.info ● interfaz limpia par hacer cosas in web ● puede ser usado para pruebas ● o para automatización de cosas en general
  • 45. ¿como vender pruebas? Hay muchas cosas que pueden hacer el mal en las pruebas ● El error más grande no es invertir tiempo para escribir la prueba ● "El código no probado se rompe por el diseño" Cómo vender a su jefe? ● Ahorro de dinero ● Ahorro de tiempo de desarrollo ($$$) ● Los desarrolladores más felices ● Ahorro de tiempo en el control de calidad ($$$) ● confianza
  • 46. más herramientas Nose: pypi.python.org/pypi/nose Coverage: pypi.python.org/pypi/coverage Mock: pypi.python.org/pypi/mock Jenkins: http://jenkins-ci.org/
  • 47.
  • 48.
  • 49. 1 IZ U ¿qué sabes acerca de pruebas? Q (a) siempre hago desarollo basado en pruebas (b) cuándo tengo tiempo, lo hago (c) alguién ha mencionado eso, pero no practico (d) a mi no me gusta, muy aburrido (e) no conosco nada acerca pruebas Respuestas (a) 0 (b) 0 (c) 0 (d) 0 (e) 0
  • 50. ¿conoces python y django? ¿quieres trabajar con nosotros?
  • 51. ¿dudas? muchas gracias! identi.ca: @tatialchueyr twitter: @tati_alchueyr http://tatialchueyr.com