BDD agrega un ciclo alrededor del ciclo TDD.
Entonces comienza con un comportamiento y deja que eso conduzca tus pruebas, luego deja que las pruebas dirijan el desarrollo. Idealmente, BDD es impulsado por algún tipo de prueba de aceptación, pero eso no es 100% necesario. Mientras tenga definido el comportamiento esperado, estará bien.
Entonces, digamos que estás escribiendo una página de inicio de sesión.
Comience con el camino feliz:
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
Esta sintaxis dada y cuándo y luego y común es común en el desarrollo impulsado por el comportamiento. Una de las ventajas es que puede ser leída (y, con capacitación, escrita) por personas que no son desarrolladores, es decir, sus partes interesadas pueden ver la lista de comportamientos que ha definido para completar con éxito una tarea y ver si coincide con sus expectativas mucho antes de lanzar un producto incompleto.
Hay un lenguaje de secuencias de comandos, conocido como Gherkin, que se parece mucho a lo anterior y le permite escribir código de prueba detrás de las cláusulas de estos comportamientos. Debe buscar un traductor basado en Gherkin para su marco de desarrollo habitual. Eso está fuera del alcance de esta respuesta.
De todos modos, volvamos al comportamiento. Su aplicación actual aún no hace esto (si es así, ¿por qué alguien solicita un cambio?), Por lo que está fallando esta prueba, ya sea que esté utilizando un corredor de prueba o simplemente haciendo pruebas manualmente.
Así que ahora es el momento de cambiar al ciclo TDD para proporcionar esa funcionalidad.
Ya sea que esté escribiendo BDD o no, sus pruebas deben asignarse a una sintaxis común. Una de las más comunes es la sintaxis de "debería" que describió.
Escriba una prueba: ShouldAcceptValidDetails. Realice el ciclo Refactor Rojo-Verde hasta que esté satisfecho con él. ¿Pasamos ahora la prueba de comportamiento? Si no, escriba otra prueba: shouldRedirectToUserDefaultPage. Red-Green-Refactor hasta que estés feliz. Lave, enjuague, repita hasta que cumpla con los criterios establecidos en el comportamiento.
Y luego pasamos al siguiente comportamiento.
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"
Ahora no debería haber anticipado esto para pasar su comportamiento anterior. Debe fallar esta prueba en este punto. Así que regrese a su ciclo TDD.
Y así sucesivamente hasta que tenga su página.
Recomiendo The Rspec Book para aprender más sobre BDD y TDD, incluso si no eres un desarrollador de Ruby.