Кто-нибудь нашел способ параллельно запустить тесты С# Selenium RC?
Кто-нибудь нашел способ запуска тестов Selenium RC/Selenium Grid, написанных на С# параллельно?
В настоящее время у меня есть большой набор тестов, написанный с использованием драйвера Selenium RC С#. Запуск всего набора тестов занимает чуть больше часа. Обычно мне не нужно запускать весь пакет, поэтому до сих пор это не было проблемой, но это то, что я хотел бы делать чаще (например, как часть автоматической сборки)
Я уже некоторое время провожу время с проектом Selenium Grid, цель которого состоит в том, чтобы позволить этим тестам работать параллельно. К сожалению, кажется, что плагин TestDriven.net, который я использую, запускает тесты поочередно (т.е. Один за другим). Я предполагаю, что NUnit будет выполнять тесты аналогичным образом, хотя я на самом деле не проверял это.
Я заметил, что бета-версии NUnit 2.5 начинают говорить о запуске тестов параллельно с pNUnit, но я не очень хорошо ознакомился с проектом, чтобы точно знать, будет ли это работать.
Еще один вариант, который я рассматриваю, - это разделение моего тестового набора на разные библиотеки, которые позволят мне запускать тест из каждой библиотеки одновременно, но я бы хотел избежать этого, если это возможно, поскольку я не уверен, что это действительная причина для разделения тестового набора.
Ответы
Ответ 1
Я работаю над этим и обнаружил, что 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()
.
Ответ 2
Я написал PNUnit как расширение для NUnit почти три года назад, и я рад видеть, что он был наконец интегрирован в NUnit.
Мы используем его ежедневно для тестирования нашего программного обеспечения под разными дистрибутивами и комбинациями. Просто привести пример: у нас есть набор тестов тяжелых тестов (длинных) с примерно 210 тестами. Каждый из них устанавливает сервер и запускает клиента в командной строке, выполняющем несколько операций (до 210 сценариев).
Ну, мы используем один и тот же набор для запуска тестов по различным комбинациям Linux и вариантам Windows, а также комбинированные, такие как сервер Windows с клиентом linux, windows xp, vista, затем контроллер домена, вне домена и т.д. на. Мы используем одни и те же двоичные файлы, а затем просто "агенты" запускаются в нескольких ящиках.
Мы используем ту же платформу для: балансировки нагрузки нагрузки нагрузки → я имею в виду, быстрее работает в кусках. Одновременное выполнение нескольких комбинаций и то, что я считаю более интересным: определение сценариев нескольких клиентов: два клиента ждут запуска сервера, затем запускают операции, синхронизируют друг с другом и так далее. Мы также используем PNUnit для тестирования нагрузки (сотни ящиков против одного сервера).
Итак, если у вас есть какие-либо вопросы о том, как его настроить (что еще не так просто, я боюсь), не стесняйтесь спрашивать.
Также я написал статью об этом в DDJ: http://www.ddj.com/architect/193104810
Надеюсь, что это поможет
Ответ 3
Я не знаю, отвечает ли ответ как ответ, но я бы сказал, что вы все исследовали, и вы действительно придумали два возможных решения...
- Test Suite запускает тесты параллельно
- Разделите тестовый пакет вверх
Я что-то теряю.