iOS vs Android

Практические различия iOS и Android для QA: окружение, навигация, жизненный цикл, разрешения, браузеры и сопоставление дефектов.

Обновлено:

Содержание

iOS и Android могут предоставлять одну бизнес-функцию через разные системные механизмы. Поэтому равенство продукта означает одинаково корректный результат для пользователя, но не обязательно одинаковую форму каждого диалога и жеста. QA должен знать, какие различия предусмотрены платформой, а какие нарушают требования.

Опасно строить стратегию на стереотипах: «на iOS всё одинаковое», «Android всегда нестабильный» или «общий код гарантирует одинаковое поведение». Конкретный результат зависит от устройства, версии ОС, сборки клиента и используемых интеграций.

Сравнивать окружения предметно

Для каждой платформы зафиксируйте поддерживаемые версии и модели, способ установки и настройки. На Android учитывайте производителя, вариант системы и при необходимости версию WebView. На iOS и iPadOS проверяйте поддерживаемые семейства устройств, размеры, системную версию и функции, которые использует продукт.

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

Навигация и ожидаемое управление

На Android пользователь может применять системное действие «назад» через жест или кнопку. На iOS распространены навигационные кнопки и жест возврата в соответствующих интерфейсах. Конкретное поведение зависит от архитектуры приложения и текущего экрана.

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

Жизненный цикл и изменение конфигурации

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

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

Разрешения и приватность

Модель запроса и набор доступных вариантов различаются по ОС, версии и ресурсу. Одно разрешение «геолокация включена» не описывает точность, доступ в фоне и ограничения времени. Аналогично доступ к отдельным фотографиям отличается от полного доступа к библиотеке.

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

Фон, уведомления и энергосбережение

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

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

Установка, версии и данные

Один и тот же номер релиза может иметь разные внутренние номера сборок. Записывайте их точно вместе с каналом распространения. Debug-сборка с обходами сетевой защиты и магазинная сборка могут вести себя по-разному.

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

Браузеры и встроенный web-контент

Одинаковый бренд браузера на компьютере и телефоне не гарантирует одинаковый движок. Для iOS нельзя безусловно утверждать, что любой браузер всегда использует WebKit: Apple допускает альтернативные движки при определённых региональных условиях, включая ЕС. Уточняйте фактическую сборку, ОС и регион.

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

Практический пример: изменение фото профиля

Бизнес-правило едино: выбрать разрешённое изображение, сохранить и увидеть новый аватар после повторного чтения. Платформенные шаги могут различаться.

  1. 1.Начните изменение на iOS и Android с исходно невыданным доступом. Ожидается корректный системный путь выбора и понятное объяснение назначения.
  2. 2.Если механизм предлагает разрешение, откажите либо выберите ограниченный вариант; в системном photo picker отмените выбор. Ожидается предусмотренное поведение без падения и блокировки остальных функций профиля.
  3. 3.Выберите фото, сверните приложение до завершения и вернитесь. Ожидается согласованное состояние загрузки или восстановления.
  4. 4.Завершите операцию и откройте профиль заново. Ожидается новый аватар на сервере, а не только временное локальное изображение.
  5. 5.Отмените выбор системным способом. Ожидается сохранение предыдущего аватара и отсутствие ложного сообщения об успехе.

Как переносить дефекты между платформами

Сначала опишите нарушенное правило, затем сравните равнозначные условия: аккаунт, данные, состояние разрешений и версию backend. Если сервер возвращает одинаковый ответ, а один клиент показывает ошибку, это полезная граница расследования.

Не закрывайте дефект словами «так на Android» без подтверждения требования. И не требуйте полного визуального совпадения системных компонентов. Успешное сравнение платформ показывает общий бизнес-результат, корректное системное управление и точно зафиксированные различия.

Что ещё почитать