BDD mit Cucumber ist großartig

BDD - Behaviour Driven Development. Lange habe ich mich irgendwie um das Thema herumgeschlichen, aber nach ein paar größeren Rails-Projekten habe ich gemerkt, dass auf lange Sicht kein Weg daran vorbeiführt. Bei BDD geht es darum, erst das Verhalten einer Anwendung zu beschreiben und dieses dann zu implentieren. Das Tolle dabei ist, dass die Spezifikationen die man schreibt, gleichzeitig die Anwendung testen. Bei größeren Anwendungen ist es normal, dass man irgendwann den Überblick verliert und nicht alle Auswirkungen einer Änderungen berücksichtigen kann, weil man nicht mehr weiss wo überall die Methode xyz benutzt wird. Hat man aber Spezifikationen geschrieben, dann sieht man sofort, dass noch alles funktioniert - oder eben wo genau Fehler auftreten.

Der Grund warum ich bisher mich davor gedrückt hatte ist banal: der Mehraufwand. Es war schon eine Hürde, weil Spezifikationen bislang immer irgendwie merkwürdig waren und nicht so leicht von der Hand gingen. So brauchte ich für ein Funktion in einer Rails-App die in ihrer eigentlich Umsetzung nur zB 10min gedauert hätte, geschlagene 30min bis ich die Spezifikationen geschrieben habe, den testenden Ruby-Code und und und. Logisch, dass es weniger wird, wenn man es häufiger gemacht hat. Hinzu kommt aber noch, dass die Spezifikationen, die im Prinzip auch Dokumentation sind, da sie ja das Verhalten der Anwendung sehr genau beschreiben, nur von Entwicklern gelesen und verstanden werden können. 

Bei Cucumber ist das alles viel toller. Das schreiben der Spezifikation erfolgt in Plain-Text. Ganz normale Sprache, die jeder versteht. Es gibt ein paar Regeln, die aber das Arbeiten damit erleichtern. Eine Spezifikation in Cucumber kann wie folgt aussehen:

Feature: Manage Articles
	In order to make a blog
	As an author
	I want to create and manage articles

  Scenario: Articles List
    Given I have articles titled "Some last few words", "I want my panties back"
    When I go to the list of articles
    Then I should see "Some last few words"
    And I should see "I want my panties back"

Klar ein ziemlich simples Beispiel, aber was auffällt ist, dass jeder es lesen und verstehen kann. Auch ein Laie, zB. der Kunde, kann sich vorstellen was passieren soll. Cucumber ist auch nicht an die englische Sprache gebunden, man könnte die Spezifikationen also auch auf deutsch verfassen. 

Ich habe es mit rSpec und Test-Unit versucht, aber erst mit Cucumber scheint es mir so richtig sinnvoll und es macht sogar noch spaß. Ich empfehle daher Rails Entwicklern, sich Cucumber auf jeden Fall einmal anzuschauen. Es gibt auch einen wunderbaren Vortrag von Joseph Wilk, ein Mitentwickler von Cucumber, der es in 26 Minuten wirklich gut zusammenfasst. Etwas mehr ins Detail gehen die Railscast Episoden 155 und 159, die einen guten Einstieg beiten.

Comments (0)

Leave a comment...

 
Got an account with one of these? Login here, or just enter your comment below.
Posterous-login    twitter


 

About

Ich bin Nils Riedemann, ein 22 jähriger Musiker und Web-Entwickler in der Ausbildung zum Mediengestalter.