desarollando aplicaciones web en python con pruebas
TRANSCRIPT
![Page 1: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/1.jpg)
Tati Al-ChueyrTati Al-Chueyr@globocom@globocom
PyConAr – 23 Septiembre de 2011, Junín PyConAr – 23 Septiembre de 2011, Junín
DesarollandoDesarollandoaplicaciones webaplicaciones web
en pythonen python
![Page 2: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/2.jpg)
DesarollandoDesarollandoaplicaciones webaplicaciones web
en pythonen pythoncon pruebascon pruebas
Tati Al-ChueyrTati Al-Chueyr@globocom@globocom
PyConAr – 23 Septiembre de 2011, Junín PyConAr – 23 Septiembre de 2011, Junín
![Page 3: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/3.jpg)
__intro____intro__
![Page 4: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/4.jpg)
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
![Page 5: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/5.jpg)
tati.__file__
![Page 6: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/6.jpg)
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
![Page 7: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/7.jpg)
globo.com
● 45 millones de visitas diarias● 1.800.000 visitas por hora● 32.000 accesos por minuto
![Page 8: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/8.jpg)
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
![Page 9: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/9.jpg)
![Page 10: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/10.jpg)
![Page 11: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/11.jpg)
![Page 12: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/12.jpg)
![Page 13: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/13.jpg)
__main____main__
![Page 14: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/14.jpg)
¿qué sabes acerca de pruebas?
(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
QUIZ 1
![Page 15: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/15.jpg)
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_lechequien_fue_el_inventor_del_dulce_de_leche
que contesta la pregunta con la verdadeira respuesta.
![Page 16: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/16.jpg)
ejemplo 1 – inventor dulce de leche
preguntas_y_respuestas.py
![Page 17: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/17.jpg)
ejemplo 1 – inventor dulce de leche
preguntas_y_respuestas.py
test_preguntas_y_respuestas.py
![Page 18: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/18.jpg)
ejemplo 1 – inventor dulce de leche
preguntas_y_respuestas.py
test_preguntas_y_respuestas.py
![Page 19: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/19.jpg)
ejemplo 1 – inventor dulce de leche
preguntas_y_respuestas.py
![Page 20: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/20.jpg)
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
![Page 21: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/21.jpg)
ejemplo 1 – inventor dulce de leche
Moraleja del Ejemplo 1
La prueba no debe caberse al programa
El programa debe comprometerse con la verdad
![Page 22: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/22.jpg)
ejemplo 2 – pronóstico del tiempo
![Page 23: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/23.jpg)
ejemplo 2 – pronóstico del tiempo
problema: la temperatura es originalmente en farenheit y hay que convertela a grados celcius
¿alguien recuerda la formula?
![Page 24: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/24.jpg)
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
![Page 25: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/25.jpg)
ejemplo 2 – pronóstico del tiempo
°C = (°F - 32) x 5/9
(a) si(b) no
(c) quizas
¿esta listo?
QUIZ 2
Respuestas(a) 0(b) 0(c) 0
utils_tiempo.py
![Page 26: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/26.jpg)
ejemplo 2 – pronóstico del tiempo
°C = (°F - 32) x 5/9
(a) si(b) no
(c) quizas
¿esta listo?
QUIZ 2
Respuestas(a) 0(b) 0(c) 0
utils_tiempo.py
![Page 27: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/27.jpg)
ejemplo 2 – pronóstico del tiempo
fail
¿que pasa?
test_utils_tiempo.py
![Page 28: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/28.jpg)
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
![Page 29: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/29.jpg)
ejemplo 2 – pronóstico del tiempo
¿que pasa?
test_utils_tiempo.py
utils_tiempo.py
utils_tiempo.py
![Page 30: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/30.jpg)
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.
ejemplo 2 – pronóstico del tiempo
![Page 31: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/31.jpg)
TDD Test Driven Development
1) Escribir pruebas que fallan
2) Escribir código para que pruebas pasen
![Page 32: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/32.jpg)
TDD – Test Driven Development
![Page 33: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/33.jpg)
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
![Page 34: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/34.jpg)
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
![Page 35: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/35.jpg)
BDD – Behavior Driven Dev
![Page 36: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/36.jpg)
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
![Page 38: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/38.jpg)
BDD in Python with Lettuce
![Page 39: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/39.jpg)
BDD in Python with Lettuce
![Page 40: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/40.jpg)
BDD in Python with Lettuce
![Page 41: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/41.jpg)
● 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
![Page 42: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/42.jpg)
Splinter: automatizar acciones web
![Page 43: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/43.jpg)
Splinter: automatizar acciones web
![Page 44: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/44.jpg)
Splinter: automatizar acciones web
![Page 45: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/45.jpg)
¿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
![Page 46: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/46.jpg)
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/
![Page 47: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/47.jpg)
![Page 48: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/48.jpg)
![Page 49: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/49.jpg)
¿qué sabes acerca de pruebas?
(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
QUIZ 1
![Page 50: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/50.jpg)
¿conoces python y django?¿quieres trabajar con nosotros?
![Page 51: Desarollando aplicaciones web en python con pruebas](https://reader034.vdocuments.mx/reader034/viewer/2022052316/558e002a1a28ab67518b457c/html5/thumbnails/51.jpg)
¿d¿dudas?udas?muchas gracias! muchas gracias!
identi.ca: @tatialchueyridenti.ca: @tatialchueyrtwitter: @tati_alchueyrtwitter: @tati_alchueyr
http://tatialchueyr.comhttp://tatialchueyr.com