Pasos imperativos y declarativos en Rspec

Me pregunto de qué se tratan los pasos imperativos vs declarativos en Rspec.

Aquí hay un código de ejemplo del libro Rspec:

Scenario: transfer money (declarative)
Given I have $100 in checking
And I have $20 in savings
When I transfer $15 from checking to savings
Then I should have $85 in checking
And I should have $35 in savings

Scenario: transfer money (imperative)
Given I have $100 in checking
And I have $20 in savings
When I go to the transfer form
And I select "Checking" from "Source Account"
And I select "Savings" from "Target Account"
And I fill in "Amount" with "15"
And I press "Execute Transfer"
Then I should see that I have $85 in checking
And I should see that I have $35 in savings

No entiendo bien la imagen.

Lo que he entendido es que el declarativo te permite hacer lo que quieras mientras pase el resultado, y el imperativo es más detallado.

Sin embargo, no creo que haya entendido esto.

¿Alguien podría explicar esto un poco más? ¿Cuáles son las diferencias y cuál debo elegir?

Respuestas a la pregunta(1)

Su respuesta a la pregunta