Кто-нибудь нашел способ параллельного запуска тестов C # Selenium RC? - PullRequest
14 голосов
/ 18 сентября 2008

Кто-нибудь нашел способ запустить тесты Selenium RC / Selenium Grid, написанные на C # параллельно?

В настоящее время у меня есть значительный набор тестов, написанный с использованием драйвера C # Selenium RC. Выполнение всего набора тестов занимает чуть более часа. Обычно мне не нужно запускать весь пакет, так что до сих пор это не было проблемой, но я бы хотел, чтобы это можно было выполнять более регулярно (т. Е. Как часть автоматической сборки)

Недавно я потратил некоторое время на изучение проекта Selenium Grid, цель которого, по сути, состоит в том, чтобы эти тесты работали параллельно. К сожалению, похоже, что плагин TestDriven.net, который я использую, запускает тесты поочередно (т.е. один за другим). Я предполагаю, что NUnit выполнит тесты подобным образом, хотя я на самом деле не проверял это.

Я заметил, что бета-версии NUnit 2.5 начинают рассказывать о выполнении тестов параллельно с pNUnit, но я не совсем ознакомился с проектом, чтобы точно знать, сработает ли это.

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

Ответы [ 3 ]

5 голосов
/ 04 марта 2009

Я работаю над этой самой вещью и обнаружил, что Gallio последние могут параллельно выполнять тесты mbUnit. Вы можете управлять ими с помощью одного Selenium Grid концентратора, который может прослушивать несколько серверов удаленного управления.

Я использую последнюю версию от Gallio для получения ParallelizableAttribute и DegreeOfParallelismAttribute .

Что-то, что я заметил, я не могу полагаться на TestSet и TestTeardown, чтобы изолировать параллельные тесты. Вам понадобится тест, чтобы выглядеть примерно так:

[Test] public void Foo(){
  var s = new DefaultSelenium("http://grid", 4444, "*firefox",
                              "http://server-under-test");
  s.Start();
  s.Open("mypage.aspx");
  // Continue
  s.Stop();

}

Использование атрибута [SetUp] для запуска сеанса Selenium приводило к тому, что тесты не получали удаленный сеанс из s.Start().

1 голос
/ 28 ноября 2008

Я написал PNUnit как расширение для NUnit почти три года назад, и я рад, что он наконец-то был интегрирован в NUnit.

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

Что ж, мы используем один и тот же набор для запуска тестов на различных комбинациях Linux и версиях Windows, а также комбинированных тестах, таких как сервер Windows с клиентом Linux, Windows XP, Vista, затем контроллер домена, вне домена и т. Д. на. Мы используем одни и те же двоичные файлы, а затем просто запускаем «агенты» в нескольких окнах.

Мы используем одну и ту же платформу для: балансировки нагрузки тестовой нагрузки -> я имею в виду, быстрее работающий на куски Запуск нескольких комбинаций одновременно, и, что я считаю, более интересным: определение сценариев с несколькими клиентами: два клиента ждут запуска сервера, затем запускают операции, синхронизируются друг с другом и так далее. Мы также используем PNUnit для нагрузочного тестирования (сотни ящиков на одном сервере).

Так что, если у вас есть какие-либо вопросы о том, как его настроить (что, боюсь, пока не так просто), не стесняйтесь спрашивать.

Также я давно написал об этом статью в DDJ: http://www.ddj.com/architect/193104810

Надеюсь, это поможет

0 голосов
/ 19 сентября 2008

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

  • Test Suite запускает тесты параллельно
  • Разделите набор тестов

Я в растерянности из-за чего-то еще.

...