Важнейшая вещь: дизайн для контрольно-измерительной аппаратуры.
Это означает, что у вас есть небольшие независимые компоненты (что почти всегда хорошо, не только для проверки), но и для тестирования компонентов отдельно. Инверсия управления (с или без рамки IoC, например Spring) может помочь вам в этой области. Когда у вас есть небольшие компоненты, их легко проверить с помощью jUnit, easymock или любых других стандартных тестовых утилит.
Тестирование интерфейса, является самой утомительной и скучной задачей. Селен может помочь вам немного, но нет никаких серебряных пуль, о которых я знаю.
Возможный дубликат [Серверов для тестирования модулей] (http://stackoverflow.com/questions/53532/unit-testing-servlets) – Raedwald