qadesk.ru / Тест-кейсы / Регресс мобильного приложения и чек-листы магазинов

Готовые тест-кейсы

Чек-лист тестирования мобильного приложения: 24 тест-кейса регресса и публикации в RuStore, Google Play, App Store

24 кейсов 71 шагов 9 разделов критичных — 3

Обновлено: 23 сентября 2026

Мобильное приложение ломается не там, где веб: после обновления теряется сессия, пуш открывает главный экран вместо нужного, форма забывает введённое при повороте, а без сервисов Google приложение просто не запускается. Отдельная история — модерация магазинов: RuStore проверяет подпись, targetSdk и независимость от GMS, Google Play — декларации разрешений и раздел «Безопасность данных», App Store — тексты назначений разрешений, вход через Apple и удаление учётной записи. Каждый отказ модерации — минус несколько дней релиза.

Пакет — 24 тест-кейса, 71 шаг, 9 разделов: регресс приложения на любой платформе плюс три чек-листа подготовки к публикации. Кейсы не привязаны к модели устройства и версии ОС — их задаёт конфигурация прогона, один план даёт матрицу устройств. Чек-лист RuStore написан с учётом его требований к сборке без сервисов Google и к RuStore Billing.

Для мобильных команд, релиз-менеджеров и QA-инженеров, готовящих Android- и iOS-приложение к релизу и к модерации в RuStore, Google Play и App Store.

Не копируйте руками — пакет «Мобильное приложение: регресс и публикация в RuStore, Google Play, App Store» уже в каталоге QA Деск
Зарегистрируйтесь, откройте раздел «Каталог» и нажмите «Получить» — кейсы приедут в ваш проект со структурой папок, приоритетами, тегами и шагами, готовые к прогону. Бесплатно.
Получить пакет бесплатно

Разделы чек-листа:

Установка и обновление

4 тест-кейса · 10 шагов

Чистая установка и первый запуск: онбординг и согласия

критичныймобильноерегрессустановкасмоук
ПредусловияПриложение на устройстве отсутствует, данные прошлых установок удалены. Сборка — релиз-кандидат.
ДействиеОжидаемый результат
1Установить сборку и запустить приложениеЗапуск без падения; показан онбординг или экран входа, версия в «О приложении» совпадает с номером сборки
2Пройти онбординг, не принимая необязательные согласия (аналитика, реклама)Приложение доступно; отказ от необязательных согласий не блокирует основной сценарий
3Закрыть приложение и открыть повторноОнбординг не показывается второй раз; открывается главный экран

Обновление с предыдущей версии сохраняет данные и сессию

критичныймобильноерегрессобновление
ПредусловияУстановлена предыдущая опубликованная версия, выполнен вход, есть локальные данные (черновик, настройки, кеш).
ДействиеОжидаемый результат
1Установить новую сборку поверх старой, не удаляя еёУстановка проходит как обновление; приложение открывается без повторного входа
2Проверить локальные данные и настройкиЧерновики, настройки и выбранные параметры на месте; миграция локальной базы прошла без потерь
3Открыть экран, изменившийся в новой версииНовые элементы работают, старые данные отображаются в новом формате корректно

Обновление через две версии (пропуск промежуточной)

средниймобильноерегрессобновление
ПредусловияУстановлена версия N-2, есть локальные данные.
ДействиеОжидаемый результат
1Обновить сразу до версии NВсе миграции локальной базы применились последовательно; приложение не падает при первом запуске
2Проверить функции, добавленные в версиях N-1 и NРаботают; отсутствующие в старой базе поля заполнены значениями по умолчанию

Удаление приложения очищает локальные данные, повторная установка — чистая

средниймобильноерегрессустановкабезопасность
ПредусловияПриложение установлено, выполнен вход.
ДействиеОжидаемый результат
1Удалить приложение штатным способом и установить зановоПоказан экран входа; данные прошлой учётной записи (имя, аватар, кеш) не отображаются
2Проверить, что токены прошлой сессии не действуютВход требует пароля или повторной авторизации; автовход по остаточному токену не происходит

Разрешения

2 тест-кейса · 6 шагов

Запрос разрешения показывается в момент использования функции с понятным текстом

высокиймобильноерегрессразрешениямодерация
ПредусловияПриложение установлено впервые, ни одно разрешение не выдано.
ДействиеОжидаемый результат
1Запустить приложение и дойти до главного экранаСистемные диалоги разрешений на старте не появляются — только при обращении к функции
2Вызвать функцию, требующую разрешение (камера, геолокация, контакты)Системный диалог показан один раз; пояснение (rationale / NSUsageDescription) объясняет, зачем приложению это разрешение
3Сверить список запрашиваемых разрешений с манифестом и описанием в магазинеЛишних разрешений нет; каждое из манифеста используется в приложении

