Блог
Теория и инструменты тестирования

Фрагментация устройств и версий ОС в мобильном тестировании

Веб-браузер один и тот же что в Москве, что в Африке — а вот мобильных устройств тысячи, и каждое ведёт себя по-своему. Именно поэтому мобильное тестирование считается сложнее веб-тестирования: там, где в браузере достаточно проверить 3-4 версии, в мобилке нужно учитывать десятки моделей телефонов, две принципиально разные операционные системы и версии этих ОС, которые обновляются с разной скоростью. Разберёмся, откуда берётся эта сложность и что с ней делать на практике.

4 вида мобильных приложений

Прежде чем говорить о фрагментации, важно понимать, что вы вообще тестируете — потому что «мобильное приложение» это общий термин для четырёх разных вещей.
Веб-приложение — это адаптивный сайт, который открывается в мобильном браузере. Ничего не устанавливается, доступ к системе минимальный (браузер выступает переходником между приложением и железом), производительность ниже, чем у нативных решений. Важный нюанс: тестирование адаптивного сайта в мобильном браузере остаётся веб-тестированием. Технологии те же, просто экран другого размера.
Нативное приложение — то, что обычно и подразумевают под «мобильным приложением»: Instagram, банковское приложение, доставка еды. Устанавливается из App Store или Play Market, имеет полный доступ к устройству (камера, геолокация, датчики, звонки, SMS, пуши) в рамках выданных пользователем разрешений и умеет работать без интернета там, где это уместно.
Гибридное приложение — золотая середина: по сути тот же веб, но с расширенным доступом к системе — умеет отправлять пуши, хранить файлы офлайн, работать в фоне и иметь иконку на рабочем столе, как у нативного. Дешевле в разработке, чем полноценный натив.
Кроссплатформенное приложение (React Native, Flutter) — с точки зрения тестирования ведёт себя как нативное, но написано из одной кодовой базы сразу под Android и iOS. Плюс — один разработчик вместо двух, минус — в производительности и доступе к уникальным фичам каждой платформы неизбежны компромиссы.

Android vs iOS: почему нельзя тестировать их одинаково

Различия между платформами напрямую влияют на стратегию тестирования.
Android построен на открытом исходном коде — как Linux, — и его устройства выпускают десятки производителей: Samsung, Xiaomi, Sony, Motorola, Lenovo, Huawei, Asus, HTC. Разработка идёт на Kotlin и Java, установка приложений возможна и в обход магазина через APK-файл, а гайдлайны Material Design — это рекомендации, от которых можно отходить.
iOS — закрытая экосистема одного производителя, Apple. Разработка на Objective-C и Swift (чаще Swift), установить приложение можно только через App Store, а модерация может занимать до двух недель. Гайдлайны Human Interface Guidelines соблюдаются жёстко: сильное отклонение — и приложение не пропустят в магазин.
Показательный пример: когда российские банковские приложения заблокировали в сторах, пользователи Android скачали APK прямо с сайта банка и продолжили работать. Пользователи iOS остались без приложения — закрытая система не оставила обходных путей.
С точки зрения доли рынка Android занимает больше 80% устройств в мире, что и объясняет главную головную боль мобильного тестировщика — разберём её ниже.

Фрагментация устройств: зоопарк Android

Открытый код Android означает, что любой производитель может выпустить своё устройство на этой платформе — отсюда тысячи моделей с разными экранами, разной высотой и шириной, раскладушками и слайдерами. iOS в этом смысле гораздо скромнее: несколько актуальных моделей с плановыми релизами Apple, и предсказать поведение приложения на них проще.
Проблема фрагментации формулируется просто: вы можете купить 30 разных телефонов, протестировать на всех — и всё будет работать. А потом найдётся пользователь с необычным устройством, купленным на AliExpress, — и у него обнаружится баг, который заранее просчитать было невозможно. Это прямая иллюстрация принципа «нельзя гарантировать отсутствие багов» — для мобильного тестирования он особенно актуален.

Версии ОС и статистика

Мало учесть модели устройств — нужно учитывать ещё и версии операционных систем. Тестировать только на последней версии — соблазнительно быстро, но рискованно: значительная часть пользователей продолжает сидеть на старых версиях, где поведение приложения может отличаться.
По данным на начало 2024 года, самой популярной версией Android была Android 13, за ней с заметным отставанием шли версии 11, 12, 10 и 14. У iOS картина другая: iOS 17 держала 66% пользователей — Apple доставляет обновления гораздо быстрее, потому что контролирует и железо, и софт. Android медленнее: далеко не каждое устройство физически поддерживает новые версии системы, да и часть производителей не спешит с обновлениями.

Симуляторы, эмуляторы и фермы устройств

Тестировать на всём зоопарке устройств физически невозможно, поэтому в индустрии сложилось три уровня инструментов.
Симулятор имитирует выполнение кода программно, без доступа к реальным сенсорам, GPS или камере — самый быстрый и дешёвый вариант, но с ограниченной достоверностью.
Эмулятор (например, встроенный в Android Studio) воссоздаёт компоненты устройства — процессор, память, ввод-вывод — и позволяет задавать лимиты по памяти, но так же не даёт доступа к реальным датчикам и Bluetooth.
Физическое устройство — самый точный вариант: реальный GPS, реальные сенсоры, реальная камера, но и самый дорогой, если собирать парк из десятков моделей.
Практическая формула, которая работает на большинстве проектов: небольшой парк из самых распространённых физических устройств плюс аренда на фермах устройств для всего остального. Ферма — это буквально склад из тысяч телефонов, подключённых к зарядке и доступных в аренду через браузер: устанавливаете приложение, тестируете, платите за время сессии. Самые известные фермы — BrowserStack, SauceLabs, Lambda Test и Firebase. У фермы есть свои ограничения — нельзя физически повернуть устройство или сменить его геолокацию, — но для покрытия основного зоопарка моделей это рабочий и заметно более дешёвый вариант, чем закупка собственного парка телефонов.
Разобраться в фрагментации устройств и версий ОС — только часть базы мобильного тестирования: дальше идут прерывания, сенсоры и геолокация, которые добавляют не меньше неожиданных багов. На курсе «Инженер по ручному тестированию» в Quality Academy мобильному тестированию посвящён отдельный спринт с реальными кейсами из практики Артёма и разбором конкретных приложений.
-------

Полезные ссылки школы

Сайт Quality Academy:
/main
Telegram-канал:
https://t.me/quality_academy
YouTube-канал:
https://www.youtube.com/@quality_academy
ВКонтакте:
https://vk.com/quality_academy
Канал отзывов учеников (58+ отзывов):
https://t.me/quality_academy_reviews
Задать вопрос менеджеру:
https://t.me/quality_academy_bot
Тест «Подойдёт ли вам тестирование»:
https://quiz.quality-academy.ru
5000+ вопросов с собесов тестировщика — бот-тренажёр:
https://t.me/quality_academy_interview_bot
3 практические задачи и дорожная карта:
https://t.me/quality_academy_tasks_bot
Бесплатные тренажёры — SQL Arena, Playwright Arena, Python Arena:
SQL Arena · Playwright Arena · Python Arena