sonyps4.ru

Тестирование ios приложений на windows. Тестирование приложений IOS через TestFlight

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

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

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

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

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

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

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

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

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

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

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

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

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

В этой статье я хочу рассказать о тестировании 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 отличное средство проверки и отчетности для покупателей и продавцов.».

– первая мобильная операционная система, для которой Apple стала выпускать публичные бета-версии. Теперь любой желающий может лично ознакомиться со всеми новыми функциями прошивки и оказать помощь Apple в ее тестировании.

Вконтакте

Тестирование бета-версии предполагает ее загрузку и установку на iPhone или iPad. Этот процесс нельзя назвать сложным, однако он немного непривычен. Пользователям, желающим лично опробовать новую тестируемую версию iOS beta, мы расскажем, как это сделать.

1 . Откройте браузер Safari на iPhone или iPad и нажмите эту ссылку (зеркало) , чтобы загрузить профиль зарегистрированного разработчика.

2. В появишемся всплывающем окне выберите Разрешить .

3. Нажмите iPhone и подтвердите установку профиля для разработчиков на свой iPhone или iPad.

4 . Перезагрузите iOS-устройство.

5. После перезагрузки откройте Настройки и перейдите по пути Основные Обновление ПО . iOS 12 станет доступна для загрузки и установки. На устройстве должно быть не менее 2 ГБ свободного места.

6 . Нажмите кнопку «Загрузить и установить » и дождитесь установки iOS 12 на iPhone или iPad.

Как зарегистрировать учетную запись участника Программы публичного бета-тестирования iOS 12 (начнет действовать в июле 2018 года)

Участникам программы бета-тестирования macOS повторно регистрироваться для загрузки iOS 12 бета не нужно – можно воспользоваться тем же . Пользователи, ранее не участвовавшие в программе, должны зарегистрироваться с помощью Apple ID. Для этого необходимо:

2 . Нажать на кнопку iOS;

3 . Нажать на кнопку «Загрузить профиль» ;

4 . В появившемся всплывающем окне нажать на кнопку «Разрешить» ;

5 . Выбрать iPhone (запрос появится в случае, если Ваш iPhone находится в паре с Apple Watch)

6 . Нажать «Установить» .

7

8 . Нажать на кнопку «Установить », подтверждая условия пользования.

9 . Нажать Перезагрузить для перезагрузки устройства.

Как установить публичную бета-версию iOS 12

После загрузки ОС появится уведомление о готовности к установке. Для инсталляции необходимо:

1 . Открыть приложение «Настройки », выбрать «Основные », а затем нажать на пункт «Обновление ПО »;

2 . Выбрать «Установить »;

3 . Ввести пароль экрана блокировки;

4 . Подтвердить согласие с условиями пользования, нажав «Принять ».

Устройство перезагрузится, после чего будет установлена последняя актуальная бета-версия iOS.

Как откатиться на официальную ОС, если работа тестовой версии iOS вас не устраивает

В случае, если по каким-либо причинам бета-версия iOS вам не понравится, можно откатиться до официальной iOS .

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

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

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

Этап 1

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

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

Этап 2

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

Этап 3

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

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

Этап 4

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

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



Загрузка...