desarollando aplicaciones web en python con pruebas

51
Tati Al-Chueyr Tati Al-Chueyr @globocom @globocom PyConAr – 23 Septiembre de 2011, Junín PyConAr – 23 Septiembre de 2011, Junín Desarollando Desarollando aplicaciones web aplicaciones web en python en python

Upload: tatiana-al-chueyr

Post on 27-Jun-2015

1.507 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Desarollando aplicaciones web en python con pruebas

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

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

__intro____intro__

Page 4: Desarollando aplicaciones web en python con pruebas

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

tati.__file__

Page 6: Desarollando aplicaciones web en python con pruebas

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

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

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
Page 10: Desarollando aplicaciones web en python con pruebas
Page 11: Desarollando aplicaciones web en python con pruebas
Page 12: Desarollando aplicaciones web en python con pruebas
Page 13: Desarollando aplicaciones web en python con pruebas

__main____main__

Page 14: Desarollando aplicaciones web en python con pruebas

¿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

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

ejemplo 1 – inventor dulce de leche

preguntas_y_respuestas.py

Page 17: Desarollando aplicaciones web en python con pruebas

ejemplo 1 – inventor dulce de leche

preguntas_y_respuestas.py

test_preguntas_y_respuestas.py

Page 18: Desarollando aplicaciones web en python con pruebas

ejemplo 1 – inventor dulce de leche

preguntas_y_respuestas.py

test_preguntas_y_respuestas.py

Page 19: Desarollando aplicaciones web en python con pruebas

ejemplo 1 – inventor dulce de leche

preguntas_y_respuestas.py

Page 20: Desarollando aplicaciones web en python con pruebas

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

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

ejemplo 2 – pronóstico del tiempo

Page 23: Desarollando aplicaciones web en python con pruebas

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

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

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

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

ejemplo 2 – pronóstico del tiempo

fail

¿que pasa?

test_utils_tiempo.py

Page 28: Desarollando aplicaciones web en python con pruebas

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

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

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

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

TDD – Test Driven Development

Page 33: Desarollando aplicaciones web en python con pruebas

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

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

BDD – Behavior Driven Dev

Page 36: Desarollando aplicaciones web en python con pruebas

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 37: Desarollando aplicaciones web en python con pruebas

Lettuce: Python's cucumber

● Behaviour driven development● http://lettuce.it

Page 38: Desarollando aplicaciones web en python con pruebas

BDD in Python with Lettuce

Page 39: Desarollando aplicaciones web en python con pruebas

BDD in Python with Lettuce

Page 40: Desarollando aplicaciones web en python con pruebas

BDD in Python with Lettuce

Page 41: Desarollando aplicaciones web en python con pruebas

● 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

Splinter: automatizar acciones web

Page 43: Desarollando aplicaciones web en python con pruebas

Splinter: automatizar acciones web

Page 44: Desarollando aplicaciones web en python con pruebas

Splinter: automatizar acciones web

Page 45: Desarollando aplicaciones web en python con pruebas

¿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

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
Page 48: Desarollando aplicaciones web en python con pruebas
Page 49: Desarollando aplicaciones web en python con pruebas

¿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

¿conoces python y django?¿quieres trabajar con nosotros?

Page 51: Desarollando aplicaciones web en python con pruebas

¿d¿dudas?udas?muchas gracias! muchas gracias!

identi.ca: @tatialchueyridenti.ca: @tatialchueyrtwitter: @tati_alchueyrtwitter: @tati_alchueyr

http://tatialchueyr.comhttp://tatialchueyr.com