Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Appium: паралельный запуск тестов на нескольких девайсах


(Елена Перфильева) #1

Кто делал как?
На сколько я поняла, нужно для каждого девайса нужен свой appium (на отдельном порту), как тестам указать для какого девайса на каком порту запускаться?
В идеале хочу запускать тесты на всех подключенных в данный момент девайсах.
Может Selenium Grid кто использовал для таких целей, поделитесь как?


(Vitalii Grygoruk) #2

Насколько мне известно, с момента написания этой статьи ребятами из Яндекса ничего не изменилось

  1. Невозможно иметь больше одной сессии на одной физической / виртуальной машине с Mac OS. Можете конечно поставить максимум 2 VM (исходя из ограничений лицензии) на физической машине и тогда уже получите 3 параллельные сессии на одной тачке.
  2. Да Appium работает с Selenium Grid, но стабильность этой работы оставляет желать лучшего…
  3. Из личного опыта - поддержка своей инфраструктуры (selenium grid hub, appium nodes on 2 physical machines + 4 VM) превратилась через какое-то время в сущий ад. Пришлось отказаться от этого решения. Очень хочется надеятся что сейчас дела обстоят лучше и баги связанные со стабильностью работы в Selenium Grid исправлены.

(Елена Перфильева) #3

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

  1. Отчёты о прохождении тестов я вижу только для последнего девайса.
  2. Порт и id девайса передаю через txt файлы (крайне не удачно решение, но другого не придумала пока).

(Vitalii Grygoruk) #4

Похоже мы говорим о разных вещах… Я так понимаю вы имеете дело с Appium + Android, а я с Appium + iOS…


(Константин) #5
  1. А вы хотите один тест запускать на нескольких девайсах или же ваш тест-сьют должен проходит на нескольких девайсах(т.е. распределенный запуск тестов) ?

  2. Можно сделать, как описано в документации Appium. Создаете файлик с настройками для Selenium Grid ну и запускаете батник с параметром(где указан путь к файлу с настройками)

Если хотите поднимать отдельный инстанс аппиума для конкретного девайса, то там же в параметрах к батнику, прописываете уникальные порты, UID девайса, порты для мобильного хрома(если необходимо)

В документации к Appium все это описано - http://appium.io/slate/en/master/?csharp#text-fields


(Елена Перфильева) #6
  1. Один тест на разных девайсах (точнее, каждый тест из тест-сьюта на каждом девайсе), т.е. не чтоб быстрее тест-сьют прогонялся, а чтоб на разных девайсах погонять.
  2. Не совсем понятно как тест-сьюту объяснить где запускаться: порт аппиума и uid девайса из этого же файла с настройками вытаскивать?

Отчёты для каждого девайса Selenium Grid отдельно формирует?


(Константин) #7

Selenium Grid ничего не формирует

  1. А как запускаете тесты? Нужно больше информации. Какой тестовый фреймворк, CI и т.п.
  2. Покажу для примера, как я это делал когда-то

Имеем конфигурационный файлик, например appiumgrid.json, для grid`а с таким содержимым

{
“capabilities”:
[
{
“browserName”: “Chrome”,
“version”:“4.4”,
“maxInstances”: 1,
“platform”:“ANDROID”
}
],
“configuration”:
{
“cleanUpCycle”:2000,
“timeout”:3000000,
“proxy”: “org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,
“maxSession”: 1,
“register”: true,
“registerCycle”: 5000,
“hubPort”: {hubPort},
“hubHost”: “{IP машины где запущен хаб}”
}
}

Ну и запускаем аппиум сервер из консоли с такими параметрами(можно сделать батник):

node . --nodeconfig {путь к файлу с настройками appiumgrid.json} -p 4492 -bp 2251 -U {UID девайса} --chromedriver-port 4497

соответственно для каждого инстанса аппиум сервера порты(-p, -bp, chromdriver-port) должны быть уникальны.