Testing Ruby on Rails (spanish)

  • 4,660 views
Uploaded on

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

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

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Excellent presentation. I've taken a number of the framework graphics together with adapted to my startup
    Teisha
    http://dashinghealth.com http://healthimplants.com
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,660
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
1
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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