Отказ в разрешении не ломает приложение и даёт путь в настройки

высокиймобильноерегрессразрешения
ПредусловияРазрешение (например, камера) отклонено пользователем.
ДействиеОжидаемый результат
1Вызвать функцию, требующую отклонённое разрешениеПриложение не падает; показано понятное сообщение и кнопка перехода в системные настройки
2Выдать разрешение в настройках и вернуться в приложениеФункция работает без перезапуска приложения
3Отозвать разрешение, пока приложение свёрнуто, и развернуть егоПриложение корректно переживает отзыв (Android перезапускает процесс) — без потери введённых данных или с внятным восстановлением

Пуш-уведомления

3 тест-кейса · 7 шагов

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

высокиймобильноерегрессpush
ПредусловияРазрешение на уведомления выдано, устройство зарегистрировано в сервисе пушей (FCM / APNs / RuStore Push / HMS).
ДействиеОжидаемый результат
1Отправить тестовый пуш при свёрнутом приложенииУведомление показано с заголовком, текстом и иконкой приложения
2Нажать на уведомлениеОткрывается экран, соответствующий содержимому пуша, а не главный экран
3Полностью закрыть приложение (свайп из недавних) и отправить пушУведомление доставлено; тап запускает приложение сразу на целевом экране

Пуш в открытом приложении не дублируется системным баннером

средниймобильноерегрессpush
ПредусловияПриложение открыто на главном экране.
ДействиеОжидаемый результат
1Отправить пушПоказано внутриприложенческое уведомление или обновлён счётчик — согласно продуктовой логике; двойного показа (баннер + внутренний) нет
2Выйти из учётной записи и отправить пуш на этот же токенУведомление не приходит: токен отвязан от пользователя при выходе

Пуши на Android без сервисов Google (RuStore / HMS)

средниймобильноерегрессpushrustore
ПредусловияУстройство без GMS (Huawei или эмулятор без Google Play) либо GMS отключены.
ДействиеОжидаемый результат
1Установить приложение и войтиРегистрация в альтернативном пуш-сервисе прошла, приложение не требует Google Play Services и не показывает диалог «обновите сервисы Google»
2Отправить пуш через альтернативный сервисУведомление доставлено

Сеть и офлайн

2 тест-кейса · 6 шагов

Запуск и работа без сети: кеш показан, действия поставлены в очередь

высокиймобильноерегрессофлайнсеть
ПредусловияПриложение ранее открывалось онлайн, данные закешированы. Включён авиарежим.
ДействиеОжидаемый результат
1Запустить приложение в авиарежимеПоказаны закешированные данные и индикатор «нет сети»; бесконечного спиннера и падения нет
2Выполнить действие, требующее сети (создать запись, отправить сообщение)Действие сохранено локально с пометкой «ожидает отправки» либо показан внятный отказ — согласно продуктовой логике
3Выключить авиарежимОчередь отправлена автоматически, индикатор сети исчез, данные обновились без перезапуска

Обрыв сети посреди запроса и переключение Wi-Fi ↔ мобильная сеть

высокиймобильноерегресссеть
ПредусловияУстройство подключено к Wi-Fi и мобильной сети одновременно.
ДействиеОжидаемый результат
1Начать загрузку списка и в момент запроса выключить Wi-FiЗапрос повторён по мобильной сети или показана ошибка с кнопкой «повторить»; дубликатов записей не создано
2Начать отправку формы и во время запроса отключить сеть полностьюПоказана ошибка, введённые данные не потеряны; повторная отправка после появления сети не создаёт дубль
3Проверить поведение при медленной сети (эмуляция 2G / ограничение скорости)Показан индикатор загрузки, таймауты не приводят к падению, изображения подгружаются постепенно

Интерфейс и устройство

4 тест-кейса · 13 шагов

Поворот экрана и сворачивание не теряют состояние формы

высокиймобильноерегрессинтерфейс
ПредусловияОткрыта форма с несколькими полями, часть заполнена. Автоповорот включён.
ДействиеОжидаемый результат
1Повернуть устройство в ландшафт и обратноВведённые данные и позиция прокрутки сохранены; макет не обрезан, кнопки доступны
2Свернуть приложение, открыть 2–3 других тяжёлых приложения, вернутьсяФорма восстановлена с введёнными данными (в том числе после выгрузки процесса системой)
3Принять входящий звонок во время работы с формой и вернутьсяСостояние формы сохранено

Крупный системный шрифт и тёмная тема не ломают макет

