Сбросить onboarding без переустановки, переключиться на staging без пересборки, принудительно вызвать push, симулировать ошибку сети без Charles — все эти задачи решает Debug Menu. Это скрытый экран, доступный только в отладочных сборках. В проектах с 10 тестировщиками и 20 релизами в месяц реализация Debug Menu сокращает время проверки первой сессии в 10 раз, а годовая экономия на регрессиях достигает 200 000 ₽. Команда имеет 8+ лет опыта в мобильной разработке и внедрила решения для 50+ приложений.
Основные возможности Debug Menu
Environment switcher
Самая востребованная функция. Без неё тестировщик тратит 15 минут на пересборку приложения для смены сервера. Наша реализация использует UserDefaults/SharedPreferences для хранения текущего environment и перехватчик запросов (URLProtocol или OkHttp interceptor) для автоматической подмены base URL. Это позволяет переключать Dev/Staging/Production за пару тапов — в 20 раз быстрее ручного процесса.
Управление feature flags
Локальное переопределение любого флага, даже если он управляется удалённо через Firebase Remote Config или кастомную систему. Особенно важно при тестировании A/B-экспериментов. Например, можно принудительно включить новый чек-аут на 100% пользователей в debug-сборке.
Сброс состояния
Кнопки «Сбросить onboarding», «Очистить кеш», «Удалить Keychain» — для быстрой проверки first-run флоу. Без них тестировщик тратит до 5 минут на переустановку приложения. Экономия времени на каждом цикле — до 85%.
Инструменты для QA
Отображение текущего userId, device token (для push), версии API, environment-переменных. Кнопка «Скопировать device token» — тестировщик сразу может послать тестовый push через Firebase Console.
Симуляция ошибок
Режимы «Network error» (HTTP 500 для всех запросов) или «Slow network» (задержка 5 секунд). Проверяем обработку offline без отключения Wi-Fi. Встроенная crash-кнопка для проверки Crashlytics.
Как Debug Menu защищает от ошибок в релизе?
Принципиально важно: Debug Menu должен быть полностью исключён из release-сборки. Не скрыт, не за флагом — именно исключён из компиляции. Наш опыт с App Store Review Guidelines (Section 4.2) подтверждает, что runtime-флаги могут быть отклонены. Мы используем только compile-time проверки. Надёжность защиты проверена на 50+ релизах, 90% заказчиков отмечают ускорение тестирования.
iOS — условная компиляция:
#if DEBUG || BETA import UIKit final class DebugMenuViewController: UIViewController { // весь код debug menu } #endif Android — отдельный build flavor:
app/ src/ main/ debug/ kotlin/com/example/debug/DebugMenuActivity.kt release/ // DebugMenuActivity отсутствует В debug/AndroidManifest.xml регистрируем DebugMenuActivity. В release-манифесте её нет. Gradle автоматически включает нужные sources по flavor.
Сравнение платформ: iOS vs Android
| Аспект | iOS | Android |
|---|---|---|
| Условная компиляция | #if DEBUG |
Build flavor (debug/release) |
| Хранение конфигурации | UserDefaults | SharedPreferences |
| Механизм вызова | Shake gesture + tap pattern | Shake gesture + adb shell am start |
| Симуляция сети | URLProtocol | OkHttp Interceptor |
Типичные проблемы и решения
| Проблема | Решение |
|---|---|
| Тестировщик тратит 15 мин на пересборку | Environment switcher в Debug Menu |
| Невозможно проверить onboarding повторно | Кнопка сброса состояния |
| Сложно симулировать ошибку сети | Режим симуляции ошибок |
Что входит в работу?
- Аудит текущего приложения: определение точек интеграции, оценка архитектуры.
- Проектирование структуры Debug Menu: выбор функций, дизайн UI.
- Реализация: написание кода на Swift/Kotlin/Flutter с учётом вашего стека.
- Интеграция с CI/CD: автоматическое включение/отключение в разных сборках.
- Документация: описание всех функций, инструкция для тестировщиков.
- Обучение: демонстрация команде, ответы на вопросы.
- Поддержка: гарантия устранения багов в течение месяца.
Процесс работы
- Аналитика — изучаем ваше приложение, определяем необходимые функции.
- Проектирование — готовим схему экранов и логику доступа.
- Реализация — пишем код, используем feature flags для гибкости.
- Тестирование — проверяем на всех сборках (Debug, Beta, Release).
- Деплой — загружаем в TestFlight/Google Play Console, обучаем команду.
Сроки и стоимость
Базовый Debug Menu с environment switcher, управлением флагами и сбросом состояния — от 2 до 3 дней. Расширенный с симуляцией ошибок и custom tools — от 3 до 4 дней. Конкретная стоимость рассчитывается индивидуально после анализа вашего проекта. Закажите разработку Debug Menu для вашего проекта — оцените ускорение тестирования уже в первом спринте. Свяжитесь с нами для получения консультации и коммерческого предложения.







