Тест ios приложения на устройстве. TestM. Программа покажет, что сломано в iPhone. Переключение типов соединения и отсутствие связи

При разработке мобильных 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, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.

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

Вконтакте

А если нужно проверить весь смартфон? А если не 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 приложений и небольшой автоматизации этого процесса.
Под катом будут рассмотрены инструменты для модульного и функционального тестирования и приведены простые примеры.

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

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

Эти инструменты очень похожи, они оба позволяют писать тесты на 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, надеюсь что это у меня вышло и для статья окажется полезной.

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

на платформе iOS, в результате вы хотите получить стабильное и надежное приложение. Мы подготовили чек лист тестирования приложения на IOS, без которого нельзя отдавать приложение в стор, а тем более на iPhone клиента.

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

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

  • Проверка возможности перехватить снифферами входящие или исходящие данные. Эта проверка может проводится для банковского ПО или корпоративных приложений, работающих по протоколу https, и имеющих высокие требования к политики безопасности.
  • Проверка безопасности передачи данных между приложениями по Wi-Fi. В процессе возникает опасность уязвимости к атакам типа MITM (перехват данных).

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

In-App Purchase (Покупки в приложении)

  • Проверка работы функции при установленных ограничениях в настройках: устанавливая ограничения на покупки в приложениях пользователь ожидает, что защищен от совершения подобных операций, однако, если это ограничение не сработает в вашем приложении, это может повлечь неприятные для него последствия. Для этого после установке ограничений, в настройках должно появляться предупреждение о попытке осуществить покупку в приложении.
  • Проверка работы функции при различных параметрах и настройках Apple ID: при смене Apple ID информация о покупке с помощью других данных не сохраняется. Так сохраняется конфиденциальность пользовательских данных. Если пользователь не изменяя Apple ID, выходил из приложения и снова зашел, данные о покупках должны сохраниться.

Правила использования IAP:

  1. Приложения, которые используют IAP с целью покупки внутренней валюты, обязаны обеспечить использование расчетов в этой валюте только внутри себя.
  2. Если существует срок годности на внутреннюю валюту приложения, то IAP не используется для их покупки.
  3. Подписка на контент посредством IAP должна быть предоставлена пользователю на любых iOS-устройствах, принадлежащих ему, с учетом длительности, которая составляет не менее 30 дней.

В время тестирования функции In-App Purchase, следует обращать внимание на то, что объект покупки и цены, соответствуют тому, что видит пользователь. Не упускайте вариант восстановления покупок, совершенных пользователем, после обновления приложения.

Типы подключений

Основные виды интернет соединения:

  1. Сотовая связь для передачи данных: 2G, 2.5G, 3G, 4G;
  2. Wi-Fi;
  3. Mi-Fi – точка для передачи интернета, который был получен по сотовой связи.

Большинство смартфонов используют современные технологии для передачи мобильного трафика. С помощью настроек устройства можно получить доступ к типу устанавливаемого соединения (2G/3G/4G). Стоит отметить, что наложение ограничений связи касается не только мобильного трафика, но и Wi-Fi.

Тестирование на различных скоростях передачи данных

  1. Использование симуляторов/эмуляторов;
  2. Сторонняя прошивка роутера;
  3. Стороннее ПО (прокси).

Переключение типов соединения и отсутствие связи:

Что можно проверить в iOS приложениях? Например:

  • Выдвинуть «шторку» в нижней части и включить режим полета либо выключить Wi-Fi.
  • Выключить или перезагрузить точку доступа, тем самым отключив мобильный трафик.
  • Можно использовать роутер или «шторку», чтобы переключаться между видами связи. Обычно, настройки операционной системы позволяют при наличии сильного источника сигнала переключаться автоматически. Например:
  1. Переключение приложения на мобильный трафик (2G/2.5G/3G/4G) при выключении Wi-Fi;
  2. Автоматическое переключение на Wi-Fi при его включении и нахождении нужной сети.

Публичные сети с авторизацией

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

  1. Web-аутентификация сразу после установки Wi-Fi соединения. Данный тип подключения не дает право на доступ к сервисам, отличающихся от начального;
  2. Подключение к локальной сети роутера через привязку к MAC-адресу устройства. Данный тип соединения дает возможность подключения к Wi-Fi, однако ограничивает доступ к пользованию интернетом;
  3. Переход на Web аутентификацию при отправке запроса на любой публичный адрес.

Ресурсы устройства

Обязательна нужно проверять обработку в следующих ситуациях:

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

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

Например, вы находитесь в неизвестном городе, и скачиваете навигатор или гид по этому городу. После запуска, приложение закрывается без уведомлений, вместо корректного уведомления о недостаточном объеме памяти для корректного запуска. Скорее всего, вы сразу удалите приложение и поищите что то еще. Если бы вы увидели понятное уведомление, то просто удалили бы пару ненужных приложений и спокойно перезапустили навигатор или гид.

Разрядка батареи

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

Работа с прерываниями

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

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

Сворачивание/разворачивание активного приложения

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

Резюме

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

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

А предназначен для Android-приложений. С помощью него разработчики могут писать функциональные тесты, охватывающие несколько Android активити. Рекомендуем вот этот вебинар для освоения Robotium.

Espresso

KIF позволит вам проверить то, как ваше iOS приложение воспринимают люди с плохим зрением.

MonkeyRunner

Инструмент monkeyrunner предоставляет API для написания программ, которые управляют Android-устройством или эмулятором извне Android-кода. Вы можете написать программу на Python, которая установит приложение или тестовый пакет, запустит его, отправит нажатия, сделает скриншоты интерфейса и сохранит их.

Ranorex



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: