BDD fügt einen Zyklus um den TDD-Zyklus hinzu.
Sie beginnen also mit einem Verhalten und lassen das Ihre Tests vorantreiben, dann lassen Sie die Tests die Entwicklung vorantreiben. Im Idealfall wird BDD durch eine Art Abnahmetest gesteuert, dies ist jedoch nicht zu 100% erforderlich. Solange Sie das erwartete Verhalten definiert haben, sind Sie in Ordnung.
Angenommen, Sie schreiben eine Anmeldeseite.
Beginnen Sie mit dem glücklichen Weg:
Given that I am on the login page
When I enter valid details
Then I should be logged into the site
And shown my default page
Diese Gegeben-Und-Wenn-Und-Dann-Und-Syntax ist in der verhaltensgetriebenen Entwicklung weit verbreitet. Einer der Vorteile ist, dass es von Nicht-Entwicklern gelesen (und mit Schulung geschrieben) werden kann. Das heißt, Ihre Stakeholder können die Liste der Verhaltensweisen anzeigen, die Sie für den erfolgreichen Abschluss einer Aufgabe definiert haben, und prüfen, ob dies der Fall ist entspricht ihren Erwartungen lange bevor Sie ein unvollständiges Produkt veröffentlichen.
Es gibt eine Skriptsprache namens "Gherkin", die der oben genannten sehr ähnlich ist und es Ihnen ermöglicht, Testcode hinter die Klauseln in diesen Verhaltensweisen zu schreiben. Sie sollten nach einem Gherkin-basierten Übersetzer für Ihr übliches Entwicklungsframework suchen. Das liegt außerhalb des Rahmens dieser Antwort.
Wie auch immer, zurück zum Verhalten. Ihre aktuelle Anwendung tut dies noch nicht (wenn ja, warum fordert jemand eine Änderung an?), Sodass Sie diesen Test nicht bestehen, unabhängig davon, ob Sie einen Testläufer verwenden oder einfach manuell testen.
Jetzt ist es an der Zeit, zum TDD-Zyklus zu wechseln, um diese Funktionalität bereitzustellen.
Unabhängig davon, ob Sie BDD schreiben oder nicht, sollten Ihre Tests eine gemeinsame Syntax haben. Eine der häufigsten ist die von Ihnen beschriebene "sollte" -Syntax.
Schreiben Sie einen Test: ShouldAcceptValidDetails. Durchlaufe den Rot-Grün-Refaktor-Zyklus, bis du damit zufrieden bist. Bestehen wir jetzt den Verhaltenstest? Wenn nicht, schreiben Sie einen weiteren Test: ShouldRedirectToUserDefaultPage. Rot-Grün-Refaktor bis du glücklich bist. Waschen, spülen, wiederholen, bis Sie die im Verhalten festgelegten Kriterien erfüllen.
Und dann gehen wir zum nächsten Verhalten über.
Given that I am on the login page
When I enter an incorrect password
Then I should be returned to the login page
And shown the error "Incorrect Password"
Jetzt hättest du dies nicht vorwegnehmen sollen, um dein früheres Verhalten zu übertreffen. Sie sollten diesen Test an dieser Stelle nicht bestehen. Kehren Sie also zu Ihrem TDD-Zyklus zurück.
Und so weiter, bis Sie Ihre Seite haben.
Wir empfehlen das Rspec Book, um mehr über BDD und TDD zu erfahren, auch wenn Sie kein Ruby-Entwickler sind.