средниймобильноерегрессинтерфейсдоступность
ПредусловияВ настройках устройства доступны масштаб шрифта и тёмная тема.
ДействиеОжидаемый результат
1Установить максимальный масштаб шрифта и открыть ключевые экраныТексты не обрезаются многоточием посреди слова, кнопки не наезжают друг на друга, списки прокручиваются
2Включить тёмную тему системыПриложение переключилось (или осталось в своей теме осознанно); нет белых блоков на тёмном фоне и нечитаемого текста
3Проверить экраны на узком устройстве или в режиме разделённого экранаМакет адаптируется, горизонтальной прокрутки нет

Вырез экрана, жестовая навигация и системная кнопка «Назад»

средниймобильноерегрессинтерфейс
ПредусловияУстройство с вырезом/«островом» и жестовой навигацией.
ДействиеОжидаемый результат
1Открыть экраны с верхней панелью и нижней панелью действийКонтент не перекрыт вырезом и индикатором жестов; отступы безопасной области соблюдены
2Нажать системную «Назад» (жест) на каждом уровне навигацииПереход на предыдущий экран; с главного экрана — выход или запрос подтверждения, а не пустой экран
3Открыть модальное окно и выполнить жест «Назад»Закрывается модальное окно, а не весь экран под ним

Глубокие ссылки и универсальные ссылки открывают целевой экран

высокиймобильноерегрессdeeplink
ПредусловияНастроены схема приложения и App Links / Universal Links для домена сервиса. Есть ссылка на конкретный объект.
ДействиеОжидаемый результат
1Открыть ссылку из мессенджера при закрытом приложенииЗапускается приложение сразу на целевом экране, без промежуточного показа браузера
2Открыть ту же ссылку при запущенном приложенииПереход на целевой экран, стек навигации позволяет вернуться назад
3Открыть ссылку на объект, к которому нет доступа или который удалёнПонятное сообщение, приложение не падает и не показывает чужие данные
4Открыть ссылку без выполненного входаПоказан вход, после входа — переход на целевой экран из ссылки
Не копируйте руками — пакет «Мобильное приложение: регресс и публикация в RuStore, Google Play, App Store» уже в каталоге QA Деск
Зарегистрируйтесь, откройте раздел «Каталог» и нажмите «Получить» — кейсы приедут в ваш проект со структурой папок, приоритетами, тегами и шагами, готовые к прогону. Бесплатно.
Получить пакет бесплатно

Безопасность

2 тест-кейса · 6 шагов

Сессия: выход, блокировка экрана и биометрия

высокиймобильноерегрессбезопасность
ПредусловияВыполнен вход; на устройстве настроена биометрия.
ДействиеОжидаемый результат
1Включить вход по биометрии, свернуть приложение на время больше таймаута блокировки, развернутьЗапрошена биометрия или PIN; данные экрана скрыты до подтверждения
2Открыть переключатель приложений (недавние)Превью приложения с персональными данными скрыто или размыто — согласно продуктовой политике
3Выйти из учётной записиЛокальные данные пользователя и токены очищены; возврат по «Назад» не показывает экранов авторизованной зоны

Секреты не лежат в открытом виде, трафик только по HTTPS

высокиймобильноерегрессбезопасность
ПредусловияЕсть релизная сборка (apk/aab, ipa) и перехватывающий прокси (mitmproxy / Charles).
ДействиеОжидаемый результат
1Распаковать сборку и поискать ключи API, пароли, адреса тестовых стендовСекретов и адресов dev/stage-стендов в ресурсах и строках нет
2Пропустить трафик через прокси с подменным сертификатомВсе запросы — HTTPS; при подмене сертификата приложение отказывает в соединении (pinning) либо, если pinning не требуется политикой, хотя бы не отправляет данные по HTTP
3Проверить логи приложения (logcat / Console) в релизной сборкеТокены, пароли и персональные данные в логи не пишутся

Публикация: RuStore

3 тест-кейса · 10 шагов

RuStore: сборка соответствует требованиям к подписи, targetSdk и работе без GMS

критичныймобильноерегрессrustoreмодерацияпубликация
ПредусловияГотова релизная сборка apk/aab для RuStore. Открыты актуальные требования RuStore к публикации.
ДействиеОжидаемый результат
1Проверить подпись сборки и совпадение applicationId с карточкой приложенияСборка подписана релизным ключом, applicationId и versionCode соответствуют карточке; versionCode больше опубликованного
2Проверить targetSdk и minSdk против текущих требований RuStoretargetSdk не ниже требуемого магазином; minSdk соответствует заявленному в карточке
3Установить сборку на устройство без сервисов Google и пройти основной сценарийВход, главный экран и ключевая функция работают; нет зависимостей, требующих Google Play Services
4Проверить, что сборка не содержит ссылок на установку из других магазиновКнопок «обновить в Google Play» и проверки установщика, блокирующей запуск, нет

RuStore: карточка приложения полная — описание, скриншоты, возраст, политика конфиденциальности

