Testing through the GUI: Goals, Tasks, Gestures
My last couple of projects have involved clients with graphical user interfaces, both rich clients implemented with Swing and AJAX web GUIs implemented with GWT. It's common to test systems like this from behind the user interface, writing tests that call the domain and workflow models directly instead of poking the UI widgets.
However, my recent projects used custom GUI components and we wanted to cover these in our tests. We therefore drive the interface directly. To do so, we developed a library for testing through the GUI as we built the system. This is now available in open source form as WindowLicker.