ТестированиеМобильное тестированиеИнженер по мобильному тестированию

Во время восстановления резервной копии на новом телефоне настройки приложения переносятся, но активная сес...

Во время восстановления резервной копии на новом телефоне настройки приложения переносятся, но активная сессия иногда остаётся. Как проверить, что приложение корректно разделяет восстанавливаемые данные и секреты сессии?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Нужно проверить восстановление приложения как минимум на новом устройстве, отделив обычные пользовательские данные от секретов сессии. Корректное поведение: настройки и разрешённые к переносу данные восстанавливаются, а токены авторизации не дают автоматически получить доступ к аккаунту без предусмотренной повторной проверки.

Проверка должна учитывать не только наличие файла резервной копии, но и действительность восстановленных секретов: их срок жизни, привязку к устройству, защиту хранилища ключей и реакцию сервера на старый токен.

Исторический контекст

Резервное копирование появилось как способ уменьшить потерю пользовательских данных при замене или сбросе мобильного устройства. Пользователь ожидает увидеть прежние настройки, локальные документы и историю, но перенос всех данных без разделения создаёт риск автоматического восстановления доступа к защищённому аккаунту.

Поэтому мобильные приложения обычно разделяют восстанавливаемое состояние и секреты. Политика зависит от приложения, версии ОС, настроек резервного копирования, защищённого хранилища и серверной авторизации; универсальной гарантии одинакового поведения на iOS и Android нет.

Постановка проблемы

Если тестировщик проверит только наличие настроек после восстановления, он может пропустить критическую уязвимость: новый пользователь устройства получит доступ к чужой сессии. Обратная ошибка тоже возможна — безопасное удаление токена будет ошибочно принято за потерю всех пользовательских данных.

Риск усиливается при переносе между разными устройствами, восстановлении более старой версии приложения и изменении учётных данных на исходном телефоне. В результате приложение может показывать экран авторизованного пользователя, хотя сервер уже отозвал токен, либо бесконечно пытаться использовать недействительный секрет.

Подробное решение

Сначала нужно определить ожидаемую политику для каждого класса данных:

  • настройки интерфейса и пользовательские предпочтения обычно могут восстанавливаться;
  • локальный контент восстанавливается только при наличии требования продукта и корректной миграции формата;
  • токены, ключи и другие секреты не должны автоматически считаться действующими на новом устройстве без явно предусмотренной политики;
  • данные, привязанные к аппаратному защищённому хранилищу, могут быть недоступны после переноса.

Затем создаётся исходное состояние: пользователь входит в аккаунт, меняет несколько настроек, сохраняет локальные данные, фиксирует срок действия токена. После формирования резервной копии нужно отозвать сессию на сервере либо изменить пароль, восстановить копию на другом устройстве и проверить отдельно UI, локальные данные и фактический доступ к защищённому API.

Минимальная матрица должна включать исходное и новое устройство, одинаковую и отличающуюся версию приложения, восстановление на чистую установку, а также восстановление после отзыва исходной сессии. Для iOS и Android следует проверять фактическую политику конкретного приложения: защищённое хранилище, системное резервное копирование и серверная проверка могут давать разные результаты.

Главный критерий — не то, отображается ли имя пользователя, а то, может ли приложение выполнить авторизованную операцию. Если секрет восстановлен, клиент должен корректно обработать его недействительность: удалить локальную сессию, запросить повторный вход или запустить предусмотренное восстановление, не зацикливая запросы.

Ситуация из практики

После переноса на новый телефон приложение восстанавливало настройки и локальный список документов, но сразу открывало личный кабинет. Рассматривались три варианта: переносить токен вместе с остальными данными, полностью запрещать восстановление локального состояния или переносить пользовательские данные отдельно от сессии.

Первый вариант был простым, но создавал риск доступа через резервную копию и не учитывал отзыв токена. Второй вариант повышал безопасность, но ухудшал пользовательский опыт и мог привести к потере несинхронизированных документов. Выбрали третий вариант: настройки и разрешённые документы восстанавливались, а секрет сессии проверялся сервером; при отказе приложение очищало сессию и показывало повторный вход.

В результате перенос данных сохранил ожидаемое состояние интерфейса, но восстановление отозванной сессии больше не давало доступа к аккаунту. Отдельно добавили проверки старой версии приложения, чистой установки и повторного запуска после неуспешной авторизации.

Что кандидаты часто упускают

  1. Вопрос: Достаточно ли проверить, что после восстановления отображается экран авторизованного пользователя?

Ответ: Нет. Экран может быть построен по устаревшему локальному флагу, пока первый защищённый запрос ещё не выполнен. Нужно проверить реальную операцию, требующую авторизации, а затем реакцию на отказ сервера: очистку сессии, отсутствие утечки данных и корректный переход к повторному входу.

  1. Вопрос: Почему успешное восстановление на том же устройстве не доказывает корректность переноса на новое?

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

  1. Вопрос: Как отличить ошибку политики резервного копирования от ошибки серверной авторизации?

Ответ: Нужно разделить наблюдения. Сначала проверить наличие и корректность восстановленных несекретных данных без выполнения входа, затем изучить сетевой результат первой защищённой операции: отправлялся ли токен, какой ответ вернул сервер, удалил ли клиент недействительный секрет. Полезен контрольный сценарий с заведомо действующей новой авторизацией: если она работает, а восстановленная сессия отклоняется, проблема находится в политике или жизненном цикле секрета, а не в общей доступности API.