Стратегия автоматического тестирования пользовательского интерфейса на удаленных виртуальных машинах

Я использую 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" ?