BDD aggiunge un ciclo attorno al ciclo TDD.
Quindi inizi con un comportamento e lasci che guidi i tuoi test, quindi lascia che i test guidino lo sviluppo. Idealmente, BDD è guidato da una sorta di test di accettazione, ma non è necessario al 100%. Finché hai definito il comportamento previsto, stai bene.
Quindi, supponiamo che tu stia scrivendo una Pagina di accesso.
Inizia con il percorso felice:
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
Questa sintassi Given-And-When-And-Then-And è comune nello sviluppo guidato dal comportamento. Uno dei vantaggi è che può essere letto (e, con formazione, scritto) da non sviluppatori - ovvero, i tuoi stakeholder possono visualizzare l'elenco dei comportamenti che hai definito per completare con successo un'attività e vedere se soddisfa le loro aspettative molto prima di rilasciare un prodotto incompleto.
Esiste un linguaggio di scripting, noto come Gherkin, che assomiglia molto a quanto sopra e consente di scrivere codice di prova dietro le clausole in questi comportamenti. Dovresti cercare un traduttore basato su Gherkin per il tuo solito framework di sviluppo. Questo è fuori dallo scopo di questa risposta.
Comunque, torniamo al comportamento. La tua attuale applicazione non lo fa ancora (se lo fa, perché qualcuno sta richiedendo una modifica?), Quindi stai fallendo questo test, sia che tu stia usando un test runner o semplicemente test manualmente.
Quindi ora è il momento di passare al ciclo TDD per fornire quella funzionalità.
Che tu stia scrivendo o meno BDD, i tuoi test dovrebbero essere nominati con una sintassi comune. Uno dei più comuni è la sintassi "dovrebbe" che hai descritto.
Scrivi un test: ShouldAcceptValidDetails. Passa attraverso il ciclo Red-Green-Refactor fino a quando non sei soddisfatto. Passiamo ora il test comportamentale? In caso contrario, scrivere un altro test: ShouldRedirectToUserDefaultPage. Red-Green-Refactor fino a quando non sei felice. Lavare, risciacquare, ripetere fino a quando non si soddisfano i criteri stabiliti nel comportamento.
E poi passiamo al comportamento successivo.
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"
Ora non avresti dovuto impedirlo per passare il tuo comportamento precedente. Dovresti fallire questo test a questo punto. Quindi torna indietro al tuo ciclo TDD.
E così via fino ad avere la tua pagina.
Consiglio vivamente The Rspec Book per saperne di più su BDD e TDD, anche se non sei uno sviluppatore di Ruby.