mobilegame-qadevice-matrixfragmentationqa

Тест на реальных девайсах: как собрать матрицу устройств и почему твой телефон врёт

У меня был проект, где всё летало на моём Pixel и на паре топовых айфонов — а в отзывах сыпалось «вылетает на старте», «чёрный экран», «тормозит». Разгадка простая: я тестировал на трёх флагманах, а игру ставили на трёхлетний бюджетник с 3 ГБ памяти и Android 10. Реальные баги живут не на твоём девайсе.

Мобильное тестирование ломается не на логике, а на ЖЕЛЕЗЕ и его разнообразии. Разберём, какую матрицу устройств брать и почему.

Почему один-два девайса врут

Android — это тысячи моделей, десяток версий ОС, разные чипы, объёмы памяти, плотности экрана, вырезы, оболочки поверх (Samsung One UI, Xiaomi MIUI/HyperOS и т.д.), свои политики энергосбережения. iOS однороднее, но и там разрыв между новым Pro и стареньким SE по памяти и теплу — это разные миры. Твой рабочий телефон — почти всегда лучше медианного устройства аудитории, поэтому на нём не воспроизводится то, на чём падает у людей.

Как собрать матрицу устройств

Не «побольше девайсов», а осознанный срез по осям риска. Бери реальную аналитику своей аудитории (Google Play Console → Statistics, App Store Connect, Firebase) и покрывай:

  • ОС-версии — самая старая, что вы поддерживаете (minSdk / min iOS), + самая свежая (там ломают новые ограничения приватности/фона), + одна-две популярные из середины.
  • Класс железа — обязательно low-end (мало RAM, слабый GPU — тут вылезают OOM, лаги, долгий старт), середняк и флагман.
  • Вендоры/оболочки — Samsung и Xiaomi почти всегда отдельно (агрессивный киллинг фоновых процессов, свои разрешения, нотификации); плюс «чистый» Android (Pixel).
  • Экраны — узкий/широкий аспект, вырез/дырка/динамический остров, складные, планшет; проверь, что UI и safe-area не разъезжаются.
  • Локаль/регион — другой язык (длина строк), RTL, региональные форматы, часовой пояс.

Практичное правило: ~5–8 реальных устройств, закрывающих крайние точки этих осей, дают больше, чем 20 похожих флагманов. Обязательно держи в наборе минимум один честный low-end — он ловит больше всего.

Реальные девайсы vs эмуляторы vs облако

Эмулятор/симулятор — быстро для разработки и UI-проверок, но врёт про производительность, тепло, батарею, камеру, сенсоры, GPU-специфику и реальную сеть. Смоук и функционалку — можно; финальную приёмку — нет.

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

Облачные фермы (Firebase Test Lab, BrowserStack, AWS Device Farm) — доступ к сотням реальных моделей без закупки; удобно гонять автотесты и матрицу перед релизом. Минус — латентность, нет «пощупать», лимиты по времени. Рабочая связка: ключевые девайсы вживую + облако для широты матрицы в CI.

Что тестировать именно на разном железе (а не на одном)

  • Холодный старт и OOM на low-end — время загрузки, вылеты по памяти, чёрный экран.
  • Производительность — FPS/фризы, троттлинг при нагреве на слабом чипе.
  • Оболочки вендоров — фоновый киллинг (Xiaomi/Samsung убивают процесс → теряется сессия/пуш), свои диалоги разрешений.
  • Экран — вырезы, safe-area, складные, изменение размера окна, поворот.
  • Прерывания и сеть — звонок, сворачивание, плохая/переключающаяся сеть — по-разному на разных ОС.
  • Апдейт поверх старой версии (не чистая установка) — миграция сейвов на реальном устройстве пользователя.

Коротко — что забрать с собой

  • Твой телефон — не аудитория. Реальные баги на медианном и слабом устройстве.
  • Матрица = осознанный срез по осям (ОС, класс железа, вендор/оболочка, экран, локаль) из СВОЕЙ аналитики, а не «побольше».
  • 5–8 крайних точек > 20 похожих флагманов. Хотя бы один честный low-end обязателен.
  • Эмулятор — для скорости, реальное железо — для приёмки, облако — для широты в CI.
  • Термалку, батарею, вендор-киллинг, safe-area и апдейт-поверх на эмуляторе не поймать — только вживую/в облаке.

Почитать: Firebase Test Lab (облачная ферма устройств) · Android — Gradle Managed Devices · Android — оптимизация игр