Стратегия автоматического тестирования пользовательского интерфейса на удаленных виртуальных машинах
Я использую TeamCity для своих сборщиков CI, и я бы хотел создать вторую сборку для запуска автоматических тестов пользовательского интерфейса на виртуальных машинах Windows XP и Windows 7.
Я предполагаю, что сборка работает следующим образом:
- Скомпилируйте, запустите модульные тесты и т.д.
- Подготовьте MSI с помощью WiX
- Скопировать MSI на целевые тестовые машины.
- Удаленный запуск MSI
- Скопируйте код жгута проводов на удаленный компьютер.
- Запуск тестов
- Построить завершение
Автоматизированные тесты пользовательского интерфейса записываются с использованием NUnit и должны выполняться непосредственно на тестовой виртуальной машине (они не могут запускаться удаленно). Важно, что если тесты не работают, они появляются в журнале сборки TeamCity, и сборка завершается с ошибкой. Я бы предпочел не устанавливать VS или агенты сборки TeamCity на любой из тестовых виртуальных машин.
Похоже, что большинство из них должно быть возможно с помощью psexec.exe. Есть ли альтернативные (предпочтительно с открытым исходным кодом) инструменты, на которые я должен смотреть?
Ответы
Ответ 1
делает глубокий вдох
Мы изучали что-то, что помогло нам в наших автоматизированных тестах пользовательского интерфейса. Мы используем runorex для тестирования пользовательского интерфейса и TeamCity/Msbuild для выполнения тестов.
Мы никогда не находили каких-либо инструментов, чтобы помочь нам (я постоянно слежу за ними, поэтому будет следить за этой нитью), но вот что мы сделали.
- Сервер CI копирует установочные файлы и тестирует сценарии на сервер тестирования тестирования.
- Затем сервер CI запускает настраиваемое приложение на сервере хостов тестирования, в котором указывается имя виртуальной машины.
- Затем сервер тестового хоста запускает программное обеспечение VM, используя
Virtual PC.exe -singlepc -pc vhdname.vhd -launch
, и ждет его завершения (после запуска его тестов).
- VM захватывает установочные файлы и сценарии из сетевого расположения и выполняет.
- После запуска тестов он возвращает результаты в сетевое местоположение и закрывается.
- Элемент управления возвращается в пользовательское приложение.
- Элемент управления возвращается серверу CI, который определяет результаты, если он прошел или не прошел (и обновляет пользовательский интерфейс, чтобы разработчики узнали о результате).
- Результаты представляют собой коллекцию как артефакты в TeamCity и помечены в Svn.
Я думаю, что все. Однако он запутан, но работает. Надеюсь, кто-то из вас поможет.
Ответ 2
Джефф Браун из Gallio команда говорить о инструмент под названием Archimedes, который он планирует написать для поддержки такого рода требований. Это звучит многообещающе, но я не думаю, что до сих пор был достигнут значительный прогресс.
В то же время в проекте Gallio есть что-то вроде Инструмент VM, который может делать то, что вы хотите. Он предоставляет команды для остановки, запуска и моментальных снимков виртуальных машин и, что более важно, для копирования файлов вперед и назад и выполнения команд.
Предполагаю, что вы также рассмотрели "Удаление Powershell" ?