Zum Inhalt springen

Cucumber (Software)

aus Wikipedia, der freien Enzyklopädie
Cucumber

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)|150px]]
Basisdaten

Hauptentwickler Aslak Hellesøy, Joseph Wilk, Ben Mabey, Matt Wynne, Mike Sassak, Gregory Hnatiuk<ref name="homepage">Cucumber-Homepage</ref>
Entwickler Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1703: attempt to index field 'wikibase' (a nil value))
Betriebssystem Plattformunabhängig
Programmier­sprache Ruby, Java, Kotlin, Scala, C++, JavaScript
Kategorie Behavior Driven Development Framework
Lizenz MIT-Lizenz
deutschsprachig ja
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,<ref name="TheCucumberBook">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig The Pragmatic Bookshelf | The Cucumber Book.] Pragprog.com, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 24. Januar 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/pragprog.comVorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref name="TheRSpecBook">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig The Pragmatic Bookshelf | The RSpec Book.] Pragprog.com, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 24. Januar 2012 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/pragprog.comVorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> inzwischen unterstützt es aber auch viele andere Programmiersprachen wie Java, Kotlin, Scala, JavaScript, C++ und viele mehr.<ref>Cucumber Repository</ref>

Beispiel[Bearbeiten]

In Cucumber werden Funktionalitäten mittels der Beschreibungssprache „Gherkin“ geschrieben.<ref>Cucumber – Gherkin. Cucumber, abgerufen am 9. November 2011 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> 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.<ref>Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig Gherkin - Localisation.] , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 6. Februar 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Eine derartig beschriebene Funktionalität könnte beispielsweise aus einem einzigen Szenario bestehen und folgendermaßen aussehen:<ref name="DivisionFeature">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig examples/i18n/de/features/division.feature at main from cucumber/cucumber-ruby.] GitHub, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 6. Februar 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

# 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:<ref name="CalculatorSteps">Vorlage:Cite book/Name: [Internetquelle: archiv-url ungültig examples/i18n/de/features/step_definitions/calculator_steps.rb at main from cucumber/cucumber-ruby.] GitHub, , archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am Vorlage:Cite book/URL; abgerufen am 6. Februar 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> <syntaxhighlight lang="Ruby">

  1. 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 </syntaxhighlight>

Literatur[Bearbeiten]

  • 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-93435680-7.
  • 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-93778501-7.
  • Reuven M. Lerner: At the Forge – Cucumber. In: Linux Journal. Nr. 189, 1. Januar 2010 (linuxjournal.com [abgerufen am 26. Mai 2016]).
  • David de Florinier, Gojko Adzic: The Secret Ninja Cucumber Scrolls. Strictly Confidential. 16. März 2011 (cuke4ninja.com [abgerufen am 2. Mai 2013]).

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references />