Готовые тест-кейсы
Чек-лист тестирования мобильного приложения: 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 против текущих требований RuStore | targetSdk не ниже требуемого магазином; 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 | Внешних платёжных форм за цифровой контент нет; восстановление покупок работает |