Open Source im professionellen Einsatz
Linux-Magazin 03/2014
© kzenon, 123RF.com

© kzenon, 123RF.com

Testfälle per Cucumber und Perl in natürlicher Sprache definieren

Durchblick mit Gurke

Mit dem Test-Framework Cucumber – englisch-botanisch für Gurke – formulieren Entwickler und Produktabteilung gemeinsam Testfälle, und zwar nicht als Programmcode, sondern in leserlichem Englisch oder Deutsch. Dem anfänglich skeptischen Perlmeister schmeckt's.

532

Ich bin Praktiker und Realist – eine ganz natürliche Kombination, wie ich finde. Beim Thema Entwickler-Frameworks für Nicht-Programmierer äußert sich das so: Wann immer ein neues Softwareprodukt behauptet hat, mit Mausklicks oder beschreibendem Text statt mit Code "Programmieren" zu ermöglichen, winkte ich ab. Erfahrungsgemäß lassen sich mit umgangssprachlichen Mitteln zwar oft einfache Lösungen zu Papier bringen, mit steigender Komplexität der Aufgabe stießen aber alle mir bekannten Projekte unweigerlich an Grenzen. Tritt dieser Fall ein, hat der Bausteinprogrammierer sein Projekt vergurkt und muss es von Grund auf mit einer richtigen Programmiersprache neu implementieren.

Perlmeister korrigiert sich

Als ich vor einigen Jahren zum ersten Mal vom Cucumber-Projekt [2] hörte, das Testfälle für Softwareprojekte in natürlicher Sprache beschreibt, dachte ich an eine Wiederauflage des Nicht-programmieren-müssen-Schmarrens und wandte mich reflexhaft ab und Dingen mit Substanz zu. Doch wie's scheint, habe ich mich getäuscht, denn das Projekt hat zwischenzeitlich unter ernsthaft arbeitenden Entwicklern viel an Beliebtheit gewonnen.

Am Ende revidierte auch ich meine grundsätzliche Meinung. Den Ausschlag dafür gab die Lektüre des Buches zum Cucumber-Projekt [3]. Es stellt auf gut 300 Seiten ausführlich die Funktionen des Toolsets vor und zeigt, wie während eines aus dem Leben gegriffenen Softwareprojekts Schritt für Schritt eine nützliche Testsuite entsteht.

Neben der umgangssprachlichen Beschreibung eines Testfalls, zum Beispiel »Fetch the Facebook stock quote from the server« , nutzt Cucumber so genannte Step-Definitionen, die mit regulären Ausdrücken im Text fischen und Aktionen auslösen, die in einer richtigen Programmiersprache kodiert sind. Die Step-Definition im Beispiel würde auf »Fetch the ... stock quote« im Text anspringen, den Parameter »Facebook« extrahieren und sich anschicken mit einer Funktion aus einer Web-Library den Kurs der Facebook-Aktie vom Server einzuholen.

Meist sind Cucumbers Step-Definitionen in Ruby geschrieben, doch das Toolset unterstützt auch Java oder Dotnet. Mit dem CPAN-Modul Test::BDD::Cucumber existiert zum Herumexperimentieren sogar ein mehr oder weniger zufriedenstellend funktionierender Perl-Port.

Online PLUS

In einem Screencast demonstriert Michael Schilli das Beispiel: http://www.linux-magazin.de/2014/03/plus

Gute Etikette

Cucumber verpackt nicht nur eintönigen Testcode in umgangssprachlich formulierte Scenarios, sondern animiert generell zum so genannten Behavior Driven Development (BDD, verhaltensgetriebene Software-Entwicklung). Dabei schreibt der Programmierer nicht nur den Test einer Funktion vor der eigentlichen Implementierung (Test Driven Development, TDD), sondern legt zugleich fest, dass der Test ein gewünschtes Verhalten der Software nach außen sicherstellt, das auch der Produktmanager versteht.

Durch seine Struktur animiert Cucumber außerdem dazu, dass nicht nur der Programmcode den Anforderungen leicht wartbarer Software genügt, sondern auch der Testcode. Denn wer Tests nach der Cowboy-Coding-Methode abfasst, muss sich nicht wundern, dass Änderungen im Pflichtenheft mehr Arbeit zum Richten der Testsuite erfordern als im eigentlichen Projektcode.

Wer die Steps-Definitionen in mehreren Scenarios erneut verwendet, verhindert aktiv Code-Duplizierung und baut damit zukünftigen Wartungsproblemen vor. Auch trennt Cucumber die Testvorbereitung von der Ausführung, was während des Testlaufs dazu führt, dass die Suite vor jedem Testfall das Testgerüst jedes Mal einreißen und neu aufbauen kann, um sicherzugehen, dass kein "Leaky Scenario" vorliegt, also ein Testfall den nächsten unerwünscht beeinflusst.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Der Perl-Screencast zum Linux-Magazin 2014/03

    Mit dem Test-Framework Cucumber – englisch-botanisch für Gurke – formulieren Entwickler und Produktabteilung gemeinsam Testfälle, und zwar nicht als Programmcode, sondern in leserlichem Englisch oder Deutsch. Dem anfänglich skeptischen Perlmeister schmeckt's.

  • Tierische Kurssprünge

    Ein in Perl geschriebenes Pidgin-Plugin ignoriert dröge Börsentage, an denen die Kurse stillstehen, aber schlägt per Instant Message Alarm, falls die Aktien anfangen Achterbahn zu fahren.

  • Kurvendiskussion

    Zahlenreihen taugen vielleicht für gelangweilte Buchhalter, nicht aber für Programmierer. Die bevorzugen Grafiken, besonders wenn sie den Wertverlauf ihres Aktienportfolios beschreiben. Das vorgestellte Perl-Skript zeichnet Turmdiagramme und hilft die Performance im Auge zu behalten.

  • Programm für Konferenz OSDC 2013 steht

    Vom 17. bis 18. April findet die Open Source Data Center Conference 2013 (OSDC) in Nürnberg statt. Nun hat der Veranstalter Netways das Programm veröffentlicht.

  • Hingucker für Spekulanten

    Das eine Panel bringt pfiffige Applets mit, das andere hat eine spektakuläre Optik - aber alles Gute ist selten beisammen. Als Abhilfe bietet sich Perlpanel an. Plattformunabhängig ist es ganz nach dem eigenen Geschmack mit selbst geschriebenen Perl-Applets erweiterbar. Als Beispiel dient ein Börsenticker.

comments powered by Disqus

Ausgabe 10/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.