высокиймобильноерегрессrustoreмодерацияпубликация
ПредусловияОткрыта консоль разработчика RuStore, черновик карточки приложения.
ДействиеОжидаемый результат
1Проверить название, краткое и полное описаниеОписание на русском, без упоминания конкурирующих магазинов, соответствует функциям сборки
2Проверить скриншоты и иконкуСкриншоты с реальных экранов текущей версии, требуемые размеры соблюдены, на них нет чужих брендов и персональных данных
3Проверить возрастную категорию и ссылку на политику конфиденциальностиКатегория соответствует контенту; ссылка на политику открывается, документ описывает собираемые данные и совпадает с фактическим поведением приложения
4Проверить тестовые учётные данные для модерации (если требуется вход)Указанные логин и пароль работают в опубликованной сборке и дают доступ к основным функциям

RuStore: обновление через магазин и внутриприложенческие покупки через RuStore Billing

средниймобильноерегрессrustoreпубликация
ПредусловияПредыдущая версия установлена из RuStore. Если есть покупки — они подключены через RuStore Billing.
ДействиеОжидаемый результат
1Опубликовать новую версию и дождаться её появления в магазинеRuStore показывает обновление; после установки версия в приложении совпадает с опубликованной
2Совершить тестовую покупку (при наличии) в песочнице RuStoreПокупка проходит через RuStore Billing, чек и восстановление покупок работают; альтернативные платёжные SDK магазинов Google/Apple не используются

Публикация: Google Play

2 тест-кейса · 6 шагов

Google Play: aab, targetSdk, декларация разрешений и раздел «Безопасность данных»

высокиймобильноерегрессgoogle playмодерацияпубликация
ПредусловияГотов подписанный Android App Bundle. Открыта Play Console.
ДействиеОжидаемый результат
1Загрузить aab в тестовый трекPlay Console принимает бандл без предупреждений о targetSdk, размере или неподписанном артефакте
2Сверить декларации чувствительных разрешений (геолокация в фоне, SMS, файлы)Для каждого чувствительного разрешения есть заполненная форма с обоснованием или разрешение убрано
3Заполнить раздел «Безопасность данных» и сверить с фактическим поведениемЗаявленные типы собираемых данных совпадают с SDK и запросами приложения (аналитика, крэш-репорты)
4Пройти проверку предзапуска (pre-launch report) на тестовом трекеПадений и проблем доступности, блокирующих публикацию, нет

Google Play: установка из внутреннего тестирования и покупки через Play Billing

средниймобильноерегрессgoogle playпубликация
ПредусловияСборка на треке внутреннего тестирования, тестировщик добавлен в список.
ДействиеОжидаемый результат
1Принять приглашение и установить приложение из Google PlayУстановка проходит, версия совпадает с загруженной
2Совершить тестовую покупку лицензионным тестером (при наличии покупок)Покупка через Play Billing проходит, подписка/товар отражаются в приложении, восстановление покупок работает

Публикация: App Store

2 тест-кейса · 7 шагов

App Store: сборка проходит валидацию, тексты назначений разрешений заполнены

высокиймобильноерегрессapp storeмодерацияпубликация
ПредусловияГотов архив в Xcode, настроен App Store Connect.
ДействиеОжидаемый результат
1Выполнить Validate App в Xcode / TransporterВалидация без ошибок; предупреждений об отсутствующих NSUsageDescription и запрещённых API нет
2Проверить тексты назначений для каждого используемого разрешенияКаждый текст объясняет, зачем приложению доступ, на языке локализации
3Загрузить сборку в TestFlight и установить на устройствоСборка доступна в TestFlight, устанавливается и запускается; версия и номер сборки совпадают

App Store: заметки для ревью, вход через Apple и удаление учётной записи

высокиймобильноерегрессapp storeмодерацияпубликация
ПредусловияОткрыта карточка версии в App Store Connect. В приложении есть регистрация.
ДействиеОжидаемый результат
1Заполнить заметки для ревью с тестовой учётной записьюУчётные данные работают в загруженной сборке; описаны шаги до ключевых функций, требующих особых условий
2Проверить наличие «Вход через Apple», если есть другие сторонние входыКнопка есть и работает, либо сторонних входов нет
3Найти в приложении функцию удаления учётной записиУдаление доступно из приложения, после подтверждения вход в удалённую учётную запись невозможен
4Проверить, что цифровые товары продаются через In-App PurchaseВнешних платёжных форм за цифровой контент нет; восстановление покупок работает

Прогоните этот чек-лист в QA Деск

Пакет подключается из каталога одним нажатием: кейсы, папки и приоритеты уже на месте. Соберите план, запустите прогон и получите отчёт — какие сценарии прошли, какие упали и какие дефекты заведены.

Попробовать бесплатно

Регистрация за минуту · демо-проект с кейсами и дефектами · перенос кейсов из TestIT и CSV