Selenium Grid Tests для распределения на нескольких узлах

Я настроил Selenium Grid 2 с одним концентратором (на высокопроизводительном сервере Dell 7910, Windows) и 8 узлами (на всех виртуальных машинах — на Windows), а моя тестовая среда — на огурце-jvm с использованием Junit. Я использую Jenkins для запуска тестов и сборки проекта с помощью maven.

Вот пример:

У меня есть 20 независимых заданий Maven Project (Maven + Project + Plugin) в Jenkins, и первые 10 заданий добавляются к многопроектному заданию A (Multijob + Plugin), а еще 10 заданий — к многопроектному заданию B.

Когда я запускаю задание A, сборка успешно компилируется, и тесты направляются в концентратор, а затем, по моим наблюдениям, я вижу, что тесты выполняются последовательно (если я прав?)

Когда я вижу консоль концентратора, концентратор определяет все 8 узлов как доступные, но создает только 2 сеанса, в которых первый тест передается на узел 1, а второй тест передается на узел 2, а остальные узлы (3-8) остаются бездействующими. пока первые два теста не будут завершены или если какой-либо тест не пройден, концентратор создает новый сеанс для третьего узла, а третий тест выполняется на узле 3 и т. д.... этот процесс продолжается до тех пор, пока он не выполнит 8-й тест на узле 8 после этого. процесс завершен, концентратор выполняет тест 9 на доступном узле, что очевидно в большинстве случаев Node1.

Согласно моему требованию, я хочу, чтобы концентратор создал 8 сеансов и передал запросы всем 8 узлам одновременно, чтобы мои первые 8 тестов выполнялись на 8 разных машинах после их завершения, а затем следующий доступный узел для выполнения 9-го теста и и так далее.... И все мои тесты зависят от браузера, они должны выполняться только в IE.

Конфигурации концентратора и узлов:

Центр:

cd c:\selenium-server java -jar selenium-server-standalone-2.45.0.jar -role hub -timeout 600 -browserTimeout 600 http://xx:xx:xx:xx/grid/register -порт 4444

Узел 1:

cd c:\selenium-сервер

java -jar selenium-server-standalone-2.45.0.jar -trustAllSSLCertificates -browser browserName="Internet Explorer",версия=11,платформа=WINDOWS,maxInstances=1 -Dwebdriver.ie.driver=c:\IEDriver\InternetExplorerDriver. exe -role node -hub http://pc-582v762:4444/grid/register -port 5555-maxSession 1

Node 2, Node 3, Node 4 ............... Node 8 и те же команды Node для остальных узлов

Примечание. Я заменил - роль на «webDriver», но результат тот же, и все виртуальные среды представляют собой комбинации Win7 и Win8.

Надеюсь, я очень ясно выразил свой вопрос. Извините за массовую информацию, я просто хочу быть подробной.


person Vamshi    schedule 20.07.2015    source источник
comment
Предполагая, что инфраструктура концентратора и узла настроена правильно, вы, вероятно, столкнулись с ограничениями самого средства запуска тестов. Что вы используете для запуска тестов? Это Юнит? ТестНГ? Это вообще Java? Даже если вы правильно настроите сетку, вы должны настроить средство запуска тестов для параллельного запуска тестов.   -  person automatictester    schedule 22.07.2015
comment
@automatictester Да, как упоминалось в моем вопросе выше, я использую junit, а фреймворк написан на java. Вот код TestRunner.java `import огурец.api.CucumberOptions; импорт огурца.api.junit.Cucumber; импортировать org.junit.runner.RunWith; @RunWith(Cucumber.class) @CucumberOptions открытый класс TestRunner { } `   -  person Vamshi    schedule 23.07.2015
comment
@automatictester Спасибо за ответ. На самом деле я обнаружил, что проблема заключается в исполнителе сборки Jenkins. В настоящее время исполнителем по умолчанию является 2, поэтому мне нужно увеличить количество исполнителей до числа узлов, доступных в настройке Grid, в этом случае он работал при создании экземпляров браузера на эти узлы, но они не исправлены полностью.. :-( Первый выполняется наполовину, а затем задание завершается сбоем, и другие задания также завершаются сбоем, когда я вижу ошибки, связанные с удалением suirefirebooter   -  person Vamshi    schedule 29.07.2015
comment
Продолжить... @automatictester Ошибка ниже: [ПРЕДУПРЕЖДЕНИЕ] Не удалось удалить временный каталог C:\maven\XXX\target\surefire, поскольку файл C:\maven\XXX\target\surefire\surefirebooter7887865930643403890.jar невозможно удалить. [ОШИБКА] Был тайм-аут или другая ошибка в ответвлении, которое я пробовал с различными целями сборки на jenkins, как показано ниже: пытался заменить на (чистый тест компиляции), (установить) и (тестировать) команды < b>test -Dcucumber.options=src/test/resources --tags @Smoke_AITS_RDR integration-test -Dcucumber-tags=@Smoke_VCT_COM test -Dcucumber.options=-- теги @Smoke_VCT_COM   -  person Vamshi    schedule 29.07.2015
comment
Продолжить.... Я просмотрел форум opencredo.com... решение состоит в том, чтобы запустить все тесты по заявленным тегам, что не работает для меня... В моем проекте есть две проблемы... 1. Как установить класс Runner без объявления тегов в этом классе и объявления в pom.xml (я имею в виду, что мне нужно объявить что-то вроде для запуска всех функций, как в surefire-plugin, аналогично примеру opencredo.com) 2. Как создать задание для каждой функции на jenkins, и если я хочу запустить несколько заданий одновременно, как объединить эти несколько заданий в одно многозадачное?   -  person Vamshi    schedule 29.07.2015
comment
Продолжить... @Automatictester Если у меня есть независимые задания для каждого файла функций 1. Iphone 3G 2. Iphone 4 3. Iphone 5 4. Iphone 5c 5. Iphone 6 6 Iphone 6plus, я должен иметь возможность запускать задания независимо для каждой функции из jenkins, и когда я хочу запустить полные 6 функций, я должен иметь возможность выполнять несколько заданий на jenkins, и когда я запускаю это задание, все 6 заданий должны быть запущены, и все 6 тестов должны выполняться на 6 доступных узлах... я не могу исправить это, и это усложняет работу. Пожалуйста, помогите !!   -  person Vamshi    schedule 29.07.2015


Ответы (1)


По умолчанию CucumberJVM поставляется с JUnit и запускает тесты в одном потоке. Если вы хотите запустить его параллельно, вот пример решения для JUnit:

https://www.opencredo.com/2013/07/02/running-cucumber-jvm-tests-in-parallel

Вот решение для TestNG:

http://automatictester.co.uk/2015/06/11/basic-cucumberjvm-selenium-webdriver-test-automation-framework/

Я стараюсь заменить JUnit на TestNG всякий раз, когда могу.

person automatictester    schedule 23.07.2015
comment
Спасибо за ответ, - person Vamshi; 29.07.2015