Les Tests avec Ruby on Rails
Jean-Michel Garnier <jean-michel arobase 21croissants point com>
         Paris On Rails – 10...
Plan de la présentation

    Background
●


        De 1975 ... à nos jours
    –

    Théorie
●


        RSpec par l'exe...
Background
Qui est-ce?
FRED BROOKS
                        1975:
      “The Mythical Man-Month”
          ¼    Spécificier
      ●



          1...
Qui est-ce?
KENT BECK
                                      1994:
                            “Simple Smalltalk Testing”
             ...
Qui est-ce?
MARTIN FOWLER

                  2000:
          “Refactoring”
      ●


          article sur l'Intégration
      ●

    ...
L'équipe de RSpec

                                          Début 2004 : BDD
                                      ●


  ...
Livres pour 2008
Théorie
Anatomie d'une spécification
Comportement (contexte)




                                                 Exemple


      ...
should I stay or should I go?

RSpec ajoute 2 méthodes à la class 'Object': should et
 should_not




Avec Test::Unit :


...
Langage naturel (en VO)
ruby spec/project_spec.rb
Résultat




Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
Customizer Rspec



          Pas très lisible!
Solution: écrire son propre “Matcher”
http://martinfowler.com/articles/mocksArentStubs.html




       Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. L...
Tests = Design

    TDD = On ne code que l'indispensable!
●



    Le Refactoring (Améliorer le code) ne provoque pas de
●...
Tests = Spécifications
Tests = Documentation


                                                 Exemples exécutable =
                           ...
Pratique
Démarrage

    Peep Code: RSpec (in english)
●



    IDE: RSpec intégré avec:
●




    Installer les plugins rspec et rs...
Autotest

    Problème: les specs s'executent pendant 10 min...
●



    Solution: Autotest n'execute que les specs nécess...
Garantir la couverture avec
                     rcov
    sudo gem install rcov
●



    rake spec:rcov
●




            ...
Couverture détaillée
Intégration Continue


                                            http://cruisecontrolrb.thoughtworks.com




           ...
CruiseControl.rb
Exemple de spec/models




http://edgerepo.com/svn/opensource/ruby/plugins/rspec_expectation_matchers/
spec/models (méthodes Métier)




    Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
spec/models (Finders)




Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
specs/fixtures

    Quelque problèmes: associations, lisibilité
●



    Mais ça s'améliore dans Rails 2.0 (un peu)
●



 ...
Exemple de spec/controllers
Autres “matchers“




Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
Spécifier les Vues?

                                         Problème:
                                         Les vues ...
Exemple de spec/views




 Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
Selenium

    Tests d'intégration + automatiser les tests d'acceptation
●

    des utilisateurs
     Vérifier si l'applica...
Selenium – le film




Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
Selenium specs




90% de la spec GENERE AVEC SELENIUM-IDE !!!
Merci de votre attention!

       Questions - Réponses




                                                               ...
Les Tests avec Ruby on Rails et RSpec (in French)
Upcoming SlideShare
Loading in...5
×

Les Tests avec Ruby on Rails et RSpec (in French)

5,208

Published on

