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.Начните изменение на iOS и Android с исходно невыданным доступом. Ожидается корректный системный путь выбора и понятное объяснение назначения.
- 2.Если механизм предлагает разрешение, откажите либо выберите ограниченный вариант; в системном photo picker отмените выбор. Ожидается предусмотренное поведение без падения и блокировки остальных функций профиля.
- 3.Выберите фото, сверните приложение до завершения и вернитесь. Ожидается согласованное состояние загрузки или восстановления.
- 4.Завершите операцию и откройте профиль заново. Ожидается новый аватар на сервере, а не только временное локальное изображение.
- 5.Отмените выбор системным способом. Ожидается сохранение предыдущего аватара и отсутствие ложного сообщения об успехе.
Как переносить дефекты между платформами
Сначала опишите нарушенное правило, затем сравните равнозначные условия: аккаунт, данные, состояние разрешений и версию backend. Если сервер возвращает одинаковый ответ, а один клиент показывает ошибку, это полезная граница расследования.
Не закрывайте дефект словами «так на Android» без подтверждения требования. И не требуйте полного визуального совпадения системных компонентов. Успешное сравнение платформ показывает общий бизнес-результат, корректное системное управление и точно зафиксированные различия.