CLOUSD
Создать аккаунт
Тестирование

Ферма Android-устройств: собрать свою или взять облако

Фермы устройств глазами QA: для чего они нужны, из чего состоит своя стойка и какие у неё скрытые расходы, расчёт для облачных телефонов и гибрид, к которому приходит большинство команд.

Ферма Android-устройств — это набор тестовых телефонов, подключённых к хост-машинам, чтобы автотесты и люди могли пользоваться ими, не беря в руки. Термин пришёл из QA, и в этой статье он используется именно так: общий пул устройств для запуска и воспроизведения тестов. Стойки телефонов, на которых массово ведут аккаунты в соцсетях, — совсем другое явление, они нарушают правила всех крупных платформ, и здесь о них речи не идёт.

Каждая мобильная команда доходит до момента, когда ящик с телефонами перестаёт работать. Кто-то унёс Pixel домой, никто не знает, на каком телефоне какая сборка, а CI гоняется на одном эмуляторе. В этом гайде разберём, для чего нужна ферма, что входит в свою стойку и сколько она стоит, и когда ту же работу делают облачные телефоны.

Для чего нужна ферма устройств

  • Автоматические UI-тесты на матрице. Наборы Espresso, UI Automator или Appium сразу на нескольких версиях Android и размерах экрана, чтобы релиз-кандидат получил один понятный ответ.
  • Воспроизведение бага пользователя. В репорте названы модель и версия Android, и на ферме есть этот телефон или что-то близкое.
  • Ручные и исследовательские сессии. Тестировщик удалённо открывает нужную модель, а не одалживает её у коллеги.
  • Долгие прогоны. Фоновая синхронизация, доставка уведомлений и память на протяжении часов — то, что не покажет эмулятор, который выбрасывается после каждой задачи CI.
  • Smoke перед релизом. Один и тот же быстрый проход на десяти телефонах параллельно перед раскаткой.

Из чего состоит своя стойка

Собрать стойку несложно. Настоящая работа — держать её в рабочем состоянии. В типичной стойке пять частей.

Телефоны. Выбирайте их по аналитике, а не по тому, что продаётся со скидкой: топ моделей по доле сессий, самая старая поддерживаемая версия Android и самая новая. Самую популярную модель берите в двух экземплярах, чтобы один был занят ручной работой, а второй гонял CI.

Питание и USB. Хабы с отдельным питанием и достаточным током на порт, короткие кабели приличного качества и запас на USB-контроллеры. По опыту, adb становится ненадёжным где-то после десяти-пятнадцати телефонов на одном хосте, в зависимости от контроллера и хабов.

Хосты. Небольшие Linux-машины или Mac, на каждой свой adb-сервер для своей полки. Учитывайте устройства по серийным номерам и держите карту, какой телефон в каком порту, потому что она понадобится в самый неудачный момент.

Софт. adb, менеджер устройств вроде DeviceFarmer (преемник OpenSTF от сообщества) для удалённых экранов и бронирования, Appium с грид-сервером, если вы тестируете через WebDriver, и ваш CI для расписания прогонов.

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

Сколько на самом деле стоит стойка

Для стойки из 20 телефонов грубая оценка на 2026 год выглядит так. Телефоны стоят от $3,000 до $12,000 в зависимости от того, сколько нужно флагманов. Хабы, кабели, стеллажи и два хоста добавляют от $1,500 до $4,000. Плюс каждый год закладывайте 20–30 % от стоимости телефонов на вздувшиеся батареи, сломанные порты и новые модели, которые покупают ваши пользователи.

Строка, которая удивляет команды, — это время: от трёх до восьми часов в неделю, пока кто-то оживляет зависшие телефоны, ставит обновления и перезагружает хосты. Ваши цифры будут другими, но картина та же. Железо — меньшая часть счёта.

Облачные телефоны превращают это в текущие расходы без обслуживания. В Clousd поминутная оплата — $0.004 в минуту, пока телефон работает, и не больше $0.80 за телефон в день, а тарифы начинаются от $20 в месяц; подробности на странице цен. Два расчёта для тех же 20 телефонов:

  • По два часа каждый рабочий день: 20 телефонов × 120 минут × $0.004 = $9.60 в день, около $211 за 22 рабочих дня.
  • Круглосуточно: действует дневной потолок, так что 20 × $0.80 × 30 дней = не больше $480 в месяц.

