desarollando aplicaciones web en python con pruebas

Post on 27-Jun-2015

1.507 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

● 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

top related