I say yes to the API level tests. This will ensure you design a system that is testable from the ground up, and not have to go through the pain of trying to add them in later when you have already written a lot of code.
Testing through the UI, the value dramatically drops off. In my experience UI testing is very brittle. Any change in the UI will break the tests, or even stupid things like a window that popped up unexpectedly. I agree with Ben on this. The early days of the project the UI might be changing every few hours, you don't want to waste time rewriting the UI tests again and again.
Agreed. Even testing guru uncle bob Matin sais you should always write intergration tests, but never have them run from the ui. The ui just changes to fast, which makes the tests verry flaky and defeats the purpose of testing for stability.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.