- Вступление
- Что ещё почитать перед сном:
- Apple Developer Program
- Добавить учетную запись разработчика
- 3dmark
- Android
- Geekbench 3
- Page object и с чем его едят
- Weinre
- Быстрее, выше, сильнее, или тестирование производительности
- Дизайн и тестирование по скриншотам
- Как протестировать свой ipad на производительность | всё об ipad
- Как это работает?
- О тыкве и огурцах
- Планы и перспективы
- Программа для измерения производительности iphone и ipad | яблык
- Симулятор ios
- Тестирование миграции
- Удалённая отладка
- Удалённое тестирование
- Управление тестовым стендом
- Функциональное тестирование
- Шаг 1: зарегистрируйтесь как разработчик
- Шаг 1: создайте запрос на подпись сертификата
- Шаг 2. создайте сертификат разработки
- Шаг 2: создать проект
- Шаг 3: добавить устройство
- Шаг 3: добавить учетную запись
- Шаг 4. создание идентификатора приложения
- Шаг 4: команда обновления
- Шаг 5. создание профиля обеспечения
- Шаг 5: доверьтесь разработчику
- Шаг 6: настройте проект
- Шаг 7: сборка и запуск
- Эмулятор android
- Эмуляторы и симуляторы
- Заключение
- Вывод
Вступление
В 2021 году Apple обновила свое предложение для разработчиков. В частности, стоит отметить два изменения.
В прошлом у Apple были отдельные программы для разработки под OS X, iOS и Safari. Это больше не так. С выпуском watchOS и tvOS Apple объединила свои существующие программы для разработчиков в одну программу — Apple Developer Program .
Это означает, что вам больше не нужно регистрироваться в нескольких программах, если вы хотите разрабатывать для OS X и iOS. Если вы зарегистрируетесь в Apple Developer Program, вы сможете разрабатывать для OS X, iOS, watchOS, tvOS и Safari.
Еще одно существенное изменение связано с бесплатным предложением Apple для разработчиков. В прошлом можно было создать бесплатный аккаунт разработчика. Однако с такой учетной записью вы не смогли развернуть приложения iOS на физическом устройстве.
Это ограничение было снято. Любой человек с Apple ID может начать разработку для платформ Apple и может развертывать приложения на физических устройствах. Это очень хорошая новость для всех, кто заинтересован в разработке для одной из платформ Apple.
Если вы планируете опубликовать приложение в одном из магазинов приложений Apple, вам необходимо зарегистрироваться в программе Apple для разработчиков. Это то, что мы обсуждали в предыдущей статье этой серии.
Что ещё почитать перед сном:
“Mobile Emulators and Simulators: The Ultimate Guide,” Maximiliano Firtman“Introduction to Chrome Developer Tools, Part One,” Seth Ladd, HTML5 Rocks“About Safari Web Inspector,” Safari Developer Library, Apple“Enable Remote Debugging With Safari Web Inspector in iOS 6” Dave Ackerman, Modus Create“Remote Debugging on Android With Chrome,” Chrome Developer Tools“Weinre as Remote Debugger,” Mozilla Developer Network
Apple Developer Program
Если вы решили зарегистрироваться в Программе разработчика Apple, то шаги, которые необходимо предпринять для подготовки приложения, отличаются. Положительным моментом является то, что ограничения, налагаемые на бесплатный аккаунт разработчика, отсутствуют для участников программы Apple Developer Program. Первое, что вам нужно сделать, это создать сертификат разработки.
Добавить учетную запись разработчика
Что касается предоставления приложений, XCode может сделать некоторые тяжелые работы для вас. Чтобы это работало, вам нужно добавить свою учетную запись разработчика в Xcode. Вы можете добавить свою учетную запись разработчика, выбрав Preferences … в меню Xcode и открыв вкладку Accounts .
Нажмите кнопку «плюс» в левом нижнем углу и выберите « Добавить Apple ID …» из списка параметров. Введите свои учетные данные и нажмите Добавить .
Добавив вашу учетную запись разработчика в XCode, она может общаться с порталом для разработчиков от вашего имени. Это делает некоторые задачи намного проще.
3dmark
Утилита 3DMark известна, пожалуй, всем заядлым геймерам. Программа умеет имитировать реальный игровой процесс на ПК, позволяя тем самым грамотно нагрузить всю начинку компьютера и определить его реальную производительность.
Android
В случае с Андроидом инструменты удалённой отладки позволяют работать с десктопа при помощи Chrome’s Developer Tools. Кроме того, инструменты эти опять-таки кросс-платформенные.
Сначала, на телефоне пройдите в “Settings” → “About Phone” (для Android 4.4 ), или “Settings” → “About Tablet”. Затем нужно нажать на “Build Number” семь раз. Кроме шуток. После этого вы увидите сообщение насчёт разработчика.
Затем обратно в основных настройках “Developer Options” нужен пункт “USB debugging”.
В адресной строке браузера Chrome наберите about:inspect. Разрешите “Discover USB devices”, и вы увидите в меню своё МУ.
Также вы должны увидеть открытые закладки в мобильном браузере. Выберите нужную, и вам будут доступны:
DOM Inspector,Сетевая панель с внешними ресурсамиПанель исходного кода, для отладки JavaScriptКонсоль JavaScript
Подробности можно найти в тьюториале “Introduction to Chrome Developer Tools, Part One.”
Также можно заниматься удалённой отладкой в эмуляторе Андроида.
Geekbench 3
Geekbench 3 – еще один популярный кросс-платформенный бенчмарк. Утилита создает искусственные, но реалистичные условия загрузки аппаратной платформы устройства для выявления истинных возможностей производительности.
Отличительная особенность программы – тест процессора. Бенчмарк не только нагружает каждое ядро чипсета в отдельности, но и демонстрирует реальные результаты при одноядерном и многоядерном режимах работы.
Page object и с чем его едят
Page Object — термин, пришедший из сферы UI-тестирования web-приложений. Применительно к iOS иногда встречается название Screen Object. Будем использовать первый вариант как наиболее общеупотребительный.
Page Object — это паттерн проектирования, который широко используется в автоматизированном тестировании и позволяет отделять логику выполнения тестов от их реализации. Page Object моделирует экраны (или страницы) тестируемого приложения в качестве объектов.
В результате мы получаем набор классов, каждый из которых отвечает за работу с отдельным экраном приложения. Такой подход значительно уменьшает объем повторяющегося кода, потому что одни и те же объекты экранов можно использовать в различных тестах.
Методы экранных классов можно разбить на три логические части:
- Locators — возвращают локаторы, по которым Calabash находит нужные элементы интерфейса
- Actions — реализуют все возможные пользовательские действия на экране
- Assertions — реализуют проверки на экране
Ниже приведен отрывок кода для класса
CreateGroupChatScreen
require 'calabash-cucumber/ibase'
require_relative 'BaseScreen'
class CreateGroupChatScreen < BaseScreen
# Locators ******************************************************************** def title "UINavigationBar NavigationTitleView" end def back_button "view:'UINavigationBar' view:'MRButtonWithTintedImage' index:0" end def create_button "view:'UINavigationBar' view:'MRButtonWithTintedImage' index:1" end
# ...
# Actions ********************************************************************* # touch create button ant return ChatScreen def create mtouch(create_button) page(ChatScreen).await end # remove last member from members list def remove_selected mtouch(remove_button) self end # remove all members from members list def remove_all_selected until get_selected_members.empty? remove_selected end self end
# ...
# Assertions ****************************************************************** def check_selected_members(expected_members) actual_members=get_selected_members expected_members=expected_members.split(',') unless expected_members.empty? fail("Incorrect members list") unless actual_members.sort.eql?(expected_members.sort) self end def check_title(title) fail("Incorrect title") if get_title!=title self end def check_cl(cl) cl=cl.split(',') fail("Incorrect CL (actual - #{get_cl}, expected - #{cl})") unless get_cl.eql?(cl) self end
# ...
endПри реализации экранных классов надо обратить внимание на некоторые аспекты. Локаторы, используемые в приведенном выше примере, являются «хрупкими» и ненадежными, при изменении интерфейса они с большой долей вероятности перестанут работать. Поэтому мы в проекте назначаем каждому UI-элементу
accessibilityIdentifier
, уникальный в рамках приложения и однозначно идентифицирующий нужный элемент. Локаторы в этом случае приобретают такой вид и больше не боятся изменений UI:
def title "view accessibilityIdentifier:'conference_captionLabel'" end def back_button "view accessibilityIdentifier:'conference_backButton'" end def create_button "view accessibilityIdentifier:'conference_createButton'" end
Экранные классы наследуются от базового класса
BaseScreen
, который реализует общую функциональность для всех экранов (ввод в текстовые поля, нажатия с проверкой существования элемента и т.д.).
Все методы экранных классов возвращают указатели на Page Object. Если вызов метода не изменяет текущий экран, то возвращается self, в противном случае возвращается указатель на нужный Page Object. Такой подход позволяет записывать шаги сценария в удобном виде, последовательно вызывая нужные методы.
Then /^I invite contact "(.*)"/ do |contact| steps %Q{Given I go on "ContactsScreen"} @page = @page.show_all_contacts if @page.contact_exist?(contact) @page .chat(contact) .chat_info .invite else print("Contact #{contact} not exists") end
endWeinre
Если вам приходится отлаживать устройство с iOS на Windows, или Linux, или отлаживать устройство, работающее под Windows Phone или BlackBerry – попробуйте Weinre (web inspector remote). Работает везде.
Настройка weinre сложновата, т.к. его надо устанавливать и на сервере, и на странице. Сначала вам понадобится установить Node, а затем установить модуль Weinre:
npm install –g weinre
Затем запустите сервер отладки (подставляем ip-адрес компьютера):
weinre —boundHost 10.0.0.1
Затем проходим на localhost:8080 и копируем содержимое тега . Его нужно будет вставить на отлаживаемую страницу.
Быстрее, выше, сильнее, или тестирование производительности
Пользователь ожидает от мобильного приложения не только надежной работы без сбоев и широкого функционала, но и мгновенной реакции на его действия. Быстродействие и время отклика являются важными факторами повышения конкурентоспособности приложения. Поэтому контроль времени выполнения основных операций (таких как запуск приложения, время получения оффлайн-сообщений, отображение контакт-листа и т.д.) — насущная необходимость.
Автотесты производительности состоят из двух этапов:
- Прогон тестовых сценариев из Performance.feature, в котором собраны сценарии по выполнению тех действий, время выполнения которых мы хотим замерить. Каждый сценарий выполняется по 5 раз для минимизации случайных отклонений значений
- Сбор логов, поиск соответствующих метрик, усреднение значений и формирование отчета

