Мобильное тестирование: разбираемся с эмуляторами и тестовыми фермами

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

Самое простое решение — эмулятор

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

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

Человек? Да, незаменим, но он устает

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

В целом, только человек способен объективно оценить удобство интерфейса, логику навигации и визуальное оформление.

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

В связи с этим также важен вопрос количества тестовых устройств. 

А сколько устройств достаточно?

Учитывая разнообразие моделей, для полноценного тестирования с охватом порядка 95% пользовательской базы потребуется иметь в тестовой ферме не менее 25-30 устройств. В такой набор войдут устройства с разными диагоналями экранов, разрешениями, версиями Android (включая кастомные оболочки), а также несколько моделей iPhone разных поколений. 

Создание и поддержка собственной мобильной тестовой фермы — это серьёзные вложения, оправданные при большом объёме тестирования и необходимости полного контроля над инфраструктурой. Для небольших и средних проектов выгоднее рассматривать аренду облачных ферм или гибридные модели. Стоимость одного современного смартфона среднего и выше среднего класса составляет порядка 70–90 тысяч рублей. Таким образом, только на покупку устройств потребуется около 2–2,5 миллионов рублей. К этому добавляются затраты на серверное оборудование и инфраструктуру для управления устройствами, включая USB-хабы, серверы для запуска автоматизированных тестов и мастер-ноды. 

Цена вопроса

Таким образом, минимальная конфигурация собственной тестовой фермы с 12 устройствами и 3 серверами обходится примерно в 300 тысяч рублей, а для 25–30 устройств потребуется пропорционально больше серверов и оборудования. В то же время, на рынке есть гибкие варианты, в первую очередь это арендные решения, по модели pay-as-you-go (1 рубль за минуту, 30 рублей за час и так далее).

Типичная мобильная ферма

С технической точки зрения, типичная тестовая ферма состоит из нескольких компонентов: мастер-ноды, воркеров, USB-хабов и управляющего ПО. Мастер-нода отвечает за координацию работы фермы, распределение тестовых заданий и управление воркерами. Воркеры — это серверы или виртуальные машины, к которым через USB-хабы подключены реальные устройства. Оптимальное количество устройств на одном USB-хабе — около 10 (если больше — проблемы с перегревом и питанием). При увеличении парка устройств свыше 50–100, архитектура фермы становится распределенной: добавляются новые воркеры и мастера, которые формируют кластер с кворумом.

Для управления тестовыми устройствами обычно используется ADB — низкоуровневый интерфейс, позволяющий загружать тестовые скрипты, запускать приложения, собирать логи и мониторить статусы. Скрипты пишутся на языках с поддержкой параллелизма и hot reload, что позволяет быстро менять логику тестов без пересборки приложения. Например, в одной из реализаций фермы используется собственный язык BHL, который компилируется в бинарный код и исполняется на устройствах.

Автоматизация тестирования реализуется через API фермы, которая связывается с устройствами через ADB, синхронизируя запуск тестов и сбор данных. В процессе тестирования устройства отправляют статусы и логи в центральные системы аналитики, обычно это ClickHouse, что позволяет строить отчеты и графики по результатам.

Какие задачи удобнее на ферме

Во первых, регрессные и UI-тесты. Быстро и более-менее надежно проверить отображение интерфейса на 10 самых распространенных моделях, или экспресс-проверка главных фич после регресса. Во вторых, нагрузочное тестирование, часто выполняемое в компаниях собственными силами (что не всегда приводит к надежным результатам, разумеется). 

Также часто возникает необходимость создавать критически важный по производительности код на C/C++ или другом компилируемом языке и интегрировать его в JVM-базированное приложение в виде нативной библиотеки. А иногда пересобирать существующий код под конкретную аппаратную платформу смартфона. Без нативного кода в таких случаях не обойтись, особенно в мобильных играх, где он необходим для подключения библиотек на C/C++, обеспечивающих высокопроизводительную обработку 3D-графики и других ресурсоемких задач.

Также для поиска и воспроизведения сложных багов, то есть для исследовательского тестирования. Поскольку такие ошибки зависят от конкретных моделей, важно тестировать именно на тех девайсах, где проблема была замечена. Если у тестировщика нет доступа к нужному устройству, тестовые фермы фактически незаменимы.

Что такое STF

Проект GitHub с открытым кодом – Smartphone Test Farm. Функции включают удалённый доступ к реальным смартфонам и эмуляторам, что позволяет запускать UI-тесты непосредственно на физических девайсах. Для написания и запуска автотестов используют Espresso, Appium или UIAutomator, которые интегрируются с STF через API или командную строку. STF обеспечивает управление устройствами, их резервирование и параллельный запуск тестов. Также поддерживается интеграция с CI/CD, позволяя автоматически запускать тесты при сборке приложения.

Однако, нюанс: в STF нет нормальной поддержки iOS – только Android, что усложняет задачи в премиум-сегменте.

Гитхаб

DeviceHub

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

Гитхаб

Яндекс.Колхоз 

Высокотехнологичная внутренняя облачная ферма из 800 мобильных и смарт-устройств, разработанная Яндексом для тестирования своих многочисленных сервисов, приложений и их обновлений. Изначально созданный для решения проблем с доступом к дефицитным iOS-устройствам для удаленных тестировщиков, Колхоз вырос в мультиплатформенное решение, критически важное для департаментов разработки и тестирования.

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

Колхоз интересен как явление, однако он является внутренним продуктом, не предоставляющим устройства для тестирования сторонним компаниям. 

Ферма Selectel

Ферма предоставляет доступ к мобильным устройствам Apple, Huawei, Samsung, Realme, TECNO, Infinix, Google.  В основе серверной части лежат 128-ядерные Ampere Altra. Физически телефоны подключены через USB-хабы HARPER, которые обеспечивают стабильную зарядку и коннект, а также позволяют управлять подключением каждого устройства. Для группирования устройств и управления через браузер используется ПО на основе Raspberry Pi. 

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

По типам тестов: возможны дымовые, функциональные и автоматические, через Espresso и Appium, а также интеграция с GitLab. Есть API для управления устройствами, подключения через ADB и выполнения тестовых сценариев.

Ферма Selectel охватывает 80% популярных моделей смартфонов, используемых в России, включая iOS 16, 17 и 18. 200 устройств, включая редкие и устаревшие.

Итак

В целом:

  • Эмуляторы – это быстро, дешево, но в большинстве случаев не очень эффективно,
  • Ручные тесты – уже лучше, но все-таки это долго, да и дорого (если смотреть с точки зрения не джуна-тестировщика, а менеджера проекта),
  • Фермы – быстрое и довольно-таки эффективное решение, если нужно тестировать как минимум на десятках устройств, избегая сложностей с покупкой, контролем и обслуживанием.

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас