Первая установка, обновление и удаление — самостоятельные пользовательские сценарии. Приложение может отлично работать на чистом устройстве и падать у большинства действующих пользователей: у них уже есть локальная база, старая сессия, сохранённые файлы и настройки. Проверка жизненного цикла нужна, чтобы релиз не разрушал это состояние.
Для QA важен результат каждой операции: какая версия установилась, какие данные сохранились, что произошло с доступом и можно ли продолжить основной сценарий. Сообщение установщика об успехе подтверждает только часть этой цепочки.
Какие переходы нужно различать
Чистая установка создаёт новое состояние приложения. Обновление заменяет программу, сохраняя предусмотренные платформой данные. Удаление убирает установленное приложение; повторная установка может включать восстановление данных. Очистка данных и установка поверх существующей версии — другие операции, поэтому они не заменяют эти проверки.
Отдельно существует обновление самой ОС. Оно меняет окружение уже установленного приложения и требует своего набора проверок разрешений, уведомлений, фоновой работы и совместимости.
С чего начинается подготовка
Зафиксируй исходную и целевую версии, номер сборки, источник установки, модель устройства и ОС. Подготовь тестовый аккаунт и заранее сохрани контрольные значения: количество объектов, текст черновика, выбранный язык, состояние авторизации.
Нужны реальные старые сборки с совместимой подписью и корректным идентификатором приложения. Ошибка установки из-за подписи не доказывает дефект миграции: приложение ещё не получило возможность выполнить её.
Что проверить при первой установке
Открой приложение после установки и пройди путь до первой полезной операции. Проверь старт без аккаунта, корректность окружения, onboarding, отказ от необязательных разрешений и понятные состояния при недоступном сервере.
- →Название, иконка и версия соответствуют полученной сборке.
- →На устройстве с минимально поддерживаемой ОС доступен основной сценарий.
- →Нет чужих данных, тестовых баннеров и обращений к ошибочному backend.
- →Недостаток места и прерванная загрузка не оставляют приложение в неработоспособном состоянии.
Почему обновление проверяют с данными
При обновлении меняются код, схема локального хранилища и иногда формат настроек. Пользователь замечает не саму миграцию, а пропавший черновик, повторный onboarding или бесконечную загрузку. Требования должны определять, что сохраняется, а что намеренно сбрасывается.
Android отдельно документирует миграции Room и необходимость сохранять существующие данные при изменении схемы. Конкретный проект может использовать другое хранилище, но тестовый вопрос тот же: все ли поддерживаемые исходные состояния переводятся в новое согласованное состояние.
Практический пример: обновление заметок
Представь приложение заметок, в котором новая версия добавляет папки. Проверка должна включать не только созданные на сервере заметки, но и локальный несинхронизированный черновик.
- 1.Установи поддерживаемую старую версию. Создай две заметки, измени настройки и сохрани третью заметку без сети.
- 2.Запиши идентификаторы синхронизированных заметок и текст локального черновика. Закрой приложение обычным способом.
- 3.Обнови приложение через согласованный канал без предварительного удаления и очистки данных.
- 4.Запусти новую версию сначала без сети. Ожидается сохранность локального текста и понятное состояние синхронизации.
- 5.Восстанови сеть. Проверь завершение синхронизации, отсутствие дублей и доступность прежних заметок.
- 6.Перезапусти приложение. Данные и настройки должны остаться согласованными после повторного открытия.
Если бизнес допускает повторный вход, проверь его как ожидаемое поведение и отдельно убедись, что он не уничтожает локальные изменения.
Какие пути обновления выбрать
Проверяй переход не только с предыдущего релиза, но и с самой старой версии, которую команда ещё поддерживает. Пользователи пропускают обновления, поэтому последовательный переход через каждую промежуточную сборку нельзя считать гарантированным.
Добавь аккаунт с большим объёмом данных, пустую базу и состояние с незавершённой операцией. Если миграция прерывается, после повторного запуска приложение должно либо безопасно продолжить её, либо показать предусмотренный способ восстановления.
Удаление и повторная установка
После удаления проверь исчезновение приложения и обработку связанных сценариев: открытие ссылки, получение новых уведомлений, повторную установку. Не ожидай автоматического удаления аккаунта на сервере: это отдельная продуктовая операция.
На Android восстановление из Auto Backup способно вернуть часть данных. Поэтому «удалил и установил» не всегда означает чистую среду. Отдельно фиксируй настройки резервного копирования и проверяй сценарии с восстановлением и без него. Для iOS также различай удаление приложения и выгрузку, сохраняющую документы и данные.
Откат и несовместимые версии
Откат приложения не является универсальной пользовательской возможностью. Канал распространения, подпись и ограничения платформы могут запрещать установку старой сборки поверх новой. Если rollback входит в план выпуска, команда должна заранее описать поддерживаемый механизм.
Главный риск — старая программа после изменения локальной схемы. Проверять нужно именно согласованный путь восстановления: новую исправленную сборку, серверный переключатель или иной реальный механизм, а не принудительный downgrade ради формальной галочки.
Типичные ошибки QA
Частая ошибка — удалять приложение перед каждым релизом: так исчезает состояние, на котором ломается обновление. Другая — сверять только экран профиля и не смотреть локальные файлы, очередь отправки и содержимое базы через доступные диагностические средства.
Также нельзя смешивать установку debug-сборки и обновление магазинного приложения. Разные подписи, конфигурации и каналы дают разные условия. В отчёте указывай точный маршрут установки и контрольные данные до и после операции.
Что должен вынести QA
Успешное обновление сохраняет предусмотренные данные и позволяет продолжить работу. Матрица проверок строится вокруг переходов между состояниями, а доказательствами служат версии, контрольные значения и результат основных операций. Чистая установка, обновление и восстановление после удаления должны оставаться отдельными тестами.