UI Testing Framework + Непрерывная интеграция?

Итак, у меня есть приложение, которое я унаследовал, и я хочу создать вокруг него автоматизированный набор тестов. Приложение не было разработано с возможностью проверки, а код - "большой шар грязи". Мой план состоял в том, чтобы использовать платформу тестирования автоматизации пользовательского интерфейса и создать набор тестов на уровне пользовательского интерфейса, пока у меня не будет достаточного охвата, чтобы позволить мне начать рефакторинг с уверенностью и ввести некоторые швы в код, чтобы улучшить тестируемость и дизайн.

Это приложение .Net WinForms, и две структуры, о которых я знаю, следующие:

NUnitForms

и

Проект белый

Из того, что я прочитал, оба фреймворка создают проблемы при попытке выполнить как часть автоматической сборки (Continuous Integration) из-за того, что большинство продуктов CI работают как служба Windows, и если пользовательский интерфейс использует модальные диалоги, приложение будет смерть ужасная. Я использую CruiseControl.Net в качестве инструмента CI.

Есть ли у кого-нибудь предложения по решению этой проблемы? Альтернативная схема использования может улучшить ситуацию?

Спасибо,

Дилан

Ответ 2

Вы можете запустить круиз-контроль через консольное приложение, чтобы он мог иметь доступ к интерактивному рабочему столу. Он не восстанавливается автоматически, если сервер перезагружен или он сбой, но по крайней мере вы можете это сделать.

Тем не менее, подход, который большинство людей использует с автоматическим тестированием пользовательского интерфейса (winforms, wpf или web), заключается в том, чтобы запускать все неинтерактивные тесты через сервер сборки. Как только эти тесты пройдут, они разворачивают приложение в тестовую среду и вручную запускают тестовый прогон с недавно созданной версией кода.

Это дает людям возможность reset тестовой среды (важно для тестирования пользовательского интерфейса), а также проверить, что новая версия приложения была построена правильно и прошли все модульные тесты. В конце концов, нет смысла запускать тесты UI, если вы знаете, что тесты модулей упали.: -)

Ответ 4

Мы проводили тесты приемки непрерывного интегрирования в консольном режиме вместо службы Windows на зарегистрированном виртуальном ПК. Это сработало для нас.