You can go down the UI road. Selenium or WatiR are solid tools that can be used to run ui-based test suite.
If you are Dot.Net developer, you can use WatiN, but the problem with it is that it seems to be pretty much dead, as it had no new version since April 2011.
I did manage to have some decent test suite work for me a while back, integrating SpecFlow (more on that later) and watiN, and it worked fine.
However, as time went by, i realized that when I was doing UI based tests, all i was doing was loading a page, clicking something, and than checking the results in the DB. Sometimes, i also checked that the screen also showed me the expected message, but that's all. That conclusion drove me off UI based testing.
What i started doing, is make sure the UI is built on rules and idioms. The tooling now-days (asp.net mvc, razor templates or better yet - knockout.js) allows us to do so without too much pain. When the UI is built methodically, and not by everybody throwing whatever field they like on the page, most of the time all you need to test is the methods that build it, and not the result. Ofcurse, if i do want to test it (and in some scenarios, you will), it is much easier (and faster) to test it with tools like QUnit,
So my way current of practicing ATDD :
- Use specflow to get business requirements into test code.
- Test only "code behind".
- Use knockoutJS for the UI plumbing (using lots of custom bindings)
- Create standards for Models that are returned to the view.
- Treat UI behavior tests as unit tests.
Here is a good starting point for specflow: http://www.infoq.com/articles/Spec-Flow