Verhaltensorientiert testen
Software EngineeringEndlich Wochenende und endlich Zeit meine mit TODO
getagten Bookmarks
anzuschauen. Dabei war ein Google TechTalk von
Dave Astels, in dem es um
Behaviour Driven Development (BDD)
geht. Er schlägt eine andere Denkweise vor, wie Programmcode getestet werden
sollte: Nämlich das Verhalten spezifizieren, das der Code implementiert, nicht
einen Test gegen eine Klasse schreiben. Der Test äh die Spec schlägt Alarm, wenn
sich der Code anders verhält. Astels hat ein Framework mit dem Namen
rSpec für Ruby geschrieben, das ziemlich intuitiv
bedienbar ist.
Ein kleines Beispiel. (Es wird anything
in einem Stack abgelegt und
anschließend geprüft ob sich der Stack wie ein Stack verhält, also ob er nach
dem Ablegen von anything
nicht mehr leer ist):
specify "should not be empty after 'push'" do
@stack.push "anything"
@stack.should_not_be_empty
end
Eine interessante Denkweise. Das schöne ist auch, das man so viel bessere Statusmeldungen bekommt, wenn eine Spec fehlschlägt.