Presentation given at Paris on Rails 2007

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,208
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
73
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Les Tests avec Ruby on Rails et RSpec (in French)

  1. 1. Les Tests avec Ruby on Rails Jean-Michel Garnier <jean-michel arobase 21croissants point com> Paris On Rails – 10 Décembre 2007
  2. 2. Plan de la présentation Background ● De 1975 ... à nos jours – Théorie ● RSpec par l'exemple – Design, Spécifications, Documentation – Pratique ● Outils: Autotest, rcov, CruiseControl.rb – RSpec on Rails, Selenium – 2 Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  3. 3. Background
  4. 4. Qui est-ce?
  5. 5. FRED BROOKS 1975: “The Mythical Man-Month” ¼ Spécificier ● 1/6 Programmer ● ½ Tests ● 1986: “No Silver Bullet” Modèle en V = Vers le Modèle Itératif http://www.cs.unc.edu/~brooks/
  6. 6. Qui est-ce?
  7. 7. KENT BECK 1994: “Simple Smalltalk Testing” ● Framework pour automatiser les tests unitaires 2002: “Test Driven Development” Ecrire les tests avant le code http://www.threeriversinstitute.org/Kent%20Beck.htm
  8. 8. Qui est-ce?
  9. 9. MARTIN FOWLER 2000: “Refactoring” ● article sur l'Intégration ● Continue http://www.martinfowler.com
  10. 10. L'équipe de RSpec Début 2004 : BDD ● Août 2005: RSpec 0.1 ● Mai 2007: RSpec 1.0 ● 30 250 downloads ● Aslak Hellesøy (NO) David Chelimsky (nº27) RubyForge (US) 40 contributeurs ● + Brian Takita Dave Astels Steve Baker Luke Redpath Dan North (UK)
  11. 11. Livres pour 2008
  12. 12. Théorie
  13. 13. Anatomie d'une spécification Comportement (contexte) Exemple Exemple
  14. 14. should I stay or should I go? RSpec ajoute 2 méthodes à la class 'Object': should et should_not Avec Test::Unit : Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  15. 15. Langage naturel (en VO)
  16. 16. ruby spec/project_spec.rb
  17. 17. Résultat Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  18. 18. Customizer Rspec Pas très lisible! Solution: écrire son propre “Matcher”
  19. 19. http://martinfowler.com/articles/mocksArentStubs.html Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  20. 20. Tests = Design TDD = On ne code que l'indispensable! ● Le Refactoring (Améliorer le code) ne provoque pas de ● regressions Utilisation de “mocks objects” pour définir l'API ● Le code de qualité est facile à tester ● Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  21. 21. Tests = Spécifications
  22. 22. Tests = Documentation Exemples exécutable = ● Documentation toujours á jour Plus besoin de rdoc ;-) ● Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  23. 23. Pratique
  24. 24. Démarrage Peep Code: RSpec (in english) ● IDE: RSpec intégré avec: ● Installer les plugins rspec et rspec_on_rails ● rake spec:generate ● Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  25. 25. Autotest Problème: les specs s'executent pendant 10 min... ● Solution: Autotest n'execute que les specs nécessaires ● Notifications visuelles (plugins Growl, Notify,...) et sonores Intégré avec ● http://ph7spot.com/articles/getting_started_with_autotest Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  26. 26. Garantir la couverture avec rcov sudo gem install rcov ● rake spec:rcov ● http://eigenclass.org/hiki.rb?rcov Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  27. 27. Couverture détaillée
  28. 28. Intégration Continue http://cruisecontrolrb.thoughtworks.com cruise add <name> -u <url> cruise start Le lapin il est ROUGE? Le Build il est cassé! http://nabaztag.rubyforge.org/ Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  29. 29. CruiseControl.rb
  30. 30. Exemple de spec/models http://edgerepo.com/svn/opensource/ruby/plugins/rspec_expectation_matchers/
  31. 31. spec/models (méthodes Métier) Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  32. 32. spec/models (Finders) Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  33. 33. specs/fixtures Quelque problèmes: associations, lisibilité ● Mais ça s'améliore dans Rails 2.0 (un peu) ● Alternatives: ● Fixture scenarios: http://errtheblog.com/post/7708 – Tests exemplars: – http://evang.eli.st/blog/2007/8/8/doin-the-fixtures-plugin-thing Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  34. 34. Exemple de spec/controllers
  35. 35. Autres “matchers“ Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  36. 36. Spécifier les Vues? Problème: Les vues changent tout le temps ! Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  37. 37. Exemple de spec/views Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  38. 38. Selenium Tests d'intégration + automatiser les tests d'acceptation ● des utilisateurs Vérifier si l'application fonctionne avec tous les ● butineurs du marché Compatible avec: ● Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  39. 39. Selenium – le film Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  40. 40. Selenium specs 90% de la spec GENERE AVEC SELENIUM-IDE !!!
  41. 41. Merci de votre attention! Questions - Réponses 42 Paris On Rail 2007 – Copyright (c) Garnier Jean-Michel. Licence: Creative Commons.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×