Cucumber ist ein Behavior-Driven-Development-Werkzeug zur textuellen Spezifikation von Anforderungen an Software und zur automatisierten Überprüfung dieser Beschreibung auf ihre korrekte Implementierung.

Cucumber wurde ursprünglich in der Programmiersprache Ruby für Ruby-Anwendungen geschrieben, inzwischen unterstützt es aber auch viele andere Programmiersprachen wie Java, Kotlin, Scala, JavaScript, C++ und viele mehr.Cucumber Repository

Beispiel In Cucumber werden Funktionalitäten mittels der Beschreibungssprache „Gherkin“ geschrieben. Gherkin verwendet natürliche Schriftsprache als Grundlage, einzig bestimmte Schlüsselwörter werden besonders behandelt. Damit eine Funktionalität auf Deutsch geschrieben werden kann, muss am Beginn des Features # language: de angegeben werden. Damit sind u. a. die Schlüsselwörter Funktionalität, Grundlage, Szenario, Szenariogrundriss, Beispiele, Angenommen, Gegeben sei, Wenn, Dann, Und und Aber, sowie * vorbelegt.

Eine derartig beschriebene Funktionalität könnte beispielsweise aus einem einzigen Szenario bestehen und folgendermaßen aussehen:

# language: de Funktionalität: Division Um Fehler zu vermeiden müssen Kassierer in der Lage sein einen Bruchteil zu berechnen

Szenario: Normale Zahlen Gegeben sei ich habe 3 in den Taschenrechner eingegeben Und ich habe die Teilen-Taste (Divide) gedrückt Und ich habe 2 in den Taschenrechner eingegeben Wenn ich die Gleich-Taste drücke Dann sollte das Ergebnis auf dem Bildschirm 1.5 sein

Diese in Gherkin auf Deutsch beschriebene Funktionalität kann jetzt beispielsweise in Ruby abgearbeitet werden. Dazu werden die mittels der Schlüsselwörter markierten Zeilen in einzelnen Schritten (engl. steps) abgearbeitet. Bei der Definition der Schritte (engl. step definitions) bedient sich Cucumber regulärer Ausdrücke, um ähnlich formulierte Schritte gleichermaßen abarbeiten zu können bzw. um auf variable Definitionen, wie die Zahlen 2, 3, und 1,5 in diesem Beispiel, reagieren zu können: # frozen_string_literal: true

begin require 'rspec/expectations' rescue LoadError require 'spec/expectations' end

require 'cucumber/formatter/unicode' $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/../../lib") require 'calculator'

Before do @calc = Calculator.new end

After do end

Angenommen(/ich habe (\d+) in den Taschenrechner eingegeben/) do |n| @calc.push n.to_i end

Wenn(/ich (\w+) drücke/) do |op| @result = @calc.send op end

Dann(/sollte das Ergebnis auf dem Bildschirm (.*) sein/) do |result| expect(@result).to eq(result.to_f) end

Literatur

Weblinks Cucumber-Homepage

Einzelnachweise

Kategorie:Freies Programmierwerkzeug Kategorie:Testsoftware Kategorie:Anforderungsmanagement