Для формирования отчета написана библиотека, реализующая API для быстрого добавления новых значений в отчет. Для работы c html библиотека использует гем nokogiri.
Очевидно, что данный вид тестирования должен проводиться на физических устройствах. Фактически чтобы запустить тест на девайсе, а не на симуляторе, надо изменить UDID и добавить IP-адрес Wi-Fi-соединения.
Главным артефактом тестирования является отчет, по которому можно судить о динамике изменения тех или иных метрик. В случае превышения заданных лимитов происходит «разбор полетов» для выяснения причин ухудшения быстродействия.
Дизайн и тестирование по скриншотам
Тестирование приложения на основании сравнения скриншотов имеет свои преимущества и недостатки. С одной стороны, оно, помимо функциональных багов, выявляет все проблемы с дизайном, такие как, например, «съехавшие» кнопки, с другой — обладает рядом особенностей, ограничивающих полный переход на тестирование по скриншотам.
При наличии нескольких приложений и обширного ряда поддерживаемых устройств требуется огромная база эталонных скриншотов под все возможные разрешения экранов. Помимо этого, не всегда легко обеспечить требуемый вид приложения. Например, область экрана, на которой отображаются часы или качество связи, будет меняться на каждом конкретном прогоне.
В автотесты добавлен API, позволяющий выполнять проверки скриншотов приложения. Данный функционал реализован с помощью библиотеки ImageMagick и позволяет сравнить указанную область скриншота с эталоном, а также выполнить нечеткий поиск по шаблону.
Как протестировать свой ipad на производительность | всё об ipad
В давние времена, в начале 2000-х, я и все мои друзья собирали компьютеры самостоятельно. После перехода на ноутбуки, планшеты, игровые приставки в 2021-ом я забыл это чувство, когда читаешь прайс лист компаний, которые продают комплектующие и все детали в нём знаешь. Затем с закрытыми глазами я мог выбрать подходящий процессор, видеокарту, оперативку, корпус и т.п.
После покупки или апгрейда собранного “монстра” в обязательную программу входила проверка его через тест производительности 3D Mark. После получения результата можно было примерно понять, какие игры потянет компьютер и насколько он превосходит или уступает компьютеру твоего друга.
Измерять производительность iPad, iPhone или iPod – довольно бессмысленное занятие. Это устройства с заранее известными характеристиками. Достаточно взглянуть на какой-нибудь график, где представлен десяток современных моделей iДевайсов и увидеть место твоего устройства в иерархии гаджетов Apple. Возможно, имеет хоть какой-то смысл сравнивать с планшетами Android, да и то – эти цифры мало что скажут большинству пользователей.
Тем не менее в App Store есть приложения, которые протестируют ваш iPad, iPhone или iPod на производительность.
Geekbench 3
Приложение, которое после непродолжительных тестов выдаёт цифру производительности.
В тестах программы показаны два значения:
- Single-Core Score – производительность одного ядра
- Multi-Core Score – производительность при работе нескольких ядер (в случае с iPad Air, iPad Mini 2, 3, iPad Pro – это два ядра, у iPad Air 2 – 3 ядра)

