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
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
__intro____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____main__
¿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
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.
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
(a) si(b) no
(c) quizas
¿esta listo?
QUIZ 2
Respuestas(a) 0(b) 0(c) 0
utils_tiempo.py
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
ejemplo 2 – pronóstico del tiempo
fail
¿que pasa?
test_utils_tiempo.py
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
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
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
BDD in Python with Lettuce
BDD in Python with Lettuce
BDD in Python with Lettuce
● 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
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/
¿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
¿conoces python y django?¿quieres trabajar con nosotros?
¿d¿dudas?udas?muchas gracias! muchas gracias!
identi.ca: @tatialchueyridenti.ca: @tatialchueyrtwitter: @tati_alchueyrtwitter: @tati_alchueyr
http://tatialchueyr.comhttp://tatialchueyr.com