Самое главное: дизайн для проверки .
Это означает попытку иметь небольшие независимые компоненты (что почти всегда хорошо, не только для тестируемости), а также тестировать компоненты отдельно Инверсия управления (с или без IoC-фреймворка, такого как Spring) может помочь вам в этой области. Если у вас есть небольшие компоненты, их довольно просто протестировать с помощью jUnit, easymock или любых других стандартных утилит для тестирования.
Тестирование внешнего интерфейса - самая утомительная и скучная задача. Селен может вам немного помочь, но я не знаю серебряных пуль.