2015-05-26 4 views
2

В настоящее время мы используем Behat 3 для автоматизации тестов BDD для нашего сайта.Behat in Multiple Browsers in Parallel

Текущая установка использует Jenkins для запуска Selenium, который придает Firefox и использует XVFB для визуализации (это позволяет нам сохранять скриншоты, когда что-то пойдет не так).

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

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

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

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

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

TL; DR: Есть ли способ для запуска тестов BDD (желательно Behat) в нескольких браузерах параллельно и сбора информации из любого браузера, который не работает?

ответ

2

Это то, что multi-configuration jobs (или работы матриц) предназначены для Дженкинса.

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

Matrix definition

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

Matrix configurations and results

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

У этой книги есть минимальная документация по этой функции, но есть несколько хороших blog posts (и вопросов о переполнении стека) там, где ее настроить.

Матричное задание будет использовать все доступные «исполнители» в Jenkins, чтобы как можно больше запускать сборки параллельно.
В стандартной установке Jenkins есть два исполнителя, но вы можете изменить это или расширить Jenkins, добавив further build machines.

+0

Мне нравится этот ответ, и я знал об этой функции, однако я избегал этого из-за изменений базы данных, которые происходят во время тестов E2E.Поскольку это веб-сайт, который я тестирую, сложно (хотя и не невозможно) произвольно создавать и уничтожать виртуальные хосты и схемы баз данных. Кроме того, я все равно не смогу тестировать мобильные устройства и т. Д. Если не появятся другие ответы, которые разрешат эти проблемы, я буду отмечать это как правильно, но я надеялся, что это будет проще. Хм ... Интересно, могу ли я это сделать, используя задания с несколькими конфигурациями и с виртуальными машинами. – DanielM

+0

Я собираюсь сказать, что это правильный ответ, и сборка должна быть запущена в контейнере или vm. – DanielM