Для сравнения есть специальная таблица. Из которой следует, что iPad Air больше, чем в два раза уступает iPad Pro.

Скачать Geekbench 3
Antutu
Графический тест родом из Китая. Приложение показывает специальные 3D ролики, которые тормозят на iPad Air, а затем выдаёт цифру, которую не с чем сравнить. Вот у меня цифра получилась – 66282. А у вас?

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

Скачать Antutu
3DMark Sling Shot Benchmark
Третий тест тоже показывает 3D ролики, специально созданные, чтобы “унизить” ваше устройство. На iPad Air опять тормоза… Снизу даже в прямом эфире приводится статистика из которой можно узнать, что мой планшет некоторые ролики тянет на скорости 4 кадра в секунду.

Это ж какой не оптимизированный движок используется для отображения в общем-то несложных эффектов?

В итоге iPad Air на iOS 10 в тесте Sling Shot выдал 1236 очков. А тест Sling Shot Extreme вообще не потянул – вылетает.
Из специальной таблицы, которая показывает средние значения, видно, что iPad Air расположился между iPad Mini 2,3 и iPod Touch 6-го поколения.

Скачать 3DMark Sling Shot Benchmark
Я со скепсисом отношусь ко всем этим тестам. Да, они помогают представить насколько мощнее тот или иной гаджет, но в целом это ничего не меняет. Я быстрее побегу в магазин за новым iPad не из-за результатов тестов, а если текущая модель меня перестанет устраивать в плане скорости или если перестанут идти новые требовательные игры.
Но пока в App Store не выходит ничего такого экстраординарного… Например, игр уровня XCom 2 или GTA 5 для iPad в перспективе не видно.
Как это работает?
Синтетические тесты производительности перекочевали на мобильную платформу с персональных компьютеров. С тех пор как смартфоны массово стали оборудовать мощной вычислительной составляющей, появилась необходимость сравнения разных моделей.
Модели разные, а вот условия тестирования им необходимо создать одинаковые, ради чистоты и достоверности экспериментов. Определенное время теста, четко обозначенная нагрузка на каждый компонент: видеоускоритель, системную память, процессор. По аналогии с софтом для ПК (CPU-Z, GPU-Z, 3DMark) для мобильных устройств появились свои приложения, обеспечивающие требуемую загрузку железа в конкретных условиях. Ну а по сути своей бенчмарком является любой процесс, происходящий в одинаковых условиях на разных аппаратных платформах.
О тыкве и огурцах
В нашем проекте для автотестов используется связка
. Calabash — это фреймворк для автоматизации функционального тестирования, который, по сути, является драйвером, управляющим работой приложения на девайсе или симуляторе. Cucumber обеспечивает тестовую инфраструктуру (запуск тестов, парсинг сценариев, генерация отчетов).
Планы и перспективы
Главным направлением дальнейшего развития автотестов является снижение влияния внешних факторов и внедрение «заглушек». Это позволит ускорить выполнение сценариев и исключить влияние серверных ошибок на результаты тестов клиентского приложения.
Здесь возможны два варианта, отличающихся местом расположения «заглушки»:
- внутри приложения
- вне приложения
Первый вариант является наиболее гибким и удобным, но обладает одним существенным недостатком — это потенциальное влияние тестовых «заглушек» на приложение; другими словами, релизное приложение и тестируемое будут отличаться друг от друга.
Второй вариант подразумевает реализацию фейк-сервера, который реализует только протокол взаимодействия и работает локально с клиентом. При таком подходе приложение не испытывает побочных эффектов, однако требуются дополнительные трудозатраты на реализацию фейк-сервера.
Наверняка многим из читающих эту статью есть чем поделиться в области автоматизации тестирования. Предлагаю делиться наработками в этой области в комментариях.
Программа для измерения производительности iphone и ipad | яблык
Geekbench 5 является одним из самых популярных приложений для измерения быстродействия смартфонов, планшетов и компьютеров (симуляция физики, работа с графикой, вычислениями, шифрованием и т.д.). В состав утилиты включён ряд тестов, по результатам которых можно судить об эффективности работы микрочипа и ОЗУ.

