non-functionalmobile-qaperformance

Performance тесты мобильной игры: 7 метрик, которые реально важно проверить

«Игра тормозит» — слишком абстрактно для тикета. Чтобы performance-проблема была воспроизводимой, измеряемой и трекабельной — нужны конкретные числа. Вот 7 метрик, которые имеет смысл смотреть на каждом релизе.

FPS и frame time. 60 FPS не равно «плавно». Один пик в 100 ms между обычными 16 ms — пользователь увидит micro-stutter. Смотри frame time, а не средний FPS. Цель: 95% кадров < 16.7 ms на target-девайсах. Инструмент: Unity Profiler → Frame Debugger, Xcode Instruments → Time Profiler.

Memory footprint. На iOS лимит до crash зависит от модели — на iPhone SE/8 порядка 1.4 GB, на iPhone 15 Pro около 5 GB. Измеряй Resident Memory во время сессии, не только peak. Утечки видны как монотонный рост между уровнями.

Draw calls и SetPass calls. На бюджетных Android (Adreno 510) каждый SetPass call ~0.3 ms. 200 calls = 60 ms = меньше 16 FPS. Цель для casual mobile: <100 SetPass calls на frame.

GC pressure. В Unity garbage collector делает stop-the-world паузы. Если allocations >1KB/frame — будут спайки. Цель: 0 KB/frame в hot path. Profiler → Memory → GC Allocations in Frame.

Battery drain. На iOS через Xcode → Energy Impact: должно быть «Low» при обычном гейплее. Если «High» — стоит ограничивать FPS в меню (часто там крутятся эффекты на 120 fps без нужды) и троттлить fixed-update.

Thermal state. Через 10 минут активной игры девайс начинает throttling. Симптом: FPS просел с 60 до 30, ничего не пофиксил. На iOS — ProcessInfo.thermalState, на Android — PowerManager.getCurrentThermalStatus(). Проверяй после 15-минутной сессии.

Cold start до первого фрейма геймплея. Критическая UX-метрика. Цель: <3 секунд на target-девайсе, <5 на low-end. Замеряй через хуки в startup и фиксируй точку, когда player может тапнуть.

Что встроить в QA-процесс

✅ На каждый release — отчёт по этим 7 метрикам на 2-3 target-девайсах (low / mid / high).

✅ Performance budget: «никогда не больше N MB memory peak, никогда не больше N draw calls». Регрессия выше — блокирует релиз.

✅ 15-минутная stress-session перед релизом — обязательно. Thermal throttling и memory leaks вылезают только тут.

Подробнее: Unity Profiler Manual, Apple — Measuring App Performance.