Распараллеливание теста BDD на Cucumber на нескольких машинах с использованием Gems или Jenkins (или обоих)

Я управляю проектом с использованием BDD с Cucumber (с гемом page_object), Watir и Jenkins. Сейчас мы ищем лучший способ распараллелить тестирование, чтобы сократить время тестирования на нескольких виртуальных машинах, с разными навигаторами и так далее.

Я думаю, что есть два подхода:

  • использовать инструмент Ruby, такой как parallel_test, Hydra, TestJour, TestBot...
  • или организовать все через Jenkins, используя пути, теги и т. д.
  • использовать оба в некотором роде

Чтобы правильно приложить усилия... Считаете ли вы, что Jenkins - это хороший вариант для параллельного тестирования на нескольких машинах, или я должен дать шанс другому инструменту? Предложения приветствуются:)

3 ответа

Решение

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

Вам нужно будет настроить сетку серверов для обработки тестов Watir. Я настоятельно рекомендую вам взглянуть на Selenium Grid 2 (http://code.google.com/p/selenium/wiki/Grid2). Настройте узлы на ваших удаленных виртуальных машинах и запустите концентратор на вашем сервере Jenkins. Затем parallel_tests может запустить тесты параллельно, подключив их к локальному концентратору, который, в свою очередь, отправит их на удаленные серверы для выполнения.

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

Я использую Дженкинс для разделения рабочих мест на различные подчиненные машины. Когда параллельные тесты не требуются, это также позволяет тестировать разные среды разными пользователями (тестирование тестеров, устранение неполадок разработчиков и т. Д.). Очень легко настроить!

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

require 'rubygems'
  require 'cucumber'

  require 'cucumber/rake/task'

  Cucumber::Rake::Task.new( :features) do |t|
    t.cucumber_opts = "features --tags @testset_1 "
end
Другие вопросы по тегам