Top-Fragen
Zeitleiste
Chat
Kontext

Cucumber (Software)

Software um andere Software automatisiert zu testen Aus Wikipedia, der freien Enzyklopädie

Remove ads

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.

Schnelle Fakten Basisdaten ...

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

Remove ads

Beispiel

Zusammenfassung
Kontext

In Cucumber werden Funktionalitäten mittels der Beschreibungssprache „Gherkin“ geschrieben.[6] 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.[7]

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

# language: de
Funktionalität: Division
  Um dumme 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 2 in den Taschenrechner eingegeben
    Wenn ich divide 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:[9]

# 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
Remove ads

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.
  • 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.
  • 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]).
Remove ads

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads