Testing Ruby on Rails Conferencia @Rails Hispana :: 25/11/2006 [email_address]
Contenidos <ul><ul><li>Historia: Fred, Kent, Martin y David </li></ul></ul><ul><ul><li>Teoría: Ruby Test::Unit con RadRail...
http://www.cs.unc.edu/~brooks/ Fred Brooks 1975: “The Mythical Man-Month” ¼   Especificar 1/6   Programar ½  Tests 1986: E...
Kent Beck http://www.threeriversinstitute.org/Kent%20Beck.htm <ul><ul><li>1994:  “Simple Smalltalk Testing”  </li></ul></u...
Martin Fowler http://www.martinfowler.com/ <ul><li>1999: “Refactoring” </li></ul><ul><li>Mejorar el  mantenimiento  + exte...
David Heinemeier Hansson http://www.loudthinking.com/arc/000421.html “ ... I think test-driven development has been most r...
Qué era Testing? <ul><ul><li>Pruebas manuales </li></ul></ul><ul><ul><li>Debug de las aplicaciones web mediante la GUI </l...
Qué es Testing? <ul><ul><li>Automatizable: implementado con Test::Unit.  </li></ul></ul><ul><ul><li>Rápido: 2307 tests de ...
Qué es un test unitario? TDD! Test Driven Development =  Escribir los tests primero!
Qué es un test unitario? <ul><ul><li>1 clase => 1 clase de test </li></ul></ul><ul><ul><li>1 método => 1 test </li></ul></...
<ul><ul><li>assert_equal( esperado, prueba, msg ) </li></ul></ul><ul><ul><li>assert_not_nil( prueba, msg ) </li></ul></ul>...
RadRails <ul><ul><li>Trabajar con tests en RadRails es fácil y divertido </li></ul></ul><ul><ul><li>mediante una GUI: </li...
1 + 1 = 2?
Error? Un problema de  programación genera una “Excepción”
Fallo (Failure)? Cuando el resultado no es lo esperado:
Éxito ? <ul><ul><li>¡Adicción a la barra verde! </li></ul></ul>
Rails viene con tests . /script/generate model Product exists  test/unit/ create  test/fixtures/ create  app/models/produc...
Tests Unitarios
BBDD para los tests
La magia de las Fixtures <ul><ul><li>Fixtures son datos reutilizables para los tests </li></ul></ul>¡Magia! Rails inserta ...
Ejemplo de test unitario
Tests Funcionales
Test de una petición GET
Test de una petición POST
Qué es un Mock en Rails ? <ul><ul><li>Un Mock es una clase falsa que implementa la misma </li></ul></ul><ul><ul><li>interf...
Rails viene con Mock mocks/development: objetos Mock para el desarallo (BBDD development) mocks/test: objetos Mock para lo...
Ejemplo de mocks/test c
Por qué usar Mocks? (1) <ul><ul><li>mejorar tus tests unitarios aislando la clase de sus dependencias (sino es 1 test de i...
Por qué usar Mocks? (2) <ul><ul><li>incrementar el rendimiento para ejecutar los tests (ej. llamadas a la BBDD son muy len...
Tests  de Aceptación de Usuario
<ul><ul><li>http://www.openqa.org/selenium/ http://www-128.ibm.com/developerworks/library/wa-selenium-ajax/ </li></ul></ul...
Selenium-IDE <ul><li>Abrir la página de google.com </li></ul><ul><li>Teclar “conferencia Rails” </li></ul><ul><li>Click y ...
Selenium TestRunner
Selenium on Rails
Usos de Selenium <ul><ul><li>Automatizar las pruebas de aceptación de usuario </li></ul></ul><ul><ul><li>Comprobar la comp...
rcov <ul><ul><li>Puedes saber qué partes de tu programa tienen cobertura con los tests y qué partes faltan </li></ul></ul>...
Cobertura de tests
Agiledox <ul><ul><li>Generar Especificaciones Funcionales a partir de </li></ul></ul><ul><ul><li>los tests: </li></ul></ul...
Agiledox browser
<ul><ul><li>PREGUNTAS? </li></ul></ul>
Próxima SlideShare
Cargando en…5
×

Testing Ruby on Rails (spanish)

5.171 visualizaciones

Publicado el

Talk given at the RailsConf Hispana (http://www.conferenciarails.org/)

Publicado en: Tecnología, Educación
1 comentario
5 recomendaciones
Estadísticas
Notas
  • Excellent presentation. I've taken a number of the framework graphics together with adapted to my startup
    Teisha
    http://dashinghealth.com http://healthimplants.com
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
Sin descargas
Visualizaciones
Visualizaciones totales
5.171
En SlideShare
0
De insertados
0
Número de insertados
96
Acciones
Compartido
0
Descargas
0
Comentarios
1
Recomendaciones
5
Insertados 0
No insertados

No hay notas en la diapositiva.
  • Testing Ruby on Rails (spanish)

    1. 1. Testing Ruby on Rails Conferencia @Rails Hispana :: 25/11/2006 [email_address]
    2. 2. Contenidos <ul><ul><li>Historia: Fred, Kent, Martin y David </li></ul></ul><ul><ul><li>Teoría: Ruby Test::Unit con RadRails </li></ul></ul><ul><ul><li>Práctica: Testing con Rails </li></ul></ul>
    3. 3. http://www.cs.unc.edu/~brooks/ Fred Brooks 1975: “The Mythical Man-Month” ¼ Especificar 1/6 Programar ½ Tests 1986: En su artículo No Silver Bullet: Modelo en cascada = sugiere el Modelo Incremental
    4. 4. Kent Beck http://www.threeriversinstitute.org/Kent%20Beck.htm <ul><ul><li>1994: “Simple Smalltalk Testing” </li></ul></ul><ul><ul><li>Framework para automatizar </li></ul></ul><ul><ul><li>los tests unitarios </li></ul></ul><ul><ul><li>2002: “Test Driven Development” </li></ul></ul><ul><ul><li>Escribir los tests antes del código </li></ul></ul>
    5. 5. Martin Fowler http://www.martinfowler.com/ <ul><li>1999: “Refactoring” </li></ul><ul><li>Mejorar el mantenimiento + extensibilidad de los programas gracias una colección de refactorizaciones </li></ul><ul><li>2000: “Integración Continua” </li></ul><ul><li>Agilizar el proceso de integración </li></ul><ul><li>con builds automáticos diarios </li></ul>
    6. 6. David Heinemeier Hansson http://www.loudthinking.com/arc/000421.html “ ... I think test-driven development has been most rewarding. It gives you the courage to execute on the deeper understanding... So, like, do your tests, 'mkay?” loudthinking.com - 11/03/2005
    7. 7. Qué era Testing? <ul><ul><li>Pruebas manuales </li></ul></ul><ul><ul><li>Debug de las aplicaciones web mediante la GUI </li></ul></ul><ul><ul><li>Integración manual al último momento, sin pruebas de regresión </li></ul></ul>pocos tests para respetar el plazo Más defectos no detectados Objetivo: Entregar “algo” Cliente :-(( Programador :-(
    8. 8. Qué es Testing? <ul><ul><li>Automatizable: implementado con Test::Unit. </li></ul></ul><ul><ul><li>Rápido: 2307 tests de Rails en 11s </li></ul></ul><ul><ul><li>Integración Continua: Ayuda la vida de programadores </li></ul></ul><ul><ul><li>Mejora el diseño con la Refactorización </li></ul></ul><ul><ul><li>Documenta el código </li></ul></ul>Objetivo: Calidad Buena cobertura de tests más receptivo al cambio Cliente & Programador :-)
    9. 9. Qué es un test unitario? TDD! Test Driven Development = Escribir los tests primero!
    10. 10. Qué es un test unitario? <ul><ul><li>1 clase => 1 clase de test </li></ul></ul><ul><ul><li>1 método => 1 test </li></ul></ul><ul><ul><li>Convenciónes de nombre: </li></ul></ul><ul><ul><ul><ul><li>CalculadorTest <=> Calculador </li></ul></ul></ul></ul><ul><ul><li>El nombre del método empieza por test_ </li></ul></ul>
    11. 11. <ul><ul><li>assert_equal( esperado, prueba, msg ) </li></ul></ul><ul><ul><li>assert_not_nil( prueba, msg ) </li></ul></ul><ul><ul><li>assert_raises(Excepción) { bloqueo de código } </li></ul></ul><ul><ul><li>y mucho más en http://www.ruby-doc.org/core/classes/Test/Unit.html </li></ul></ul>Los métodos assert
    12. 12. RadRails <ul><ul><li>Trabajar con tests en RadRails es fácil y divertido </li></ul></ul><ul><ul><li>mediante una GUI: </li></ul></ul><ul><ul><li>Viene con los tests específicos a Rails: </li></ul></ul>
    13. 13. 1 + 1 = 2?
    14. 14. Error? Un problema de programación genera una “Excepción”
    15. 15. Fallo (Failure)? Cuando el resultado no es lo esperado:
    16. 16. Éxito ? <ul><ul><li>¡Adicción a la barra verde! </li></ul></ul>
    17. 17. Rails viene con tests . /script/generate model Product exists test/unit/ create test/fixtures/ create app/models/product.rb create test/unit/product_test.rb create test/fixtures/products.yml ...
    18. 18. Tests Unitarios
    19. 19. BBDD para los tests
    20. 20. La magia de las Fixtures <ul><ul><li>Fixtures son datos reutilizables para los tests </li></ul></ul>¡Magia! Rails inserta automáticamente:
    21. 21. Ejemplo de test unitario
    22. 22. Tests Funcionales
    23. 23. Test de una petición GET
    24. 24. Test de una petición POST
    25. 25. Qué es un Mock en Rails ? <ul><ul><li>Un Mock es una clase falsa que implementa la misma </li></ul></ul><ul><ul><li>interfaz que tu clase real: </li></ul></ul>
    26. 26. Rails viene con Mock mocks/development: objetos Mock para el desarallo (BBDD development) mocks/test: objetos Mock para los tests (BBDD test)
    27. 27. Ejemplo de mocks/test c
    28. 28. Por qué usar Mocks? (1) <ul><ul><li>mejorar tus tests unitarios aislando la clase de sus dependencias (sino es 1 test de integración) </li></ul></ul><ul><ul><li>remplazar una dependencia que no es siempre disponible (conexión de red, web-service, ...) </li></ul></ul>
    29. 29. Por qué usar Mocks? (2) <ul><ul><li>incrementar el rendimiento para ejecutar los tests (ej. llamadas a la BBDD son muy lentas) </li></ul></ul><ul><ul><li>ayudar al reparto del trabajo para cada capa de la aplicación (Presentación, Negocio) </li></ul></ul><ul><ul><li>Más? http://www.martinfowler.com/articles/mocksArentStubs.html </li></ul></ul>
    30. 30. Tests de Aceptación de Usuario
    31. 31. <ul><ul><li>http://www.openqa.org/selenium/ http://www-128.ibm.com/developerworks/library/wa-selenium-ajax/ </li></ul></ul>Selenium Compatible con
    32. 32. Selenium-IDE <ul><li>Abrir la página de google.com </li></ul><ul><li>Teclar “conferencia Rails” </li></ul><ul><li>Click y esperar </li></ul><ul><li>Comprobar que contiene el texto &quot;Madrid&quot; </li></ul>
    33. 33. Selenium TestRunner
    34. 34. Selenium on Rails
    35. 35. Usos de Selenium <ul><ul><li>Automatizar las pruebas de aceptación de usuario </li></ul></ul><ul><ul><li>Comprobar la compatibilidad cross-browser de tu aplicación </li></ul></ul><ul><ul><li>Selenium es compatible con: </li></ul></ul><ul><ul><li>Windows (Internet Explorer 6.0, Firefox 0.8 – 2.0, Opera 8) </li></ul></ul><ul><ul><li>Mac OS X (Safari 1.3+, Firefox 0.8 – 2.0, Camino 1.0a1) </li></ul></ul><ul><ul><li>Linux (Firefox 0.8 to 2.0, Konqueror ) </li></ul></ul>
    36. 36. rcov <ul><ul><li>Puedes saber qué partes de tu programa tienen cobertura con los tests y qué partes faltan </li></ul></ul><ul><ul><li>desarrollado por Mauricio Fernandez </li></ul></ul><ul><li>http://eigenclass.org/hiki.rb?rcov </li></ul>
    37. 37. Cobertura de tests
    38. 38. Agiledox <ul><ul><li>Generar Especificaciones Funcionales a partir de </li></ul></ul><ul><ul><li>los tests: </li></ul></ul><ul><ul><li>desarrollado por Ben Griffith </li></ul></ul><ul><li>http://www.reevoo.com/blogs/bengriffiths/2006/04/05/rails-agiledox-browser/ </li></ul>
    39. 39. Agiledox browser
    40. 40. <ul><ul><li>PREGUNTAS? </li></ul></ul>

    ×