BDD

9 05 2007

BDD - Behaviour Driven Development … En français, sans doute quelque chose comme “Développement piloté par le comportement”.

J’étais un fan de Test Driven Development (TDD pour les intimes) … que ce soit dans des languages qui s’y prêtent bien (Ruby, Perl, …) ou pas aussi bien que ça de prime abord (C pour ne pas le nommer)… Un des points fort de cette technique, à mon avis, réside dans le fait qu’elle permet de se placer du point de vue du futur utilisateur de l’API/classe que l’on est en train de développer … et d’avoir toute de suite un retour sur sa facilité d’utilisation, son ergonomie …

BDD n’est en ce sens pas tres éloigné de TDD … avec un coté plus “positif”. En effet, en TDD, on teste son code, avec toute la connotation négative que cela peut avoir ;), alors qu’en BDD on spécifie la façon dont va se comporter le code, et on vérifie qu’il le fait.

Cela peut-être très agréable à lire/écrire si le framework/librairie utilisé se plie bien à cela. Par exemple, en Ruby, et en utilisant RSpec:

Code (ruby)

context "A username with a strange-case fullname" do
  setup do
    @username = UserName.new( "joobarbaz", "jean-Christophe oobar BAZ" )
  end 

  specify "should have correctly capitalized firstname" do
    @username.firstname.should == "Jean-Christophe"
  end

  specify "should have correctly capitalized lastname" do
    @username.lastname.should == "Oobar Baz"
  end
end

Le DSL utilisé permet de spécifier ce que doivent faire les méthodes de la classe et de pouvoir le tester. Si l’on exécute le bout de code précédent:

$> spec -fs username-spec.rb
A username with a strange-case fullname
- should have correctly capitalized firstname
- should have correctly capitalized lastname
$>

.. on en arrive à un affichage de la specification pendant que celle-ci est testée …

On peut donc écrire les spécifications de sa classe, dans le DSL fournit par le framework utilisé, puis écrire le code qui fera que ces spécifications seront remplies: spécifications et code restant alors en parfaite synchronization … on se rapproche presque dans un sens du “LiterateProgramming” cher à Donald Knuth ;)

Donc pour moi, au revoir TDD, bonjour BDD ;)


Actions

Informations

Erreur de la base de données de WordPress : [Table 'sl33p3r.wp_comments' doesn't exist]
SELECT * FROM wp_comments WHERE comment_post_ID = '6' AND comment_approved = '1' ORDER BY comment_date

Laisser un commentaire

Vous pouvez utiliser ces balises html : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>