♥ ПО ТЕМЕ:Как проверить скорость накопителей SSD, HDD или USB-флешки на Mac (macOS).
В 2021 году бенчмарк-программа получила мобильную версию для того чтобы рядовые пользователи могли в любое время получить надежную информацию о производительности своего смартфона или планшета. Помимо решения для iOS, имеются также варианты утилиты для Mac, Windows, Linux и Android.
Интерфейс программы Geekbench 5 сведён к минимуму – присутствует лишь кнопка запуска теста (Run Benchmark). После нажатия на неё стартует процесс испытания устройства, результаты которого отображаются в отдельном окне.
Пример проверки производительности по тестам Geekbench 4 iPhone 8 Plus и iPhone 11 Pro Max:


Как видно из теста, iPhone 8 Plus получил 917 балла в одноядерном тесте и всего 1 404 в многоядерном, тогда как, iPhone 11 Pro Max – 1 333 и 3 546 баллов соответственно.
В свежем обновлении приложения разработчики добавили новые тесты, измеряющих показатели системы и качество работы чипа в реальных условиях. То есть посредством программы пользователь сможет узнать, насколько хорошо его устройство справится с задачами, требующими интенсивной работы микрочипа. Кроме того исправлены все предыдущие тесты, призванные стать более объективными.
Скачать Geekbench 5 для iPhone и iPad (App Store)
Смотрите также:
Симулятор ios
Для тестирования яблочных устройств, айфонов и айпадов, есть несколько вариантов. Первый среди них – официальный Apple iOS Simulator, входящий в поставку Xcode. Позволяет тестировать разные комбинации софта и железа – но только на Mac.
Установите и запустите Xcode. Потом ПКМ и выберите «Show Package Contents». Затем пройдите “Contents” → “Applications” → “iPhone Simulator.”
Хотя найти его нелегко, использовать симулятор просто. Откройте Safari в симуляторе и тестируйте свой сайт. Можно переключаться между разными устройствами iPhone и iPad, менять версию iOS, поворачивать устройство и т.п.
Если у вас нету Mac’а, придётся заморачиваться. Можно взять iPadian, симулятор iPad для Windows. Кроме него существует ещё несколько вариантов, в частности онлайновые. Но, честно говоря, они не особенно хороши.
Тестирование миграции
При активном развитии приложения и выходе новых версий перед тестировщиками встает проблема проверки миграции данных со старых версий. Постоянная установка старых версий, наполнение базы данными и обновление до тестируемой версии — очень трудоемкие задачи, которые вызывают уныние даже у самого усидчивого тестировщика.
Для облегчения данного процесса мы собираем сендбоксы для каждой версии приложения с уже заполненной (вручную) базой данных и затем многократно используем их для проверки корректности миграции. При таком подходе появляется возможность автоматизировать данный вид тестирования.
Загрузка сендбоксов на симулятор не представляет сложности и сводится к копированию файлов в нужную директорию симулятора. Для загрузки же сендбоксов на устройство используется утилита ifuse, которая позволяет смонтировать файловую систему девайса.
$ ifuse --udid #{$Udid} --container #{$Bundle_app} /Volumes/iphoneТестирование миграции происходит следующим образом. На симулятор или девайс устанавливается приложение, затем накатывается нужный сендбокс. Реализация соответствующего шага сценария имеет следующий вид:
Given /^upload database from "(.*)"$/ do |path| if simulator? path=File.expand_path(path.gsub(' ',' ')) sand=`find ~/Library/Developer/CoreSimulator/Devices/#{$Udid} -type d -name "#{$App}.app"`.gsub("#{$App}.app","") FileUtils.rm_rf(Dir.glob("#{sand}Documents/*")) FileUtils.rm_rf(Dir.glob("#{sand}Library/*")) FileUtils.cp_r("#{path}/Documents/.", "#{sand}/Documents", :verbose => false) FileUtils.cp_r("#{path}/Library/.", "#{sand}/Library", :verbose => false) else path=path.gsub(' ',' ') system("umount -f /Volumes/iphone") system("rm -rf /Volumes/iphone") system("mkdir /Volumes/iphone") `ifuse --udid #{$Udid} --container #{$Bundle_app} /Volumes/iphone` FileUtils.rm_rf(Dir.glob("/Volumes/iphone/Documents/*")) FileUtils.rm_rf(Dir.glob("/Volumes/iphone/Library/*")) FileUtils.cp_r("#{path}/Documents/.", "/Volumes/iphone/Documents/", :verbose => false) FileUtils.cp_r("#{path}/Library/.", "/Volumes/iphone/Library/", :verbose => false) end
endУдалённая отладка
Удалённая отладка на МУ выявляет множество трудностей. К примеру, как получить осмысленные данные от небольшого, сравнительно дохленького устройства?
Инструменты удалённой отладки предоставляют интерфейс для подключения к МУ с десктопа. Таким образом, мы работаем с данными с реальных устройств на мощном десктопном компьютере.
Удалённое тестирование
Эмуляторы и симуляторы полезны, но не на 100% достоверны. Всегда нужно пытаться проводить тестирование на максимальном количестве реальных устройств.
Но это не означает, что вам нужно их все покупать. Можно воспользоваться услугами сервисов удалённого тестирования, которые предлагают веб-интерфейс для тестирования на удалённых устройствах. Можно будет взаимодействовать с телефоном и видеть его экран.
Для тестирования устройств от Samsung, таких, как Galaxy S5, можно бесплатно воспользоваться услугами Samsung Remote Test Lab – они предоставляют для тестирования большой выбор своих устройств.
Также можно пользоваться ресурсами Keynote Mobile Testing. Они недёшевы, но количество доступных устройств поражает, и некоторыми можно пользоваться бесплатно.
Если вам нужны физические устройства, можно обратиться в Open Device Lab, где есть список ближайших доступных лабораторий тестирования.
Управление тестовым стендом
Радость от автоматизации тестирования была бы неполной без автоматизации процессов подготовки билда, запуска тестовых сценариев и рассылки тест-репортов.
Наши первые попытки запускать автотесты на сервере с TeamCity закончились неудачей, так как Calabash отказывался работать в безмониторной конфигурации. Поэтому вынужденной мерой стал запуск тестов на отдельной машине с использованием Mac OS Automator скриптов.
Основные этапы работы скрипта:
- По ID конфигурации (например,
ImIOS_ICQ00Develop) запрашивает на TeamCity номер последнего собранного билда и текущий номер версии - Делает
git checkoutиз Git-репозитория по тегуteamcity-build-ios-<номер билда из п.1>(этим тегом TeamCity помечает собранные коммиты) - Скачивает и линкует к проекту последнюю версию Calabash.framework
- Выполняет брендинг и запускает сборку проекта, используя xcodebuild. Под брендингом понимается настройка проекта и загрузка нужных ресурсов для дальнейшей сборки конкретного приложения. Сборка производится как для симулятора (
-sdk iphonesimulator), так и для девайсов (-sdk iphoneos). - Запускает непосредственно тесты вызовом bash-скрипта
Запуск теста производится очень просто:
$ cucumber tests/featuresНам необходимо обеспечить запуск тестов на всех моделях девайсов (симуляторов) и со всеми поддерживаемыми языками интерфейса. Для запуска тестовых сценариев на конкретном симуляторе необходимо передать параметр
DEVICE_TARGET
с указанием UDID нужного симулятора. С установкой нужного языка дело обстоит сложнее. На данный момент Calabash-iOSs не поддерживает установку нужного языка на iOS-симуляторе 8 версии. Но если покопаться в недрах iOS Simulator, то можно найти файл
.GlobalPreferences.plist
, в котором находится параметр
AppleLanguages
, определяющий язык интерфейса. Задать его значение можно с помощью следующего скрипта, используя гем CFPropertyList.
def Utils.set_language_in_iossim8(lang) `find ~/Library/Developer/CoreSimulator/Devices/#{$TargetUDID} -type f -name ".GlobalPreferences.plist"`.split("n").each do |fn| plist = CFPropertyList::List.new(:file => fn) data = CFPropertyList.native_types(plist.value) data["AppleLanguages"][0]=lang plist.value = CFPropertyList.guess(data) plist.save(fn, CFPropertyList::List::FORMAT_BINARY) end
endТакже в команде вызова Cucumber указывается список тегов, определяющий, какие именно сценарии необходимо запускать. Стартовый скрипт последовательно выполняет прогоны на каждом из указанных симуляторов и с каждым языком интерфейса, передавая эти данные в виде тегов, а Cucumber выполняет только те тестовые сценарии, которые соответствуют заданным тегам.
#simulators list for launch
sim=( 'iPhone 4s (7.1 Simulator)' 'iPhone 5 (7.1 Simulator)' 'iPhone 5s (7.1 Simulator)' 'iPad 2 (7.1 Simulator)' 'iPad Retina (7.1 Simulator)' 'iPad Air (7.1 Simulator)' 'iPhone 4s (8.0 Simulator)' 'iPhone 5 (8.0 Simulator)' 'iPhone 5s (8.0 Simulator)' 'iPhone 6 (8.0 Simulator)' 'iPhone 6 Plus (8.0 Simulator)' 'iPad 2 (8.0 Simulator)' 'iPad Retina (8.0 Simulator)' 'iPad Air (8.0 Simulator' )
#languages list for launch
lang=( en cs de es pt ru tr uk zh-Hans ja vi )
for i in "${sim[@]}"; do for j in "${lang[@]}"; do case "$i" in ... 'iPad Retina (8.0 Simulator)' ) profile='-t @ALL_DEVICES,@iPadRetina_iOS8' ;; ... esac DEVICE_TARGET='$i' cucumber tests/features -t @$j -t @ ${profile} done
done Таким образом, если у нас есть некий сценарий с тегами
@iPadRetina_iOS8 @en
, то он запустится только на симуляторе iPad Retina с iOS 8 и установленным английским языком.
У нас практически все готово к запуску автотестов, но необходимым условием их корректной работы является сброс данных и настроек симулятора, что соответствует hard reset’у девайса. Таким образом мы избавляемся от побочных эффектов предыдущих прогонов и задаем идентичные начальные условия.
tell application "iOS Simulator" activate
end tell
tell application "System Events" tell process "iOS Simulator" tell menu bar 1 tell menu bar item "iOS Simulator" tell menu "iOS Simulator" click menu item "Reset Content and Settings…" end tell end tell end tell tell window 1 click button "Reset" end tell end tell
end tellОдним из столпов тестирования мобильных приложений является тестирование работы с разными типами и качеством связи. Смартфон практически постоянно находится при владельце — и офисе с быстрой сетью WI-FI, и на даче с еле уловимым 3G. Поэтому в заключение данного параграфа я хочу рассказать о механизме эмуляции качества сети на тестовом стенде.
На устройствах с включенным Developer Mode и на Mac OS доступен инструмент Network Link Conditioner, который позволяет задавать качество сети, используя графический интерфейс. Но нам нужна возможность изменять качество сети «на лету» во время автотестов и управлять этим процессом через командную строку. Для этих целей подходит утилита
ipfw
, входящая в стандартный пакет поставки Mac OS. Приведенные ниже команды устанавливают скорость приема/отправки в 1 Mbit/s, потерю пакетов 10% и задержку в приеме/отправке пакетов 500 мс.
$ sudo ipfw add pipe 1 in
$ sudo ipfw add pipe 2 out
$ sudo ipfw pipe 1 config bw 1Mbit/s plr 0.1 delay 500ms
$ sudo ipfw pipe 2 config bw 1Mbit/s plr 0.1 delay 500ms
После манипуляций с
ipfw
необходимо сбросить все установленные настройки.
$ sudo ipfw delete pipe 1
$ sudo ipfw delete pipe 2
$ sudo ipfw -f flushФункциональное тестирование
По результатам прогона тестовых сценариев формируется отчет следующего вида.
В отчете видно, в каких сценариях возникли ошибки. Для проваленных сценариев снимается скриншот в момент возникновения ошибки — это иногда позволяет сразу определить причину фейла. Если при ручном воспроизведении тестового сценария баг повторяется, он заводится в баг-трекере.
Шаг 1: зарегистрируйтесь как разработчик
Посетите веб-сайт разработчика Apple и нажмите « Центр участников» вверху. После входа с помощью Apple ID вас попросят принять Соглашение разработчика Apple . Прочитайте соглашение, установите флажок, если вы согласны, и нажмите Отправить . Теперь вы зарегистрированный разработчик Apple.
Шаг 1: создайте запрос на подпись сертификата
Сертификат — это электронный документ, который связывает вашу цифровую идентификацию с другой информацией, такой как ваше имя, адрес электронной почты и информация об организации. Сертификат разработки состоит из секретного закрытого ключа и общего открытого ключа.
Xcode использует закрытый ключ сертификата для криптографической подписи двоичного файла вашего приложения. Чтобы получить сертификат разработки, сначала необходимо создать запрос на подпись сертификата или CSR .
Вы можете создать CSR, используя утилиту Keychain Access для OS X, которую вы можете найти в папке « Программы»> «Утилиты ». Откройте меню Keychain Access , выберите Certificate Assistant и выберите Request a Certificate from the Certificate Authority ….
Заполните форму, указав свое имя и адрес электронной почты, с которыми вы зарегистрировались в Программе разработчиков Apple. Оставьте адрес электронной почты центра сертификации (адрес электронной почты CA) пустым и обязательно установите флажок Сохранено на диск, чтобы сохранить запрос на подпись сертификата на вашем компьютере. Оставьте Позвольте мне указать информацию о паре ключей без проверки.
Нажмите « Продолжить» , укажите местоположение для сохранения CSR и нажмите « Сохранить» . Перейдите к указанному местоположению, чтобы убедиться, что CSR был создан. В разделе « Связкаключей» в категории « Ключи » вы можете видеть, что закрытый и открытый ключи были добавлены в вашу цепочку ключей входа.
Шаг 2. создайте сертификат разработки
Откройте браузер и перейдите на сайт разработчика Apple. Нажмите « Центр участников» вверху, войдите в свою учетную запись разработчика и выберите « Сертификаты, идентификаторы и профили» .
На следующей странице выберите Сертификаты в разделе iOS-приложений .
Нажмите кнопку «плюс» в правом верхнем углу, чтобы добавить новый сертификат. Из списка параметров выберите iOS App Development . Это тип сертификата, который нас интересует. Нажмите « Продолжить» внизу.
На следующей странице описаны шаги по созданию CSR. Поскольку у нас уже есть CSR, вы можете нажать Continue внизу.
Загрузите CSR и нажмите « Создать» внизу.
Вот и все. Нажмите кнопку Загрузить , чтобы загрузить сертификат разработки. После загрузки сертификата разработки дважды щелкните его, чтобы установить его в Keychain Access . Обязательно создайте резервную копию сертификата, потому что вы не хотите его потерять.
Если Keychain Access предложит вам добавить сертификат в связку ключей входа в систему , то вы можете смело нажимать кнопку Добавить .
В Keychain Access выберите Мои сертификаты слева и найдите сертификат, который вы добавили, чтобы убедиться, что вы правильно его установили.
Шаг 2: создать проект
Запустите Xcode и создайте проект, как мы делали в предыдущем уроке. Я выбрал шаблон приложения Single View и настроил проект, как показано ниже. Скажите Xcode, где вы хотите сохранить файлы проекта, и нажмите « Создать» .
Шаг 3: добавить устройство
Вы не можете запустить приложение iOS на случайном устройстве. Вам необходимо указать, какие устройства могут запускать ваше приложение iOS, пометив одно или несколько устройств iOS для разработки на портале для разработчиков.
Перейдите в раздел « Сертификаты, идентификаторы и профили » портала разработчика, выберите вкладку « Устройства » в разделе « Приложения iOS » и нажмите кнопку «плюс» в правом верхнем углу. Чтобы зарегистрировать устройство, введите имя для устройства и его UDID.
Вы можете найти UDID устройства, подключив устройство к вашей машине, запустив Xcode и выбрав Devices в меню Window . Буквенно-цифровая строка из сорока символов рядом с идентификатором является UDID устройства.
Шаг 3: добавить учетную запись
После создания проекта Xcode покажет вам вкладку General единственной цели проекта. В разделе Идентичности XCode предупреждает нас, что мы не можем запустить приложение на устройстве. Предупреждение в нижней части раздела « Идентичность » говорит нам, что XCode не может найти идентификатор для подписи кода, и для Team установлено значение « Нет» . Вы можете легко исправить это, выполнив вход с помощью своего Apple ID.
Выберите Xcode в строке меню и выберите Настройки …, чтобы открыть Xcode окно настроек.
Если вы откроете вкладку « Учетные записи », вы увидите, что еще нет учетных записей.
Нажмите кнопку «плюс» в левом нижнем углу и выберите « Добавить Apple ID…» из списка параметров.
Введите свой Apple ID и пароль в диалоговом окне и нажмите « Добавить» . Если это не работает для вас, убедитесь, что вы сначала зарегистрировались в качестве разработчика Apple, как я показал вам ранее. Если добавление вашего Apple ID прошло успешно, то теперь оно должно появиться в списке учетных записей слева.
Шаг 4. создание идентификатора приложения
Идентификатор приложения — это идентификатор, который однозначно идентифицирует приложение на iOS. Это очень похоже на UDID устройства, который однозначно идентифицирует устройство. Идентификатор приложения используется операционной системой в целях безопасности и является важным компонентом push-уведомлений Apple и сервисов iCloud, среди прочего.
Идентификатор приложения состоит из идентификатора пакета вашего приложения с префиксом уникального начальногоидентификатора набора из десяти символов, сгенерированного Apple. Что такое идентификатор пакета?
Вспомните первый проект, который вы создали в предыдущем уроке. Несмотря на то, что я подробно не описывал идентификатор пакета, вы неявно указали идентификатор пакета для своего проекта, дав своему приложению имя и указав идентификатор организации.
Шаг 4: команда обновления
Закройте окно настроек и вернитесь на вкладку Общие цели проекта. В разделе Identity установите Team для учетной записи, которую вы добавили минуту назад. Даже если вы указали команду, Xcode все равно показывает предупреждение.
Подожди секунду? Почему бы нам не попробовать нажать кнопку « Исправить проблему» . Есть причина, почему это там. Правильно? Если вы нажмете кнопку « Исправить проблему» , Xcode позаботится о мельчайших подробностях, чтобы убедиться, что вы можете запустить свое приложение на физическом устройстве.
Шаг 5. создание профиля обеспечения
При наличии сертификата разработки и идентификатора приложения пришло время создать профиль обеспечения для вашего приложения. Прежде чем мы начнем, было бы полезно объяснить, что такое профиль обеспечения, потому что это то, что сбивает с толку многих новых разработчиков iOS.
В документации Apple профиль обеспечения определяется как «набор ресурсов, которые уникальным образом связывают разработчиков и устройства с авторизованной командой разработчиков iOS и позволяют использовать устройство для тестирования». Другими словами, профиль обеспечения содержит информацию, необходимую операционной системе для проверки, разрешено ли запуск приложения на определенном устройстве.
Давайте создадим профиль обеспечения для вашего приложения. В разделе « Сертификаты, идентификаторы и профили » портала разработчика выберите вкладку « Профили подготовки » в разделе « Приложения iOS ».
Нажмите кнопку «плюс» в правом верхнем углу, чтобы создать новый профиль обеспечения. Выберите « Разработка приложений для iOS» в разделе « Разработка » и нажмите « Продолжить» .
На следующем шаге выберите идентификатор приложения, который вы создали несколько минут назад, и нажмите « Продолжить» .
Выберите сертификат разработки из списка сертификатов, чтобы связать новый профиль обеспечения с правильным сертификатом. Нажмите Продолжить .
Теперь вам нужно выбрать устройства, которые вы хотите связать с профилем обеспечения. Помните, что только эти устройства смогут запускать ваше приложение во время разработки.
Дайте профилю обеспечения описательное имя, чтобы вы могли легко найти его позже. Нажмите « Создать» и загрузите профиль обеспечения на свой компьютер для разработки. Дважды щелкните профиль обеспечения, чтобы добавить его в XCode.
Если вы хотите добавить больше устройств в уже существующий профиль обеспечения, вы можете сделать это, отредактировав профиль обеспечения. Все, что вам нужно сделать, это загрузить новый профиль обеспечения и установить его на каждое устройство, с которым вы хотите провести тестирование.
Шаг 5: доверьтесь разработчику
Если вы попытаетесь запустить приложение на своем устройстве, то вы все равно столкнетесь с проблемой. Вы также видите следующий диалог?
Xcode показывает нам довольно загадочное сообщение об ошибке, и мне понадобилось несколько минут, чтобы понять, что происходит. Если вы посмотрите на свое устройство, то увидите, что приложение установлено. Если вы нажмете на значок, чтобы запустить его, вы узнаете, в чем проблема. Операционная система сообщает нам, что приложение от ненадежного разработчика.
К счастью, операционная система также дает нам подсказку. Откройте приложение « Настройки» и выберите « Основные»> «Профили» . Выберите профиль с вашим Apple ID и нажмите « Доверие» <Apple ID> .
Помните, что вам нужно снова доверять разработчику, если вы удаляете все приложения от этого конкретного разработчика.
Шаг 6: настройте проект
Прежде чем вы сможете собрать и запустить приложение на своем устройстве, вам необходимо обновить настройки сборки цели в вашем проекте XCode.
Откройте проект Xcode, который вы создали в предыдущем уроке, и выберите проект в Навигаторе проектов слева. Выберите « Мое первое приложение» в разделе « Цели » и откройте « Настройки сборки» вверху.
Не удивляйтесь многочисленным настройкам сборки. Прокрутите список и найдите раздел « Подписание кода ». В этом разделе найдите подраздел « Идентификация подписи кода» и задайте конфигурацию отладки, соответствующую iOS Developer . Обычно он находится под заголовком « Автоматически» .
Шаг 7: сборка и запуск
Если вы выполнили вышеуказанные шаги, то теперь вы сможете создавать и запускать приложение на своем устройстве. Перед запуском приложения убедитесь, что вы правильно установили активную схему и пункт назначения, как показано ниже.
Эмулятор android
У андроида эмулятор кросс-платформенный. К сожалению, он сложен в настройке.
Эмуляторы и симуляторы
Тестирование на физических устройствах – штука оправданная. Но это не значит, что не нужно тестировать на эмуляторах и симуляторах. Они позволяют расширить тестируемый набор устройств и проверять изменения на лету.
Заключение
В этой статье мы научились устраивать тестовую лабораторию при помощи комбинации из реальных устройств, эмуляторов, симуляторов и инструментов удалённого тестирования. С их помощью вы сможете тестировать сайты и приложения на различных МУ.
Также мы познакомились с различными инструментами удалённой отладки, которые открывают доступ к отладочным данным МУ, без которых отладка сильно затруднена.
Вывод
Создание сертификатов, профилей обеспечения, идентификаторов приложений и тестовых устройств и управление ими может быть непростой задачей, и часто для большинства разработчиков. Я надеюсь, что эта статья дала вам прочную основу.
Не стесняйтесь прочитать эту статью несколько раз, чтобы по-настоящему понять, как различные части сочетаются друг с другом. Это значительно упростит проблемы отладки, связанные с инициализацией, и я могу гарантировать, что вы столкнетесь с такими проблемами в какой-то момент своей карьеры iOS.


