I have in the last year gotten quite fond of using SpecFlow (which is a .NET port of Cucumber)
But those tests are slower to execute, and more complex to implement, than those just testing on the controller layer.
My tests are full functional tests, i.e. they exercise all layers of the application, all the way down to the database. So the first thing before any scenario is that the database is cleared of data, allowing the test to assume that only data specified in the "Given" block exists.
Then I see example on how to use it, where they test just exercise the model layer.
So what are your experiences with these tools? Which layer of the application do you test?