Как использовать виртуальную машину с автоматизированными тестами? - PullRequest
12 голосов
/ 15 июня 2011

Я пытаюсь настроить автоматизированные тесты для наших приложений, используя среду виртуальной машины.

Я хотел бы иметь что-то вроде следующего сценария:

  1. Сервер сборки автоматически запущен, чтобы запустить автоматический тест для приложения
  2. Затем запускается скрипт "build", который состоит из:
    1. Копирование файлов приложения и тестового сценария в папку, доступную для виртуальной машины
    2. Запустить ВМ
      1. В виртуальной машине специальное приложение заглядывает в общую папку и запускает тестовый скрипт
      2. Скрипт тестов выполняет свою работу, результаты выводятся в общую папку
      3. Тестовый скрипт заканчивается
      4. Специальное приложение затем удаляет тестовый скрипт
      5. В специальном приложении менеджер виртуальных машин как-то закрывает виртуальную машину и возвращается к предыдущему снимку
    3. После выхода из виртуальной машины обработайте результат и отправьте его на сервер сборки.

Я использую TeamCity, если это имеет значение. Для виртуальных машин мы используем VirtualBox, но мы открыты для любых других, если это необходимо.

Существуют ли какие-либо приложения / комплекты, которые бы управляли этим сценарием?

Если их нет, я бы сам их кодировал, должно быть легко, но единственная часть, в которой я не уверен, - это обработка виртуальной машины.

Что мне нужно сделать, это закрыть виртуальную машину после теста и вернуться к предыдущему снимку, так как я хочу, чтобы он был в известном состоянии для следующего теста.

Есть указатели?

Ответы [ 3 ]

11 голосов
/ 07 февраля 2012

У меня работает аналогичная установка, и я решил использовать Vagrant как то же самое, что наши разработчики используют для нормализации среды разработки.

Начальное состояние виртуальной машины было написано с использованием puppet, но мы не запускали сценарии развертывания с нуля для каждого теста, только один раз в день.

Вы можете использовать puppet / chef для всего, но для всех других операций на виртуальной машине мы будем использовать Fabric сценарии, так как они также используются для реального развертывания и каким-то образом соответствуют тому, как мы работали лучше , В итоге сценарий будет выглядеть примерно так:

vagrant up   # fire up the vm, and run the puppet provisioning tool
fab vm run_test  # run tests on vm
fab local process_result  # process results on local shared folder
vagrant destroy  # destroy the vm

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

4 голосов
/ 15 июня 2011

VirtualBox имеет COM API .У меня нет опыта с этим, но это может быть возможно использовать.Одним из вариантов может быть запуск TeamCity сценария для этого.Я бы предложил начать с NAnt (изначально поддерживается TeamCity) и, возможно, при необходимости запустить PowerShell.

2 голосов
/ 15 июня 2011

Хотя у меня нет опыта работы с ними, я случайно слышал пару приложений в этом пространстве:

http://www.infoq.com/news/2011/05/virtual_machine_test_harness

http://www.automatedqa.com/techpapers/testcomplete/automated-testing-in-virtual-labs/

...