Есть желание распарралелить тесты на реальных андроид девайсах, но не могу выбрать инструмент. Поизучал тему, выяснилось, что это можно сделать с помощью поднятия необходимого количества экземпляров аппиума в докер контейнерах, чтобы под каждый девайс был свой экземпляр. Можете подсказать советом или ресурс где можно посмотреть пример ?
Можно использовать Selenoid для этого.
В связке с GGR (балансировщик для Selenoid).
На гитхабе есть примеры вроде, как собирать свои образы андройда.
Но учтите, что если машина не очень шустрая. то подъем контейнера с андройдом под каждый отдельный тест будет занимать порядка минуты. Что не очень.
Я так полагаю вы привели пример с эмуляторами, это не совсем то. Мне необходимо это дело развернуть для реальных девайсов
Можно и без докера.
- Поднять для каждого девайса отдельный Аппиум сервер
- Поднять для каждого девайса отдельный Драйвер
- Запускать тесты в паралельных потоках ( TestNG например умеет это делать)
Главное чтобы порты не запутались ну и делать driver TreadLocal
Вот даже небольшой пример есть
Это достижимо, хотя не совсем тривиально и легко в поддержке. Как вам выше уже написали, TestNG - пока что самое оптимальное решение для данных задач. Однако, придется решать несколько инженерных задач, таких как:
- как запускать инстансы Appium драйвера для каждого девайса. С Андроидом проще, а вот для iOS придется манипулировать портами для webdriver-а;
- как вообще параметризировать и параллелизировать тесты. Надо будет выбрать стратегию (все тесты на всех девайсах в параллель, раскидать один тестовый сценарий по всем девайсам либо же как-то еще);
- бороться как-то с нестабильностью Webdriver agent.
Я пробовал одновременно 2 Андроид девайса и 2 iOS. C Андроид никогда не было проблем, а вот с iOS периодически возникали, при чем самая распространенная была в том, что WebDriver Agent не стартовал на девайсе и надо было удалить его и перегрузить девайс, что в автотестах - адская боль. В любом случае, нужно взвешивать “за” и “против” такого подхода на реальных девайсах. С симуляторами - проще