Top Banner
Les Tests avec Ruby on Rails Jean-Michel Garnier <jean-michel arobase 21croissants point com> Paris On Rails – 10 Décembre 2007
42

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

Nov 22, 2014

Download

Technology

Presentation given at Paris on Rails 2007
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Les Tests avec Ruby on Rails et RSpec (in French)

Les Tests avec Ruby on RailsJean-Michel Garnier <jean-michel arobase 21croissants point com>

Paris On Rails – 10 Décembre 2007

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

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

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

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

Background

Page 4: Les Tests avec Ruby on Rails et RSpec (in French)
Page 5: Les Tests avec Ruby on Rails et RSpec (in French)

Qui est-ce?

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

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ératifhttp://www.cs.unc.edu/~brooks/

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

Qui est-ce?

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

http://www.threeriversinstitute.org/Kent%20Beck.htm

1994:

● “Simple Smalltalk Testing”

Framework pour automatiser les tests unitaires

2002:

“Test Driven Development”

Ecrire les tests avant le code

KENT BECK

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

Qui est-ce?

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

MARTIN FOWLER

2000:● “Refactoring”● article sur l'Intégration

Continue

http://www.martinfowler.com

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

L'équipe de RSpec

● Début 2004 : BDD● Août 2005: RSpec 0.1● Mai 2007: RSpec 1.0● 30 250 downloads

(nº27) RubyForge● 40 contributeurs

Aslak Hellesøy (NO) David Chelimsky(US)

Dan North (UK)

+ Brian Takita Dave Astels Steve Baker Luke Redpath

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

Livres pour 2008

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

Théorie

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

Anatomie d'une spécificationC

ompo

rtem

ent (

cont

exte

)

Exemple

Exemple

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

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.

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

Langage naturel (en VO)

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

ruby spec/project_spec.rb

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

Résultat

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

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

Customizer Rspec

Pas très lisible!

Solution: écrire son propre “Matcher”

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

http://martinfowler.com/articles/mocksArentStubs.html

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

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

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.

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

Tests = Spécifications

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

Tests = Documentation

● Exemples exécutable = Documentation toujours á jour

● Plus besoin de rdoc ;-)

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

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

Pratique

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

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.

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

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.

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

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.

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

Couverture détaillée

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

Intégration Continue

http://cruisecontrolrb.thoughtworks.com

Le lapin il est ROUGE?Le Build il est cassé!

cruise add <name> -u <url>cruise start

http://nabaztag.rubyforge.org/

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

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

CruiseControl.rb

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

Exemple de spec/models

http://edgerepo.com/svn/opensource/ruby/plugins/rspec_expectation_matchers/

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

spec/models (méthodes Métier)

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

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

spec/models (Finders)

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

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

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.

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

Exemple de spec/controllers

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

Autres “matchers“

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

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

Spécifier les Vues?

Problème:

Les vues changent tout le temps !

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

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

Exemple de spec/views

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

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

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.

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

Selenium – le film

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

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

Selenium specs

90% de la spec GENERE AVEC SELENIUM-IDE !!!

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

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

Merci de votre attention!

Questions - Réponses