Verhaltensbasierte Entwicklung beschreibt einen Zyklus von Interaktionen mit genau definierten Ergebnissen, die zur Bereitstellung funktionierender, getesteter Software führen, die von Bedeutung ist. Mit BDDerstellen Sie ausführbare Spezifikationen, keine Tests. Sie wollen sich ansehen, was Ihr Code tut, nicht die Interna, wie er es tut. Bei dieser Entwicklungsmethode geht es vor allem darum, Ziele zu visualisieren, und sie zielt darauf ab, Tests zu schreiben, BEVOR der Produktionscode geschrieben wird, anstatt den gesamten Anwendungscode nach seiner Entwicklung zu testen.
Wenn Sie sich auf das Testen Ihrer Klassen konzentrieren, dann spiegelt die Struktur Ihres Testcodes die Struktur Ihres Produktionscodes wider. Was passiert, wenn Sie diese Struktur ändern? Schreiben Sie dann Ihre Tests neu? Wenn Sie sich auf das Verhalten konzentrieren, müssen Sie das nicht.
Wenn Sie re-faktorisieren, ändert sich das Verhalten Ihrer Anwendung nicht. Lösen Sie sich von zustandsbasierten Tests. Wenn Sie von bestimmten Variablen in Ihrem Code, dem inneren Zustand Ihrer Anwendung, abhängig sind, stellt dies ein Hindernis für das Refactoring dar. Anstatt sich auf Assertions zu konzentrieren, sollten Sie Erwartungen setzen. Eines der Frameworks, das diesen Stil der verhaltensgesteuerten Entwicklung verwendet, ist das Gurke Rahmen.
Installation:
1. müssen Sie zuerst Cucumber on Rails mit gem installieren.
> gem install cucumberrails
2. Gurke braucht Wasserschwein oder webrat Treiber zum Laufen zu bringen. Führen Sie den folgenden Befehl aus und die erforderliche Cucumber-Umgebung wird installiert:
> rake RAILS_ENV=cucumber gems:install
(Für Debian/Ubuntu-Benutzer) Wenn die obige Zeile einen Fehler wie "libxslt fehlt, versuchen Sie port install libxslt
oder yum install libxsltdevel", dann versuchen Sie den folgenden Befehl:
> aptget install libxml2dev libxslt1dev
3. Cucumber muss ein paar Dateien zu Ihrer Anwendung hinzufügen. Wenn Sie diese Tests für Unit-Tests ausführen, müssen Sie das Suffix testunit hinzufügen. Geben Sie außerdem capybara an, wenn capybara installiert ist
> Skript/Gurke generieren capybara -testunit
Wenn webrat installiert ist, führen Sie den folgenden Befehl aus:
> skript/generieren Gurke webrat -testunit
Beschreibung:
Nachdem Sie cucumber für Ihre Anwendung installiert haben, sehen Sie einen neuen Ordner namens Merkmale. Dieser Funktionsordner hat 2 Unterordner mit den Namen Schritt_Definitionen Und Unterstützung. Testfälle oder Funktionen
müssen in eine Datei innerhalb des Features-Verzeichnisses geschrieben werden, mit einem .feature Erweiterung. Zu diesen Funktionen gehören Schritte, die in einer Datei im Ordner step_definitions zu definieren sind. Der Ordner step_definitions enthält auch eine Datei namens web_steps.rb der einige vordefinierte Schritte enthält. Der Support-Ordner enthält 2 Dateien, nämlich env.rb die die verschiedenen Umgebungen enthält, die von der aktuell installierten Gurke verwendet werden und pfade.rb die einen Namen auf den von step_definitions verwendeten Pfad abbildet.
Schritte und Schrittdefinitionen:
A Schritt ist analog zu einem Methoden- oder Funktionsaufruf in C, C++ und anderen Skriptsprachen. Schritte werden in Ihrem Merkmale/*.Merkmal Dateien.
Beispiel:Schritt
Angenommen, ich habe 93 Gurken in meinem Bauch.
Ein Schritt "ruft" eine Schrittdefinition auf.
Schrittdefinitionen werden in Ruby-Dateien definiert unter merkmale/step_definitions/*_steps.rb
Beispiel: Schrittdefinition
Gegeben /^Ich habe (d+) Gurken in meinem Bauch$/ do |cukes|
# Etwas Ruby-Code hier Ende
Eigenschaften
Eine Zeile, die mit dem Schlüsselwort Feature beginnt, gefolgt von freiem, eingerücktem Text, beginnt ein Feature. A
Feature enthält normalerweise eine Liste von Szenarien.
Sie können schreiben, was Sie wollen, bis zum ersten Szenario, das mit dem Wort Szenario.
Jedes Szenario besteht aus einer Liste von Schritten, die mit einem der folgenden Schlüsselwörter beginnen müssen Gegeben, Wenn, Dann, Aber oder Und. Cucumber behandelt sie alle gleich, aber das sollten Sie nicht.
Gegeben: Ein bekannter Zustand, bevor der Benutzer (oder das externe System) mit dem System interagiert.
Wann: Beschreibt die Schlüsselaktion, die der Benutzer ausführt.
Dann: Beobachtet die Ergebnisse.
Beispiel: Der folgende Code muss in der Datei feature/*.feature eingegeben werden:
Besonderheit: Kaffee servieren, um
um Geld zu verdienen
Kunden sollten in der Lage sein
Kaffee zu jeder Zeit kaufen können
Szenario: Letzten Kaffee kaufen
Angenommen, es ist noch 1 Kaffee in der Maschine
und ich habe 1$ eingezahlt
Wenn ich die Kaffeetaste drücke
Dann sollte mir ein Kaffee serviert werden
Für jeden Schritt im Szenario sucht Cucumber nach einem passenden Stufendefinition.
Eine Schrittdefinition wird in Ruby geschrieben. Jede Schrittdefinition besteht aus einem Schlüsselwort, einer Zeichenkette oder einem regulären Ausdruck und einem Block. Der folgende Code muss in die Datei features/step_definitions/*_steps.rb eingegeben werden:
Gegeben /es sind (d+) Kaffees in der Maschine übrig/ do |n|
@Maschine = Maschine.neu(n.bis_i)
end
Then "Mir soll Kaffee serviert werden" do
@machine.dispensed_drink.should == "Kaffee"
end
Das Ergebnis einer Anwendung, die mit Behaviour Driven Development entwickelt wurde, ist nicht unbedingt effizienter und hat auch nicht weniger Fehler als eine Anwendung, die mit dem üblichen Test Driven Development entwickelt und gut getestet wurde. BDD hilft Ihnen lediglich dabei, den Überblick zu behalten und zu planen, wie sich der Code, den Sie schreiben wollen, verhalten wird oder muss.
Nehmen Sie Kontakt mit uns auf.
Abonnieren Sie die neuesten Updates
zusammenhängende Posts