На симуляторе приложение открывается, но команда не понимает, какие состояния действительно должны блокировать выпуск.
Вывод: для матрицы корпоративного CI-тестирования iPhone Duo достаточно начать с представительных проверок сложенного и раскрытого состояний и ключевых экранов в Xcode 27.1; не нужно механически включать каждую позу и ориентацию. Ручное исследование в Device Hub помогает найти дефекты, но становится CI-gate только после превращения в повторяемый автоматический сценарий.
Материал предназначен IT-руководителям, решающим, включать ли iPhone Duo в выпускную приёмку.
Платформенным инженерам, которым нужно встроить проверку в существующий Mac CI.
QA-руководителям, переводящим состояния устройства и пользовательские пути в проверяемые критерии.
Последняя проверка: 28 октября 2026 года. Сведения о запуске устройства и инструментах сверены с объявлением Apple Developer о подготовке iPhone Duo, руководством по Xcode 27.1 и документацией Device Hub.
Для IT-руководителя: определить, что считается приёмкой
Apple объявила дату выхода iPhone Duo — 23 октября 2026 года — и указала поддержку разработки в Xcode 27.1. Это подтверждает доступность соответствующих инструментов, но не задаёт для корпоративных приложений обязательную матрицу или критерий выпуска. Команде следует принять собственные правила на основе функций приложения и риска дефекта, а не принимать решение только по факту появления нового устройства. Объявление Apple Developer и запись о выпуске Xcode 27.1 — исходные источники для проверки этих сведений.
Полезно развести три задачи, которые часто ошибочно объединяют в один пункт релизного списка:
- Проверка интерфейса: убедиться, что важные экраны не ломаются при изменении доступного пространства и состояния устройства.
- Автоматические регрессионные тесты: повторяемо проверить определённые действия и результаты в симуляторе, сохраняя отчёт для CI.
- Подготовка материалов App Store: проверить скриншоты и сведения для публикации отдельно от тестирования интерфейса. Требования к изображениям задаёт спецификация App Store Connect; наличие подходящих материалов не является доказательством прохождения CI.
Решение для приёмки должно отвечать на практический вопрос: какой конкретный дефект не должен попасть к пользователю? Если риск — обрезанная кнопка на основном сценарии, проверяйте кнопку и сценарий при изменении компоновки. Если риск не связан с функциями приложения, добавление очередной конфигурации симулятора не улучшает контроль само по себе.
Для команды приложения: найти интерфейсы, зависящие от размера
Начните с инвентаризации экранов и реализаций, в которых предполагается фиксированное пространство. В первую очередь проверьте жёстко заданные размеры, ограничения, рассчитанные только на одну ориентацию, предположения о симметричных безопасных областях и собственную навигацию, которая не адаптируется к изменению окна. Это не означает, что каждый такой участок обязательно дефектен; это список мест, где проверка состояния с изменившейся компоновкой с большей вероятностью обнаружит проблему.
В реестре рисков отметьте:
- вход и восстановление сессии, где скрытая или обрезанная кнопка может прервать доступ;
- основное бизнес-действие, включая подтверждение, отмену и возврат к предыдущему шагу;
- экраны с видео, изображениями, картами или другой областью, которая должна менять размер без потери важного содержимого;
- собственные панели навигации и формы, где одновременно видны несколько элементов управления.
Проверка размеров нужна не для демонстрации красивой адаптивности. Она позволяет установить, остаются ли видимыми необходимые действия, соответствует ли структура экрана ожидаемому состоянию и не теряет ли пользователь контекст при переходе между компоновками. В руководстве Apple по дизайну iPhone Duo и технических разъяснениях по адаптации интерфейса описаны принципы подготовки интерфейса; применимость конкретного решения к приложению команда должна подтвердить собственными сценариями.
Проверяйте не только статичный экран. Если интерфейс обновляется после раскрытия или поворота, включите в сценарий действие до изменения состояния и действие после него. Например, важно убедиться, что черновик формы не исчезает, а выбранный раздел остаётся доступен. Такие ожидания следует формулировать как наблюдаемые результаты, а не как общее требование «интерфейс корректно перестраивается».
Для CI-платформы: отделить Device Hub от автоматического gate
Device Hub полезен для ручного переключения и изучения доступных состояний устройства. Автоматический тест решает другую задачу: выполняет заранее заданный сценарий и оставляет результат, который можно повторно проверить в конвейере. Документация Device Hub в Xcode описывает инструмент; наличие инструмента в рабочем процессе не означает, что ручное исследование автоматически стало частью CI.
До включения gate убедитесь, что сборка запускается в предусмотренной среде и использует тот Xcode, который команда утвердила для проверки. В данном случае в плане указан Xcode 27.1, а его возможности и ограничения следует сверять с примечаниями к выпуску Xcode 27.1. Также зафиксируйте выбранную цель симулятора, схему тестирования, переменные среды и способ публикации результата. Без этих сведений одинаковое название задания в CI ещё не гарантирует сопоставимость запусков.
Для каждой проверки сохраняйте как минимум итоговый статус и диагностические материалы, позволяющие определить, где возник сбой: в сборке, запуске теста, переходе состояния или проверяемом действии. Успешный запуск симулятора — лишь подтверждение, что среда смогла его открыть. Он не подтверждает прохождение сценариев и не свидетельствует о полноте матрицы.
При настройке существующей линии CI используйте такой порядок:
- Зафиксируйте версию Xcode и проверьте, что job действительно запускает утверждённую версию, а не выбирает доступную среду неявно.
- Укажите целевое устройство и схему, затем выполните тест на одном репрезентативном сценарии до расширения набора.
- Проверьте, что тест меняет или выбирает нужное состояние тем способом, который поддерживает используемый инструмент, и что ожидаемый результат можно проверить программно.
- Настройте сохранение отчёта и материалов при ошибке; проверьте, что ссылки на артефакты доступны ответственным за разбор.
- Запустите сценарий повторно после исправления, чтобы отличить устойчивый результат от случайного прохождения.
- Добавляйте новые состояния только при появлении обоснованного риска или требования продукта, а не для формального увеличения числа конфигураций.
Если сценарий можно выполнить только вручную, обозначьте его как исследовательскую проверку или ручной пункт приёмки. Не показывайте его в отчёте как автоматический gate.
Для QA: выбрать репрезентативные состояния без полного перебора
Матрица должна связывать состояние устройства с конкретной функцией приложения. Не требуется строить полное сочетание всех состояний, ориентаций, экранов и путей: такая комбинация может увеличиваться без пропорционального роста обнаруживаемых дефектов. Вместо этого выберите состояния, которые меняют компоновку, а затем назначьте им сценарии с высокой пользовательской или бизнес-критичностью.
| Тип проверки | Что включить в матрицу | Что зафиксировать |
|---|---|---|
| Сложенное состояние | Основной экран и критичный путь, если интерфейс использует компактную компоновку | Доступность главных действий, сохранение введённых данных |
| Раскрытое состояние | Те же важные экраны, если дополнительное пространство меняет расположение элементов | Видимость содержимого, корректность перехода и отсутствие перекрытий |
| Изменение ориентации или размера | Только если приложение поддерживает и использует соответствующее изменение | Сохранение контекста, выбранного раздела и состояния операции |
| Проверка на физическом устройстве | Сценарии, где поведение важно подтвердить вне симулятора | Модель устройства, шаги проверки, результат и известные ограничения |
| Материалы публикации | Отдельная процедура проверки скриншотов и данных публикации | Соответствие требованиям App Store Connect, без подмены CI-результата |
Для каждого пункта матрицы запишите четыре вещи: экран или пользовательский путь, начальное состояние, действие и ожидаемое наблюдаемое поведение. Например, формулировка «проверить раскрытый экран» недостаточна. Полезнее указать, что при открытии формы и переходе к подтверждению элементы управления остаются доступными, данные сохраняются, а возврат приводит пользователя к ожидаемому шагу. Конкретный тест зависит от реализации приложения — нельзя считать, что один сценарий подходит всем продуктам.
Проверяемый список для утверждения матрицы
- [ ] Для каждой выбранной конфигурации указан риск, который она должна выявить.
- [ ] Включены сложенное и раскрытое состояния, если они меняют интерфейс используемых приложением путей.
- [ ] Для критичного экрана задано конкретное действие и ожидаемый результат, а не только визуальное открытие.
- [ ] Отдельно помечены проверки, которые выполняются вручную в Device Hub, и тесты, автоматически запускаемые CI.
- [ ] В CI зафиксированы Xcode, целевой симулятор, схема и место хранения результата.
- [ ] Для сбоя сохраняются данные, по которым QA и разработчик могут воспроизвести проблему.
- [ ] Обосновано, какие риски требуют дополнительной проверки на физическом устройстве.
- [ ] Скриншоты App Store проверяются отдельным процессом и не засчитываются как доказательство прохождения регрессии.
Ответы на вопросы, возникающие при выборе матрицы
Как выбрать состояния, если приложение использует несколько компоновок?
Сопоставьте состояния не с полным перечнем экранов, а с местами, где реально меняются размеры, положение или доступность элементов. Если один и тот же критичный путь проходит через компактный и расширенный интерфейсы, включите оба варианта. Для экранов без значимых различий достаточно более ограниченной проверки, если это обосновано анализом риска и подтверждено командой.
Может ли ручная проверка в Device Hub считаться автоматическим тестом?
Нет, если сотрудник переключает состояние и оценивает экран вручную, а CI не выполняет воспроизводимые шаги и не проверяет результат. Ручная проверка остаётся ценной для исследования компоновки и поиска неожиданного поведения. Чтобы сделать сценарий частью автоматического gate, его нужно реализовать в тестовом наборе, запускать в утверждённой среде и сохранять результаты каждого запуска.
Что должно произойти, если тест не может переключить состояние?
Сбой управления состоянием нельзя записывать как успешную проверку интерфейса. Разделите результат на отдельные этапы: подготовка симулятора, выполнение тестового шага и проверка ожидаемого поведения. Если доступный способ автоматизации не позволяет надёжно воспроизвести нужное изменение, зафиксируйте это как ограничение и назначьте ручную проверку либо исследуйте альтернативный сценарий, не скрывая пробел в отчёте.
Зачем повторять проверку на физическом устройстве, если симуляторный тест прошёл?
Потому что симулятор подтверждает только то поведение, которое проверяет созданный сценарий в симулируемой среде. Если релевантный риск связан с реальным устройством, особенностями взаимодействия или не покрыт автоматизацией, назначьте отдельную физическую проверку. Её объём должен определяться критичностью функции и результатами тестирования, а не предположением, что прохождение симулятора гарантирует идентичное поведение на устройстве.
Для выпуска и безопасности: определить доказательства и условия допуска
Выпускной gate должен ссылаться на результат, который можно повторно проверить: версию сборки, версию Xcode, цель симулятора, схему, сценарии и отчёт. Если для конкретного риска назначено физическое тестирование, к решению о выпуске добавляют его результат и ответственную роль. Отсутствие отчёта следует считать отсутствием подтверждения, а не молчаливым успешным прохождением.
Разделите решения, которые иногда ошибочно объединяют:
- автоматические тесты интерфейса могут быть блокирующим условием, если проверка повторяема и команда определила критерий отказа;
- ручные проверки могут быть обязательными для выпуска, но их статус и подтверждение должны быть отдельными от автоматического результата;
- проверка скриншотов и других материалов публикации относится к подготовке App Store, а не к доказательству того, что регрессионный CI прошёл;
- разрешение на производственный выпуск остаётся отдельным решением с владельцем и установленными правилами.
Для каждого исключения укажите причину, владельца, срок пересмотра и последствие для выпуска. При нестабильном тесте не отключайте gate без записи: сначала определите, падает ли инфраструктура, тест или приложение, затем выберите временный ручной контроль либо откат изменения. Это позволяет не выдавать неполную проверку за одобренную.
Apple описывает средства проверки состояния и адаптации интерфейса в техническом разборе для iPhone Duo. Это полезная основа для проектирования сценариев, но предложенная здесь матрица — рекомендация по корпоративной приёмке, а не обязательный стандарт Apple. Команда должна подтверждать совместимость и выпускные критерии собственными результатами.
Если для матрицы требуются постоянные запуски симулятора, существующая инфраструктура на личных или перегруженных компьютерах может затруднить воспроизводимость: среда доступна неравномерно, настройки расходятся, а разбор падения зависит от того, кто запускал проверку. Для регулярной командной линии CI удалённый Mac может быть удобнее как выделенная среда выполнения и проверки. При этом аренда не заменяет собственный физический парк там, где необходимы реальные устройства или стабильная долгосрочная нагрузка. До решения о переносе проверьте фактические условия среды и доступные варианты на страницах тарифов RUVCLOUD и оформления заказа; не следует считать доступность конкретной конфигурации или результат тестирования гарантированными без отдельного подтверждения.