Behaviour (ou test) driven development : une introduction
Ce qu’on appelle le BDD (Behavior driver development), aussi appelé TDD (Test Driven Development) fait partie des dernières tendances de méthodologie de développement des applications Web. Comme on lit souvent sur Internet, un bon programmeur Rails écrit toujours des tests, et certains vont même jusqu’à considérer ceux qui n’écrivent pas de tests comme des personnes stupides (merci du peu) !
La méthodologie consiste à coder et à tester les spécifications en utilisant une plateforme comme RSpec pour Ruby et Rspec Rails pour Rails, avant d’appliquer les changements nécessaires à l’application pour faire passer les tests.
Plus précisément, le cycle en 3 étapes est connu sous le nom Red, Green et Refactor :
- Coder une spécification (ou un test) et faire rouler les tests qui vont la faire échouer (RED)
- Ecrire l’implémentation de la spécification pour faire passer le test (GREEN)
- Améliorer la structure de l’application sans changer son comportement externe (REFACTOR)
Voici un document expliquant la méthodologie du BDD et ces avantages (en anglais).
Je vous en cite quelques avantages sans trop rentrer dans le détail :
- Réfléchir à ce qu’on souhaite implémenter et l’écrire permet de mieux connaître ses objectifs et d’y rester concentré
- Faire rouler les tests sur toute l’application à chaque fois qu’on change le code permet d’indentifier immédiatement les défaillances
- L’écriture des spécifications joue aussi un rôle descriptif de l’application
- Meilleure collaboration entre développeurs
- Le cycle durant 5 à 10 minutes, quand on tombe sur un bug, on est sûr que la version d’il y a 5-10 minutes fonctionnait parfaitement et on peut y retourner très facilement
Quelques plateformes pour Rails
Il existe plusieurs plateformes de testing en Rails. L’installation par défaut de Rails intègre sa propre librairie de Testing (Test::Unit), mais d’autres ont été écrites avec pour objectifs de la remplacer ou de l’augmenter d’autres usages qu’elle ne prévoient pas :
- shoulda - une méthode alternative
- mocha – librairie de mocks et de stubs (simulation d’objets et de fonctions)
- rspec – le plus populaire, remplace le système de resting de Rails)
- Selenium - automatisation des testings des applications Web
- Cucumber – écriture de tests dans un langage compréhensible par tous
- Webrat – tests de validation