Desarollando aplicaciones web en python con pruebas

2,601 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,601
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
47
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Desarollando aplicaciones web en python con pruebas

  1. 1. Desarollando aplicaciones web en python Tati Al-Chueyr @globocomPyConAr – 23 Septiembre de 2011, Junín
  2. 2. Desarollando aplicaciones web en python con pruebas Tati Al-Chueyr @globocomPyConAr – 23 Septiembre de 2011, Junín
  3. 3. __intro__
  4. 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
  5. 5. tati.__file__
  6. 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. 7. globo.com● 45 millones de visitas diarias● 1.800.000 visitas por hora● 32.000 accesos por minuto
  8. 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
  9. 9. __main__
  10. 10. 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
  11. 11. ejemplo 1 – inventor dulce de lecheproblema: tiene un programa de preguntas y respuestas, e debes implementar lafunciónquien_fue_el_inventor_del_dulce_de_lecheque contesta la pregunta con la verdadeirarespuesta.
  12. 12. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py
  13. 13. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py test_preguntas_y_respuestas.py
  14. 14. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py test_preguntas_y_respuestas.py
  15. 15. ejemplo 1 – inventor dulce de leche preguntas_y_respuestas.py
  16. 16. 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
  17. 17. ejemplo 1 – inventor dulce de leche Moraleja del Ejemplo 1 La prueba no debe caberse al programa El programa debe comprometerse con la verdad
  18. 18. ejemplo 2 – pronóstico del tiempo
  19. 19. ejemplo 2 – pronóstico del tiempoproblema: la temperatura es originalmente enfarenheit y hay que convertela a gradoscelcius ¿alguien recuerda la formula?
  20. 20. ejemplo 2 – pronóstico del tiempoproblema: la temperatura es originalmente enfarenheit y hay que convertela a gradoscelcius °F = °C x 9/5 + 32 °C = (°F - 32) x 5/9
  21. 21. ejemplo 2 – pronóstico del tiempo °C = (°F - 32) x 5/9 utils_tiempo.py 2 ¿esta listo? Respuestas IZ U (a) 0Q (b) 0 (a) si (c) 0 (b) no (c) quizas
  22. 22. ejemplo 2 – pronóstico del tiempo °C = (°F - 32) x 5/9 utils_tiempo.py 2 ¿esta listo? Respuestas IZ U (a) 0Q (b) 0 (a) si (c) 0 (b) no (c) quizas
  23. 23. ejemplo 2 – pronóstico del tiempo¿que pasa? test_utils_tiempo.py fail
  24. 24. ejemplo 2 – pronóstico del tiempo¿que pasa? test_utils_tiempo.py utils_tiempo.pyhttp://stackoverflow.com/questions/455612/python-limiting-floats-to-two-decimal-points
  25. 25. ejemplo 2 – pronóstico del tiempo¿que pasa?test_utils_tiempo.pyutils_tiempo.pyutils_tiempo.py
  26. 26. 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.
  27. 27. TDD Test Driven Development1) Escribir pruebas que fallan2) Escribir código para que pruebas pasen
  28. 28. TDD – Test Driven Development
  29. 29. 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
  30. 30. 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
  31. 31. BDD – Behavior Driven Dev
  32. 32. 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
  33. 33. Lettuce: Pythons cucumber● Behaviour driven development● http://lettuce.it
  34. 34. BDD in Python with Lettuce
  35. 35. BDD in Python with Lettuce
  36. 36. BDD in Python with Lettuce
  37. 37. 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
  38. 38. Splinter: automatizar acciones web
  39. 39. Splinter: automatizar acciones web
  40. 40. Splinter: automatizar acciones web
  41. 41. ¿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
  42. 42. más herramientasNose: pypi.python.org/pypi/noseCoverage: pypi.python.org/pypi/coverageMock: pypi.python.org/pypi/mockJenkins: http://jenkins-ci.org/
  43. 43. 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
  44. 44. ¿conoces python y django?¿quieres trabajar con nosotros?
  45. 45. ¿dudas?muchas gracias!identi.ca: @tatialchueyr twitter: @tati_alchueyr http://tatialchueyr.com

×