Тестирование ios. Аккаунт в песочнице

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

Тестовое приложение

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

Эти инструменты очень похожи, они оба позволяют писать тесты на Cucumber"е и оба реализованы на Ruby, разница лишь в функционале.
В одном из проектов мне пришлось мигрировать с Frank"а, я просто запустил тесты с использованием Calabash"а и все они прошли почти сразу, пришлось только немного изменить пару шагов.

Сейчас я остановился на Calabash. Думаю что многие iOS разработчики не знакомы с Cucumber, потому и хочу немного рассказать как он работает и как писать тесты.

Cucumber
Я ни в коем случае не претендую на верность этого описания, просто опишу как я понимаю его работу, и надеюсь это описание внесет некоторую ясность и поможет стартануть тем кто все еще не решился его использовать.

Итак, в Cucumber"е есть несколько главных «сущностей»:

Feature - это набор нескольких связанных по логике сценариев (или не связанных, уж как программист решит). Она состоит из названия и краткого, информативного описания. К примеру:

Feature: Manage Orders As a User I should be able to manage Orders through iOS application
Scenario - конкретный сценарий описывающий некоторый use case. Состоит из имени и набора шагов.

Scenario: Create Order #steps
Step - описание конкретного действия пользователя (нажатие на кнопку/ссылку, ввод текста, свайп и.т.п).

When I fill in "Title" with "FuuBar" And I touch "Save" button Then I should see alert view titled "Saved successully"
Step definition - реализация конкретного действия пользователя. Выглядит она примерно так:

When /^I touch "([^"]*)" button$/ do |button_text| touch("button marked:#{button_text}") end

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

Давайте добавим Calabash в наш проект.
Перейдите в деректорию с проектом и выполните следующие команды:

Gem install calabash-cucumber calabash-ios setup calabash-ios gen
Calabash добавил к нашему проекту еще один таргет, по умолчанию он имеет шаблон project_name-cal. Нам необходимо выполнить build для этой цели.
Теперь мы почти готовы запустить тесты.
После генерации выводится подсказка как запустить тесты

DEVICE=iphone OS=ios5 cucumber

Но на выполнении этой команды все валится, т.к. calabash не знает где находится наше приложение. Для этого необходимо указать еще одну переменную - APP_BUNDLE_PATH. По умолчанию Xcode 4.x хранит приложения по адресу

~/Library/Application\ Support/iPhone\ Simulator/x.x/Applications/hash/app_name.app

Где x.x - версия iOS, а hash - сгенерированный Xcode"ом уникальный ключ для приложения.
Попробуйте найти свой.app и выполнить следующее

APP_BUNDLE_PATH="~/Library/Application\ Support/iPhone\ Simulator/x.x/Applications/hash/your_app-cal.app" DEVICE=iphone OS=ios5 cucumber
Теперь все должно пройти хорошо.

Guard
Такой способ не очень удобен, но он вполне оправдан, т.к. calabash не может знать где лежит наше приложение. И тут нам на помощь приходит Guard.
Guard - это гем, который следит за файловой системой и при изменении файлов, за которыми он следит выполняет какие-либо операции. Список guard"ов довольно обширный, но нам нужен guard-calabash-ios .

Для его установки и использования необходимо выполнить следующее:

Gem install guard-calabash-ios guard init calabash-ios
Это создаст Guardfile - файл в котором описаны свойства необходимые guard"у и файлы за которыми нужно следить. (Детальные настройки можно найти на гитхабе . )
Последний штрих - откройте настройки Xcode и установите Derived Data как Relative. Теперь Xcode будет хранить сборки в директории с проектом, что позволит скрипту из guard-calabash-ios найти нужный нам APP_BUNDLE_PATH автоматически.
Теперь для прогона тестов необходимо выполнить в папке с проектом следующее.

Пишем тесты
Теперь когда все работает более удобно мы можем приступить к написанию наших UI-тестов.

Calabash создал папку features, в которой находятся наши сценарии и реализация шагов.
Давайте удостоверимся что наш калькулятор позволит пользователю сложить или вычесть два числа, и показать верный результат в alert view.

Отредактируйте файл my_first.feature

Feature: Add numbers As a User I should be able to perform calculations Scenario: Add numbers When I fill in "left" with "15" And I fill in "right" with "10" And I touch "add" Then I should see "25"
Если у вас все еще запущен guard, то при сохранении файла он автоматически запустит тесты, причем будет тестировать только измененный файл. Это очень удобно если у вас есть несколько файлов с фичами, т.к. не приходится после каждой строчки ждать пока прогонятся все тесты.

