SlideShare una empresa de Scribd logo
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
Desarollando aplicaciones web en python con pruebas
Desarollando aplicaciones web en python con pruebas
Desarollando aplicaciones web en python con pruebas
Desarollando aplicaciones web en python con pruebas
__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/
Desarollando aplicaciones web en python con pruebas
Desarollando aplicaciones web en python con pruebas
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

ODP
Python en Android
PDF
Tutorial de matplotlib
PDF
Tutorial de numpy
PPTX
Python científico (introducción a numpy y matplotlib))
KEY
Numpy Talk at SIAM
PDF
Numpy tutorial(final) 20160303
ODP
Python para desarrollo web de ultima generación
PDF
Haciendo de las pruebas tus mejores aliadas
Python en Android
Tutorial de matplotlib
Tutorial de numpy
Python científico (introducción a numpy y matplotlib))
Numpy Talk at SIAM
Numpy tutorial(final) 20160303
Python para desarrollo web de ultima generación
Haciendo de las pruebas tus mejores aliadas

Similar a Desarollando aplicaciones web en python con pruebas (20)

PDF
Curso TDD Ruby on Rails #01: Introducción al testing
PPTX
PDF
¿Cómo usar Perl para automatizar planes de prueba?
PDF
Aprenda a pensar como un programador con Python
PDF
Todo Sobre El Lenguaje Python
DOCX
Programar la Laptop XO / (Unidad de Capacitación)
DOC
Folleto de ejemplos_programacion_xo
PDF
Manual Basico para Encantadores de Serpientes (Python)
PPT
Estrategias de prueba de software
PDF
De 0 A Python En 40 Minutos
PPTX
U2T4 - Pruebas del Software
PPTX
Cruzando el abismo educativo de la ingeniería de software utilizando Software...
PDF
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
PPTX
S9-DAW-2022S1.pptx
PPTX
TDD y Python
ODP
Breve introducción a TDD con Phpunit
PPTX
Rea módulo 2
PDF
Python - Programación para machos
PDF
Fundamentos de la programacion u2 propuestos
Curso TDD Ruby on Rails #01: Introducción al testing
¿Cómo usar Perl para automatizar planes de prueba?
Aprenda a pensar como un programador con Python
Todo Sobre El Lenguaje Python
Programar la Laptop XO / (Unidad de Capacitación)
Folleto de ejemplos_programacion_xo
Manual Basico para Encantadores de Serpientes (Python)
Estrategias de prueba de software
De 0 A Python En 40 Minutos
U2T4 - Pruebas del Software
Cruzando el abismo educativo de la ingeniería de software utilizando Software...
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
S9-DAW-2022S1.pptx
TDD y Python
Breve introducción a TDD con Phpunit
Rea módulo 2
Python - Programación para machos
Fundamentos de la programacion u2 propuestos
Publicidad

Más de Tatiana Al-Chueyr (20)

PDF
PyData London - Scaling AI workloads with Ray & Airflow.pdf
PDF
dbt no Airflow: Como melhorar o seu deploy (de forma correta)
PDF
Integrating dbt with Airflow - Overcoming Performance Hurdles
PDF
Best Practices for Effectively Running dbt in Airflow
PDF
Integrating ChatGPT with Apache Airflow
PDF
Contributing to Apache Airflow
PDF
From an idea to production: building a recommender for BBC Sounds
PDF
Precomputing recommendations with Apache Beam
PDF
Scaling machine learning to millions of users with Apache Beam
PDF
Clearing Airflow Obstructions
PPTX
Scaling machine learning workflows with Apache Beam
PDF
Responsible machine learning at the BBC
PDF
Powering machine learning workflows with Apache Airflow and Python
PPTX
Responsible Machine Learning at the BBC
PDF
PyConUK 2018 - Journey from HTTP to gRPC
PDF
Sprint cPython at Globo.com
PDF
PythonBrasil[8] - CPython for dummies
PDF
QCon SP - recommended for you
PDF
Crafting APIs
PDF
PyConUK 2016 - Writing English Right
PyData London - Scaling AI workloads with Ray & Airflow.pdf
dbt no Airflow: Como melhorar o seu deploy (de forma correta)
Integrating dbt with Airflow - Overcoming Performance Hurdles
Best Practices for Effectively Running dbt in Airflow
Integrating ChatGPT with Apache Airflow
Contributing to Apache Airflow
From an idea to production: building a recommender for BBC Sounds
Precomputing recommendations with Apache Beam
Scaling machine learning to millions of users with Apache Beam
Clearing Airflow Obstructions
Scaling machine learning workflows with Apache Beam
Responsible machine learning at the BBC
Powering machine learning workflows with Apache Airflow and Python
Responsible Machine Learning at the BBC
PyConUK 2018 - Journey from HTTP to gRPC
Sprint cPython at Globo.com
PythonBrasil[8] - CPython for dummies
QCon SP - recommended for you
Crafting APIs
PyConUK 2016 - Writing English Right
Publicidad

Desarollando 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
  • 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/
  • 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