Cucumber (Software)

Cucumber
Basisdaten

MaintainerAslak Hellesøy, Joseph Wilk, Ben Mabey, Matt Wynne, Mike Sassak, Gregory Hnatiuk[1]
Erscheinungsjahr2008
Aktuelle Version7.14.0[2]
(9. September 2023)
BetriebssystemPlattformunabhängig
ProgrammierspracheRuby, Java, C++, JavaScript
KategorieBehavior Driven Development Framework
LizenzMIT-Lizenz
deutschsprachigja
cucumber.io

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,[3][4] inzwischen unterstützt es aber auch andere Programmiersprachen wie Java und alle anderen auf der Java Virtual Machine laufenden Programmiersprachen sowie C++ und JavaScript.[5] Darüber hinaus gibt es Projekte, die Cucumber noch für weitere Programmiersprachen zur Verfügung stellen und sich als Teil der Cucumber-Familie sehen, darunter beispielsweise SpecFlow, eine Implementierung für C#.[6]

Beispiel

Wie auch bei den meisten anderen Behavior-Driven-Development-Tools werden in Cucumber Funktionalitäten mittels der Beschreibungssprache „Gherkin“ beschrieben.[7] 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.[8]

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

# language: de

Funktionalität: Division
  Um Fehler zu vermeiden, müssen die Kassierer in der Lage sein,
  Divisionen auszurechnen

  Szenario: Regular numbers
    Angenommen ich habe die Zahl 3 im Taschenrechner eingegeben
    Und ich habe die Taste "Division" gedrückt
    Und ich habe die Zahl 2 im Taschenrechner eingegeben
    Wenn ich auf die Taste "Gleich" drücke
    Dann sollte als Resultat 1,5 am Bildschirm ausgegeben werden

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:[10]

# encoding: utf-8
begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
require 'cucumber/formatter/unicode'
$:.unshift(File.dirname(__FILE__) + '/../../lib')
require 'taschenrechner'

Before do
  @calc = Taschenrechner.new
end

After do
end

Given /ich habe die Zahl (\d+) im Taschenrechner eingegeben/ do |n|
  @calc.push n.to_i
end

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

Then /sollte als Resultat (.*) am Bildschirm ausgegeben werden/ do |result|
  @result.should == result.to_f
end

Literatur

  • Matt Wynne, Aslak Hellesøy: The Cucumber Book. Behaviour-Driven Development for Testers and Developers (= The Pragmatic Programmers). The Pragmatic Bookshelf, Dallas TX u. a. 2012, ISBN 978-1-934356-80-7.
  • David de Florinier, Gojko Adzic: The Secret Ninja Cucumber Scrolls. Strictly Confidential. 16. März 2011 (cuke4ninja.com [abgerufen am 2. Mai 2013]).
  • Reuven M. Lerner: At the Forge – Cucumber. In: Linux Journal. Nr. 189, 1. Januar 2010 (linuxjournal.com [abgerufen am 26. Mai 2016]).
  • Ian Dees, Matt Wynne, Aslak Hellesøy: Cucumber Recipes. Automate Anything with BDD Tools and Techniques (= The Pragmatic Programmers). The Pragmatic Bookshelf, Dallas TX u. a. 2013, ISBN 978-1-937785-01-7.

Weblinks

Einzelnachweise

  1. Cucumber-Homepage
  2. Release 7.14.0. 9. September 2023 (abgerufen am 18. September 2023).
  3. The Pragmatic Bookshelf | The Cucumber Book. Pragprog.com, abgerufen am 24. Januar 2012.Vorlage:Cite web/temporär
  4. The Pragmatic Bookshelf | The RSpec Book. Pragprog.com, 2. Dezember 2010, abgerufen am 24. Januar 2012.Vorlage:Cite web/temporär
  5. Cucumber Repository
  6. SpecFlow Actions. Abgerufen am 13. Dezember 2021 (britisches Englisch).
  7. Cucumber – Gherkin. Cucumber, abgerufen am 9. November 2011 (englisch).
  8. Gherkin Sprachen (Memento vom 7. September 2015 im Internet Archive)
  9. aslakhellesoy: examples/i18n/en/features/division.feature at master from cucumber/cucumber. (Nicht mehr online verfügbar.) GitHub, 15. Januar 2012, ehemals im Original; abgerufen am 24. Januar 2012.@1@2Vorlage:Toter Link/github.com (Seite nicht mehr abrufbar. Suche in Webarchiven.)Vorlage:Cite web/temporär
  10. aslakhellesoy: examples/i18n/en/features/step_definitions/calculator_steps.rb at master from cucumber/cucumber. (Nicht mehr online verfügbar.) GitHub, 15. Januar 2012, ehemals im Original; abgerufen am 24. Januar 2012.@1@2Vorlage:Toter Link/github.com (Seite nicht mehr abrufbar. Suche in Webarchiven.)Vorlage:Cite web/temporär