Поминутная оплата останавливается вместе с телефоном. Модель, которая нужна для одного баг-репорта, — это телефон, который вы создаёте, используете и удаляете.

Своя стойка, облако устройств или облачные телефоны

Своя стойкаПубличное облако настоящих устройствОблачные телефоны
Стартовые вложениятелефоны, хабы, хостынетнет
Текущие расходызамена устройств и время сотрудниковза сессию или в месяцпоминутно, пока работает, или тариф
Камера, GPU, батареянастоящиенастоящиене показательны
Прошивка и оболочка производителядадазависит от провайдера
Телефон доступен, когда нуженесли его никто не занялобщий, может быть занятсоздаётся по запросу
Состояние между сессиямихранитсяобычно стираетсяхранится, пока вы не сбросите
Масштабирование на неделю релизакупить ещё телефоновкупить ещё временисоздать ещё телефонов
Обслуживаниевашенетнет

Что меняет облако

  • Чистый старт. Телефон создаётся примерно за минуту и сбрасывается в чистое состояние перед каждым набором тестов, так что каждый прогон начинается из одной точки.
  • Модель как параметр. Android с 12 по 17 на 150+ моделях настоящих аппаратов, которые выбираются для каждого прогона в списке моделей, а не из того, что стоит на полке.
  • Удалённость по умолчанию. Живой экран в браузере для ручных сессий, REST API и ADB для CI и MCP-сервер, когда проверку выполняет ИИ-агент.
  • Никакой возни с железом. Ничего не вздувается, не требует кабеля и не просит перезагрузки в 2 часа ночи.

Чего облако не меняет

Облачные телефоны — не физические телефоны. Работа камеры, точность датчиков, производительность GPU, расход батареи, троттлинг от нагрева, NFC, Bluetooth и фоновые убийцы процессов от конкретных производителей по-прежнему требуют настоящего железа. Большинство команд приходят к гибриду: три-пять физических телефонов на столе для этих проверок и широкая матрица моделей и версий в облаке. Что должна покрывать такая матрица, перечислено в гайде о тестировании приложения на разных версиях Android.

Запуск тестов на ферме, где бы она ни была

Тест-раннеры обращаются к телефонам по серийному номеру adb, поэтому один и тот же набор работает и на USB-стойке, и на удалённых телефонах. AndroidJUnitRunner умеет делить набор между устройствами по шардам:

R=com.example.app.test/androidx.test.runner.AndroidJUnitRunner
adb -s "$P12" shell am instrument -w -e numShards 3 -e shardIndex 0 $R
adb -s "$P14" shell am instrument -w -e numShards 3 -e shardIndex 1 $R
adb -s "$P16" shell am instrument -w -e numShards 3 -e shardIndex 2 $R

Запустите три строки параллельно, и каждый телефон возьмёт треть тестов. Appium выбирает устройство через capability appium:udid, которая принимает тот же серийный номер. Удалённые телефоны попадают в пул через adb connect; как это работает через реле, показано в документации по ADB, а путь через API для CI — на странице о тестировании приложений.

Учитывайте, что каждое удалённое действие занимает чуть больше времени, чем по USB, и выставляйте таймауты UI-тестов с этим запасом. Тесты, которые проходят на локальном эмуляторе и падают по таймауту удалённо, обычно содержат жёстко прописанный sleep или слишком тесное ожидание.

Ферма мобильных устройств и облачная ферма телефонов

Ферма мобильных устройств — та же идея, только на полке рядом с Android-телефонами стоят iPhone и iPad. В QA облачная ферма телефонов — это просто пул облачных телефонов, на котором работает ваш набор тестов. У слова «ферма» за пределами тестирования есть и другие значения; о них рассказывает статья о фермах телефонов.

Читайте также

Все гайды

Готовы запустить
свой первый облачный телефон?

Попробовать 30 минут бесплатно

Карта не нужна