UI Testing Framework + Непрерывная интеграция?
Итак, у меня есть приложение, которое я унаследовал, и я хочу создать вокруг него автоматизированный набор тестов. Приложение не было разработано с возможностью проверки, а код - "большой шар грязи". Мой план состоял в том, чтобы использовать платформу тестирования автоматизации пользовательского интерфейса и создать набор тестов на уровне пользовательского интерфейса, пока у меня не будет достаточного охвата, чтобы позволить мне начать рефакторинг с уверенностью и ввести некоторые швы в код, чтобы улучшить тестируемость и дизайн.
Это приложение .Net WinForms, и две структуры, о которых я знаю, следующие:
NUnitForms
и
Проект белый
Из того, что я прочитал, оба фреймворка создают проблемы при попытке выполнить как часть автоматической сборки (Continuous Integration) из-за того, что большинство продуктов CI работают как служба Windows, и если пользовательский интерфейс использует модальные диалоги, приложение будет смерть ужасная. Я использую CruiseControl.Net в качестве инструмента CI.
Есть ли у кого-нибудь предложения по решению этой проблемы? Альтернативная схема использования может улучшить ситуацию?
Спасибо,
Дилан
Ответы
Ответ 1
NUnitForms имеет функцию "скрытого рабочего стола", которая позволяет запускать модульные тесты из cc.net.
http://automaticchainsaw.blogspot.com/2007/09/winforms-testing-using-nunitforms.html
http://automaticchainsaw.blogspot.com/2007/09/hidden-desktops-and-nunitforms.html
Ответ 2
Вы можете запустить круиз-контроль через консольное приложение, чтобы он мог иметь доступ к интерактивному рабочему столу. Он не восстанавливается автоматически, если сервер перезагружен или он сбой, но по крайней мере вы можете это сделать.
Тем не менее, подход, который большинство людей использует с автоматическим тестированием пользовательского интерфейса (winforms, wpf или web), заключается в том, чтобы запускать все неинтерактивные тесты через сервер сборки. Как только эти тесты пройдут, они разворачивают приложение в тестовую среду и вручную запускают тестовый прогон с недавно созданной версией кода.
Это дает людям возможность reset тестовой среды (важно для тестирования пользовательского интерфейса), а также проверить, что новая версия приложения была построена правильно и прошли все модульные тесты. В конце концов, нет смысла запускать тесты UI, если вы знаете, что тесты модулей упали.: -)
Ответ 3
Я еще не пробовал, но есть UI Automation Framework от Microsoft:
Ответ 4
Мы проводили тесты приемки непрерывного интегрирования в консольном режиме вместо службы Windows на зарегистрированном виртуальном ПК. Это сработало для нас.
Ответ 5
Взгляните на этот подход. Подробная информация содержится в вики проекта.