Как эффективно запустить автоматизацию тестирования на нескольких серверах для проверки? - PullRequest
2 голосов
/ 12 мая 2011

Сценарий: 25 веб-серверов с одним и тем же веб-приложением.

Мы используем Visual Studio и WatiN для нашей автоматизации, и сейчас у нас есть три основных теста.В тестах во время его выполнения он проходит по каждому серверу.

Test: SignIn ForEach Server Получить сервер x Run Test

В этом случае этот тест будет запускать 25 временных циклов, и если каждый тест займет 2минут для запуска, это почти час для проверки.ПУТЬ СЛИШКОМ ДОЛГО !!!: (

Я хотел бы иметь возможность распределить эту работу по нескольким агентам тестирования.

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

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

Test: Сервер входа в систему 1 Выполните тест на сервере 1

Тест: Сервер входа в систему 2 Запустите тестирование на сервере 2

и т. Д., 25 раз

Я надеюсь, что кто-то сможет поделиться тем, что они реализовали, в этом типе настройки.

Ответы [ 5 ]

1 голос
/ 02 апреля 2012

Я работаю над проектом чуть более года, который делает именно это!

У нас есть около 400 тестов, которые используют watin для тестирования веб-сайта нашей компании.Первая версия проекта использовала 10 виртуальных машин для запуска тестов (поэтому можно запускать 10 одновременных тестов).

В новой версии будет использоваться приложение, которое я нашел под названием Sandboxie - http://www.sandboxie.com. Это приложениепозволяет запускать приложение в «песочнице» (это означает, что файлы cookie одного теста не могут мешать другим).Для этого есть оболочка .net, (я добавил динамически связанную версию внизу) - http://www.sandboxie.com/phpbb/viewtopic.php?t=9041

После некоторой возни я понял, что песочница не очень хорошо работает на виртуальной машине (работает виртуальнаяпространство приложения на виртуальной машине?!? сумасшедший).Итак, теперь у нас есть 4 физических машины с (в настоящее время) 10 песочницами (теперь мы можем запустить 40 одновременных тестов).Вот краткий обзор проекта: -

Web UI.  Requests test to be run by...
-> Test Server (windows service on server).  Adds requests to database and passes on to...
   -> Test controller 1 (windows service on client 1)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 2 (windows service on client 2)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 3 (windows service on client 3)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10
   -> Test controller 3 (windows service on client 4)
      -> Test runner (console app on client 1) in Sandbox 01
      -> ...
      -> Test runner (console app on client 1) in Sandbox 10

Если у вас есть какие-либо вопросы, я буду рад помочь!

Фил

0 голосов
/ 30 марта 2012

У меня есть такая установка, но я использую NUnit.Моя тестовая инфраструктура состоит из тестового контроллера, который создает тестовые сборки (.dll) и копирует их на веб-серверы.Затем, используя PSEXEC, тесты запускаются удаленно на всех веб-серверах.NUnit установлен на веб-серверах, однако я не думаю, что это требование, и вы можете использовать NUnit Test Runner из xcopied версии, не устанавливая его.

Наряду с тестовыми сборками существует еще один исполняемый файл, который копируется на веб-сервер с контроллера тестирования, который публикует результаты в HP Quality Center, а также отправляет уведомление по электронной почте, содержащее результаты теста.

Поскольку вы используете MSTest (я думаю, вы упомянули Visual Studio для запуска тестов), вы можете пройти через это Разработка и запуск модульных тестов MSTest в Visual Studio 2010 без включения .vsmdi и.testsettings

0 голосов
/ 13 мая 2011

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

Я бы посоветовал попробовать запустить два ваших теста Watin одновременно и посмотреть,браузеры запутались.(То есть, если второй браузер использует те же файлы cookie / состояние / etc, что и первый, и не проходит тест.)

Если у них нет проблем, вы можете попробовать увеличить до 5, 10,или сколько бы одновременных запусков машина не стояла и, возможно, находилась на вашем пути.:)

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

Совершенно другой вариант:

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

http://jenkins -ci.org /

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

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

Возможно, есть способы передачи параметров в задание Jenkins (например, на сервер).адрес и логин в вашем случае), так что вы, вероятно, сможете воспользоваться этим, чтобы избежать дублирования.И если это не удастся, вы можете попытаться создать задание Jenkins для каждого сервера, с которым хотите выполнить тест.

0 голосов
/ 29 марта 2012

Посмотрели ли вы Microsoft Test Controller & Agents? Если вы запускаете тесты "WatiN" с использованием MSTest, это похоже на выполнение модульного теста.

http://msdn.microsoft.com/en-us/library/ms243155.aspx

Использование тестового контроллера и тестового агента с юнит-тестами

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

Примечание: вы можете использовать селекторы jquery в последней версии WatiN.

0 голосов
/ 12 мая 2011

Если вы запустите эти тесты параллельно, вы сможете запустить их все одновременно и завершить все тесты через 2 минуты.

Что мы делаем, так это используем mbUnit с тестами селена (для их параллельного запуска) с сеткой селена (которая фактически может выполнять их параллельно).

...