Как организовать выполнение каждого теста на отдельной виртуальной машине?

Хотелось бы спросить у публики, как организовать сложные интеграционные тесты, когда для запуска каждого теста нужно запускать виртуальную машину. Для начала опишу, как у нас сейчас организованы тесты и что мне в этом не нравится. Процесс организован с использованием шаблонов процессов TFS и настраиваемых действий.

  1. Первый шаг: На билд-агенте собирается проект.
  2. Из пользовательского действия (используя vmware API) запустите виртуальную машину.
  3. Скопируйте на виртуальную машину собранные dll проекта.
  4. Запускаем mstest.exe с нужными параметрами на виртуальной машине
  5. Скопируйте результаты теста в агент сборки и проанализируйте их вручную в пользовательском действии.

Итак, шаги 2-5 повторяем для каждого теста.

Недостатки этого подхода - сложность. Нам нужно вручную анализировать результаты тестов, если изменится формат этих файлов - мы получим много переписывания кода. Было бы намного лучше, если бы агентом сборки TFS была виртуальная машина, и TFS сама восстанавливала бы его перед запуском каждого теста. Как вы организуете такие тесты. Конкретно в данном случае речь идет о CodeUI, но подобные проблемы возникают часто. Возможно, мой вопрос слишком общий, но любые идеи будут очень полезны...


person Gattaka    schedule 29.11.2014    source источник


Ответы (1)


Если вы перейдете к Lab Management и Release Management, то многое из того, что вы пытаетесь сделать, уже готово для Visual Studio ALM. Вы можете динамически создавать и наращивать среды либо в Hyper-V, либо в Azure.

Я бы порекомендовал использовать Release Management и Powershell для организации этого. У команды RM есть хорошая демонстрация:

http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/11/deploying-and-testing-web-applications-using-release-management.aspx

Здесь они оба развертывают приложение, а затем запускают codedUI.

person MrHinsh - Martin Hinshelwood    schedule 30.11.2014