Итак, все тесты провалились, что логично.

Давайте добавим UI.

Для доступа к контролам из calabash"а нужно задать им accessibility label. Кроме того к кнопкам можно обращаться по надписи на них, а к текстовым полям по плэйсхолдеру.

Я сделал примитивный интерфейс: два текстовых поля и две кнопки в navigation bar"е, "+" и "-".
После того как мы добавили контролы на наш экран нам нужно выполнить следующие действия:

1. Добавить outlet"ы для кнопок и текстовых полей
2. Задать плэйсхолдеры нашим текстовым полям «left» и «right»
3. Задать accessibility label"ы для кнопок

Self.addButton.accessibilityLabel = @"add"; self.subtractButton.accessibilityLabel = @"subtract";
4. Повесить обработчики на наши кнопки

- (IBAction)addButtonTapped:(id)sender { CalculationManager *calculationManager = ; NSInteger left = ; NSInteger right = ; ]; } - (IBAction)subtractButtonTapped:(id)sender { CalculationManager *calculationManager = ; NSInteger left = ; NSInteger right = ; ]; }

5. Добавить метод для отображения результата

- (void)showResult:(NSInteger)result { NSString *resultString = ; [[[ initWithTitle:@"Result" message:resultString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show]; }

6. Перейдите в терминал с запущенным guard"ом и нажмите Enter, это запустит все ваши сценарии, у нас он один и если вы все сделали правильно, то тесты пройдут успешно.

Теперь напишем тест для вычитания.

Scenario: Subtract numbers When I subtract 15 from 38 Then I should see "23" as result
После запуска Cucumber сообщит что не знает таких шагов, и предложит их реализовать.
Скопируем и немного подредактируем то что он вывел в файл calabash_steps.rb (project_dir/features/steps_definitions/)

When /^I subtract (\d+) from (\d+)$/ do |subtrahend, minuend| step %{I fill in "left" with "#{minuend.to_s}"} step %{I fill in "right" with "#{subtrahend.to_s}"} step %{I touch "subtract"} end Then /^I should see "(.*?)" as result$/ do |result| res = query("view:"UIAlertView"", "message").first res.should == result end

В реальной жизни мы скорее всего использовали бы теже методы что и в первом сценарии, но здесь я хотел показать как выглядят step definitions, как вызывать другие шаги из реализации шагов(step %{}), как добраться до какого-либо значения (query) и как писать assert (should).

На этом по тестам все.

Заключение

Описанные тесты и приложение выглядят совершенно нелепо, но я ставил своей целью описать на этом примере основные возможности, которые позволят сразу начать использовать TDD/BDD, надеюсь что это у меня вышло и для статья окажется полезной.

В качестве логического завершения еще раз приведу ссылки.

А если нужно проверить весь смартфон? А если не iPhone, а Android? Есть вариант!

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

Зачем проводить диагностику смартфона?

TestM - новое, и очень перспективное приложение для проверки смартфонов на iOS (App Store) или Android (Google Play).
Такое приложение должно было появиться уже давно. Мелкие неисправности и развивающийся вторичный рынок смартфонов требовал быстрого и доступного для широких масс средства диагностики. Именно им и стал TestM.

С помощью TestM ты можешь:

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

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


А сервис - вечная лотерея: редкий мастер упустит возможности заработать. Смартфон попадет в ремонт, даже если неисправность отсутствует. Хотя, поверьте - это не худшее, что может произойти. А TestM поможет сохранить время, деньги и нервы.

Как TestM заменяет сервисный центр

На первый взгляд может показаться, что приложений для проверок и тестирования смартфонов сотни. Чаще они обращаются к компонентам смартфона напрямую, используя информацию с них без обработки. Есть сигнал с микрофона? Отлично, работает. Датчики отправляют данные? Работоспособны, все хорошо.


В лучшем случае Antutu или Geekbench помогут выяснить, не перегревается ли смартфон, нет ли битых пикселей на экране. Еще покажут общую конфигурацию и производительность в попугаях. В лучшем случае (при наличии рут-прав) покажут прямой набор данных с датчиков, без обработки. В которых разберется только профессиональный сервисный работник.

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


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

  • экрана,
  • разговорного динамика,
  • датчика приближения и акселерометра,
  • камеры,
  • микрофона.


Полный набор тестовых упражнений для смартфона в TestM умеет намного больше. Можно проверить все типы датчиков, сетевые интерфейсы (включая GPS), работу аппаратных клавиш и вибромотора, компонентов камеры и работу зарядного устройства.


Я рекомендую делать именно полный - больше проверок, выше надежность.

Знания не нужны - TestM расскажет, что сделать

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


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


Следующий тест просит прослушать цифры, проигрываемые через основной динамик, и ввести из в специальную форму. Наконец, третья часть теста запускает воспроизведение монофонических частот, которое одновременно записывается микрофоном тестируемого устройства.


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


Даже фотографии - и те анализируются TestM с помощью специальных алгоритмов: нет ли излишних шумов, нет ли в изображении битых пикселей?


Отдельный, и очень большой плюс этого приложения - проверки тачскрина и работы 3D Touch. Без этой утилиты проверить их работу задача непростая, ох непростая.

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


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

После прохождения тестирования, утилита подскажет адреса ближайших сервисных центров и покажет их расположение на карте.

Чего не хватает TestM

Я провел полное тестирование смартфона и проанализировал качество проверки смартфона с помощью TestM. Как и ожидалось, практически все тесты позволяют безошибочно утверждать об исправности компонентов устройства.


Небольшую смекалку все же применить придется. TestM не использует вспышку и датчик освещенности в проверке камеры, поэтому ее необходимо проверять при хорошем освещении. Вспышка и датчики - отдельные проверки, разделение необходимо для точности.


Аналогичная ситуация может возникнуть при тестировании интерфейсов: стоит проверить, включены ли они. И правильно слушать подсказки, иначе ничего не получится!

Еще одно замечание: «объем» аккумулятора в TestM оценивается приблизительно. Для точной проверки нужно и несколько циклов зарядки-разрядки.

Вместо выводов. Приложение, которое нужно всем

Шон Телл (Shone Tell), соучредитель TestM, считает, что эта утилита поможет упростит продажу и обмен на вторичном рынке смартфонов:

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

Всем привет. Раньше выход бета-версий iOS считался чуть ли не праздником для всех гиков. Каждая следующая обсуждалась, мусолилась в СМИ. Люди находили мельчайшие изменения как в функционале, так и в дизайне. Поставить её могли лишь избранные. Затем появилась возможность ставить публичные бета-версии официально у всех пользователей. Это с энтузиазмом восприняли многие пользователи.

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

Ну ладно iOS - поставил на зарядку да обновил, но когда OS X начинает обновляться каждую неделю?! А это - лишняя перезагрузка ноутбука, надоедливые каждодневные оповещения о необходимости обновления…

Как выйти из программы бета-тестирования OS X?

Заходим в приложение «Системные настройки». Там выбираем App Store.

Напротив надписи «Ваш компьютер настроен на получение обновлений бета-версий ПО» жмите кнопку Изменить.

В новом окне нажмите «Не показывать обновления бета-версий ПО».

Всё. Теперь в Mac App Store вы будете получать только официальные релизы.

Как выйти из программы бета-тестирования iOS?

С iOS всё сложнее. Apple в своей официальной справке предлагает в режиме восстановления накатить резервную копию, которая была сделана до вступления в программу бета-тестирования.

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

Поэтому единственный адекватный способ - полностью покинуть программу бета-тестирования.

Логиньтесь с вашим Apple ID и паролем.

При разработке мобильных iOS приложений в среде XCode запуск и тестирование происходит на симуляторе. Однако каждый профессиональный разработчик вам скажет, что окончательную отладку нужно производить на реальных устройствах. Причем лучше на нескольких различных устройствах. На iPhone 5, на iPhone 6, на различных версиях iPad и iPod. Однако для этого политика компании Apple заставляет приобрести аккаунт разработчика. Он стоит $99 и для начальных шагов в программировании не всегда оправданы эти затраты. И вот наконец, просьбы разработчиков были услышаны и появился способ легального запуска своих приложений на реальных устройствах и этот способ абсолютно бесплатный.

Были различные варианты решения этой проблемы от установки на устройство Jailbreak до недорогого варианта добавления UDID устройства к реально существующему аккаунту разработчика. (Последний способ стоит 300 руб). Но как написано выше с выходом XCode 7 эта проблема была решена.

Так что же нужно для запуска своих приложений на реальном устройстве?

Все что вам нужно, это Apple ID! Больше ничего не нужно.

Подключение устройства

Подключите iPhone, Ipod Touch, или IPad к вашему Mac с помощью кабеля USB кабеля. В меню Xcode зайдите Window → Devices , чтобы открыть список устройств. Окно выглядит следующим образом (я использую iPad Air):

В левой панели окна Xcode находится список устройств, которые могут быть использованы для запуска разработанных приложений. Нажмите на изображение вашего устройства, чтобы выбрать его. Если устройство используется впервые вместе с Xcode, вы увидите сообщение что-то вроде, «“iPad is not paired with your computer. «

Для того чтобы связать устройство с Xcode вам нужно разблокировать устройство (Slide to unlock). После разблокировки, на экране устройства появится сообщение с просьбой доверять этому компьютеру. Нажмите «Разрешить» чтобы продолжить. Теперь Xcode выведет страницу, на которой напишет что позволяет использовать устройство для тестирования.

Дайте ему несколько минут — если процесс занимает слишком много времени, возможно потребуется отсоединить устройство и подключить его снова. Есть вероятность, что выскочит сообщение об ошибке: «An error was encountered while enabling development on this device. » Потребуется отключение устройства и перезагрузка его. Также перезапустите Xcode, прежде чем вы снова подключите устройство.

Так должно выглядеть окно с сопряженным устройством:

Настройка AppleID

Теперь, когда устройство сопряжено с компьютером, нужно связать ваш AppleID с Xcode. Можно использовать тот же идентификатор AppleID, что вы уже используете с Itunes и вашим устройством, однако, если вы разрабатываете корпоративное iOS приложение, то можете создать новый AppleID, чтобы разделить процессы разработки. Конечно, если у вас уже есть оплаченный аккаунт разработчика вы должны использовать именно его

Откройте меню Xcode -> Preferences -> Accounts :

Нажмите кнопку «+» внизу и выберите «Add Apple ID «. Xcode попросит логин и пароль от AppleID. Введите их и нажмите « Add« . Xcode проверит ваши данные и добавит их к списку аккаунтов.

Примечание : возможно Xcode не сможет использовать ваш Apple ID при условии, если он был ранее был использован как аккаунт разработчика, срок действия которого в настоящее время истек. Простейшим решением в этом случае является создание нового Apple ID. Это бесплатно и займет всего несколько минут. https://appleid.apple.com

Настройка проекта XCode

Вы все еще должны указать Xcode использовать эту учетную запись при создании вашего приложения. Перейдите к экрану настроек проекта и на вкладке General нажмите на Team , чтобы выбрать ваш Apple ID.

Ниже поля выбора команды вы видите предупреждение, «No code signing identities found » или «No matching provisioning profiles found «. Не лишним будет знать, что означают эти предупреждения. Для того чтобы Xcode мог запустить приложение на вашем iPhone, iPad или iPod, приложение должно быть подписано цифровой подписью с сертификатом на разработку (Development Certificate ). Сертификат является электронным документом, который идентифицирует вас как разработчика iOS приложений и действует только в течение ограниченного периода времени. Приложения, которые вы хотите представить в App Store должен быть подписаны другим сертификатом «Distribution Certificat» . Для использования Distribution Certificat необходимо быть членом платной программы разработчиков, однако использование сертификата разработки (Development Certificate ) является бесплатным. В дополнение к действующему сертификату также необходим так называемый профиль обеспечения (Provisioning Profile ) для каждого приложения которое вы разрабатываете. Xcode использует эти документы чтобы подписать приложение для запуска на вашем устройстве.

Специфика данных документов на первоначальных этапах разработки не имеет значения. Просто примите, что вам нужен Provisioning Profile или приложение не будет работать на вашем устройстве. Создание сертификатов и Provisioning Profile , в XCode 7 это очень простая задача!

Нажмите кнопку Fix Issue . Нужно немного подождать пока Xcode автоматически регистрирует устройство с вашей учетной записью, создает новый сертификат разработки, загружает и устанавливает Provisioning Profile на ваше устройство. Раньше вы должны были бы сделать это все вручную, но теперь Xcode 7 берет всю работу на себя. В этот момент возможно вы увидите следующее сообщение об ошибке:

Идентификатор пакета Bundle Identifier — это идентификатор приложения и он должен быть уникальным. Если какое либо другое другое приложение уже использует этот идентификатор, то вы не можете его использовать.

Поэтому для 100% уникальности следует указывать собственное доменное имя для Bundle ID , например ru.proswift.TestApp . Исправить эту ошибку легко: измените Bundle Identifier и повторите попытку.

Также возможно вы получите эту ошибку:

Xcode должен знать об устройстве на котором вы собираетесь запустить приложение. Вот почему мы начали именно с подключения устройства. Еще раз проверьте, что ваш iPhone или iPad по-прежнему подключен к Mac, и что ваше устройство есть списке Devices. У меня это окно выглядит так:

В основном окне XCode еще раз выберете ваше устройство и нажмите кнопку Fix Issue и предупреждение должно исчезнуть.

Настройка связки ключей

Все настроено и готово к работе. Нажмите Run , чтобы скомпилировать и запустить приложение. В этот момент вы можете получить всплывающее окно с вопросом «codesign wants to sign using key … in your keychain» . Если вышло это сообщение, нажмите Always Allow — т.е. разрешать всегда. Это сообщение говорит о том, что Xcode пытается использовать новый сертификат разработки, который вы только что создали, но просит дать ему разрешение для этого.

Ваше приложение заработало на устройстве без аккаунта разработчика и без Jailbreak? Потрясающие! Если нет, то читайте дальше …

Возможные проблемы и их решение

Есть несколько ошибок, которые могут возникнуть при попытке запуска своего iOS приложения на реальном устройстве, особенно если вы никогда не делали этого раньше. Так что не паникуйте, если вы столкнетесь с проблемами.

Устройство не подключено.

Как ни странно это самая распространенная ошибка, поэтому я напишу о ней в третий раз в этой статье. Убедитесь, что ваш iPhone, iPod Touch, или iPad подключены к Mac. Устройство должны быть списке устройств Xcode, и на нем не должно быть желтого значка предупреждения, о том что устройство не доверяет компьтеру.

Подозрительный не одобренный Apple разработчик.

Если XCode выдаст такое сообщение, а на устройстве выйдет сообщение с текстом «Untrusted Developer. Your device management settings do not allow using apps from developer «, не нужно втираться в доверие к Apple:-). Для решения этой проблемы откройте на устройстве Настройки -> Основные -> Управление Устройством . Выберете профиль вашего Apple ID и вы увидите список приложений на устройстве, которые нужно перевести в разряд «Проверенные» . Попробуйте снова запустить приложение.

Устройство заблокировано.

Если на устройстве установлен пароль, то вы можете получить это предупреждение:

Приложение не будет работать если устройство заблокировано. Для решения нужно разблокировать устройство и запустить компиляцию еще раз.

Надеюсь данная информация будет вам полезна. По себе знаю, что начиная разрабатывать iOS приложения, разработчики сталкиваются с проблемой тестирования своих приложений на реальных устройствах. А несправедливость в виде $99 никак не греет душу брата программиста. И даже если разработчик решается на Jaibreak, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.

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

Вконтакте

В отличии от тестирования приложений для Android, где тестовое приложение представляет собой установочный файл, с IOS дела обстоят несколько сложнее. Подход централизованного тестирования является фактически единственным возможным методом для быстрой доставки приложения от разработчика до тестировщика (или заказчика).

Тестирование проводится при помощи приложения TestFlight, которое обеспечивает доставку и установку тестовых программ. Время тестовой версии с момента ее отгрузки составляет 60 дней, после чего ожидается загрузка обновленной версии. Если новая версия не отгружена, то тестирование прекращается.

Тестирование разделяется за внутреннее и внешнее. В обоих случаях, составляется список тестировщиков. В случае внешнего тестирования, приложение должно пройти дополнительную «beta»-проверку. Из практики, данная проверка проводится от 1 до 2-х дней. Внутренняя проверка рассчитана на сотрудников компании, которые доверяют разработчикам. Мы склонны применять именно внутреннее тестирование из-за его быстрой динамики.

Этап 1

Для тестирования Вам потребуется знать AppleID, с которым работает устройство. Для просмотра активного AppleID Вам необходимо зайти в Настройки -> iTunes Store и App Store

Список адресов AppleID необходимо передать разработчикам (или организатору тестирования). Внимание! требуется только AppleID и желательно Фамилия и имя, пароль сообщать НЕ требуется. Если мы являемся Вашими разработчиками, то отправьте нам список через форму внизу статьи или на почту dev@сайт

Этап 2

После регистрации Вашего AppleID, на почту Вам придет письмо примерно следующего содержания:

Этап 3

Для ускорения процесса, Вы можете сообщить разработчику о том, что все тестировщики уже подтвердил свое участие (через форму в конце статьи или на почту dev@сайт)

Теперь Вам необходимо установить приложение из AppStore.

Этап 4

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

Перейдите по приглашению из письма и Вы установите целевое приложение. С этого момента Вы можете начинать тестирование.