Microsoft представила усовершенствованную версию App Center
Microsoft продолжает совершенствовать свою платформу для разработки Visual Studio. В этот раз компания представила масштабное обновление App Center.
Microsoft продолжает совершенствовать свою платформу для разработки Visual Studio. На конференции Connect(); компания представила масштабное обновление App Center — специализированной программы для развёртывания и тестирования мобильных приложений.
Раньше достаточно было указать App Center исходный репозиторий (хранящийся на серверах VSTS или GitHub), и она сама «доставала» код, устанавливала сборочные скрипты и проводила интеграционное и юнит-тестирование.
Новые возможности
Обновленная среда мобильного тестирования не стоит на месте: теперь она умеет тестировать ПО на реальном железе (устройствах под iOS и Android), перебирая десятки комбинаций размеров экрана и операционных систем. Можно даже получить скриншоты работы приложения на разных моделях мобильных устройств.
В App Center появилась система развертывания бета-тестирования, через которую можно «выкатить» соответствующую версию приложения как один из этапов полноценного тестирования ПО. Если программа написана на JavaScript, с помощью Code Push можно посылать пользователям обновленные скрипты без новой сборки или переустановки. По словам Apple и Google, такая возможность распространяется и на стабильные версии приложений, если изменения в патчах не очень велики.
Даже после успешного бета-тестирования разработчикам очень часто бывает нужно собрать воедино информацию о сбоях и данные от пользователей, чтобы обозначить проблемы и лучше понять, как люди пользуются созданной программой. У App Center припасен специальный функционал и на этот случай.
Главная цель Microsoft App Center — облегчить разработчикам процессы сборки, тестирования, получения фидбека и т.д. Эта программа делает монотонную работу за них. Но не стоит забывать, что самое важное — это создание приложений. В мае этого года Microsoft выпустила Xamarin Live Player — расширение для Visual Studio, значительно упрощающее разработку iOS- и Android-приложений на Windows.
Впервые пробуем App Center и рассказываем о своем опыте
Сегодня, когда в кармане у каждого жителя мегаполиса есть компьютер, который может куда больше, чем долететь до луны, мы пользуемся мобильными приложениями каждый день. Новости, погода, акции, шопинг — все эти функции реализованы в сотнях тысяч приложений. Но если любимое приложение подвисает или крашится — оно быстро перестает быть любимым.

Это статья написана ребятами из WaveAccess
Мы разрабатываем мобильные приложения более 10 лет, и никак не можем позволить себе выпускать продукт, который бажит в руках пользователей. Именно поэтому “качать” команду тестирования и инфраструктуру для нас не менее важно, чем другие области.
Сотни Android-девайсов, iPhone с различными версиями ОС, разная диагональ устройств ставят перед QA-инженерами задачу “отлавливать” дефекты и на реальных мобильных устройствах, и на различных версиях операционных систем. Но прогонять один и тот же ручной сценарий на 10, 20, 50-ти устройствах мало кому под силу. Именно благодаря таким задачам мы прокачали свой навык автоматического тестирования, особенно, на мобильных устройствах. Но будем честны: создать и поддержать инфраструктуру даже с 20-ю реальными девайсами для прогона автотестов — это головная боль.
В этой статье хотим рассказать, как попробовали новый для себя сервис Microsoft App Center для проверки качества разрабатываемого нами приложения на зоопарке реальных девайсов.
Почему встал вопрос использования сервиса
Сейчас мы разрабатываем приложение для сопровождения шоппинга. Проект идет давно: заказчик постоянно предлагает какие-то новые фичи, идет за разработкой только к нам. В приложении уже десятки экранов, от “купить” до различных вариантов сообщений, пушей, функций типа “собери свой лук”. И все это время происходят презентации проекта инвесторам, запуски в новых торговых центрах, так что чем выше скорость релиза (без падения качества продукта) — тем лучше.
До сего времени мы запускали автотесты на ограниченном количестве устройств, которое было в нашем распоряжении (для этого проекта — порядка 30-ти Android-девайсов и “яблок”). Сейчас приложение выходит на новый уровень, аудитория выросла, и качество стало еще более критичным. Встал вопрос об использовании облачного сервиса для прогона автотестов на большем количестве разных устройств.
В процессе релизов хотелось пользоваться всеми современными и доказавшими свою полезность практиками разработки ПО: кросс ревью, непрерывная интеграция, автоматизированное функциональное и модульное тестирование на большом списке девайсов на iOS + Android, сбор аналитики и крешлитики (crashlytics).
Каждую из этих практик мы применяли ранее и по отдельности, и в комплексе. Но с учетом масштабов проекта и большого размера команды, хотелось получить универсальное решение. Пусть инструмент умеет все перечисленное и может в одном месте предоставить возможность управлять состоянием разработки и доставки мобильных приложений для разных платформ и мониторить его.
От каждого из ролей в команде были свои условия: разработчики не хотели менять уже налаженный процесс разработки (репозиторий, билд тул и т. д.), а также переходить на слишком новые, непроверенные инструменты в проде. Инженеры по тестированию мечтали о снижении нагрузки по проверке на зоопарке девайсов, менеджерам и заказчику хотелось удобный интерфейс для мониторинга всего состояния с прозрачным флоу.
Исследование аналогов — довольно важный этап при выборе инструмента. Мы смотрели разные сервисы, предоставляющие такие возможности (для Appium-тестов, например, BrowserStack). В случае с Microsoft App Center нам предоставили триальный период, поэтому у нас была возможность попробовать и понять, что будет с проектом, если уделять качеству чуть больше ресурсов и автоматизировать весь релиз-процесс мобильного приложения для любой платформы одним сервисом. Рассказываем, как это было.
Как настроить iOS app
Итак, воспользовавшись триальным периодом, который не накладывает ограничений в функционале, создаем свое iOS приложение в Microsoft App Center:
Добавляем App Center SDK в проект:
pod 'AppCenter'
После установки подов открываем файл AppDelegate.swift и добавляем следующие строки под своей собственной командой импорта:
import AppCenter import AppCenterAnalytics import AppCenterCrashes
В том же файле добавляем в метод didFinishLaunchingWithOptions следующие строки:
MSAppCenter.start("", withServices:[ MSAnalytics.self, MSCrashes.self ])
Аналогичный процесс — для objective C, полная версия инструкции — здесь.
Билдим!
Переходим во вкладку Build, выбираем наш сервис svc.

Конфигурируем билд. Не забываем подписать, так как это генерирует нам файл приложения формата app, который можно запускать на реальных девайсах:

Готово! Нажимаем кнопку Build now и ждем сборки.
Аналогичная история для Android приложений, инструкция — здесь.
Запускаем первые тесты для iOS
Unit- и нативные тесты для каждой платформы можно включить в сборку (есть галочка). О функционале АТ на разных девайсах рассказываем далее.
Настройка сета девайсов iOS, Android, отправка тестов на сет
Переходим на вкладку Test, Device Sets. Создаем набор девайсов, на которых будем гонять наши тесты. На выбор есть более 250 Android девайсов и более 200 различных iOS девайсов (generation version + iOS version). Подробный список устройств — тут.
Здесь несколько огорчило, что официальный ответ на вопрос, как скоро после релиза появятся новые Apple девайсы, звучит как “1-2 месяца после поступления в продажу”.
Готовим тесты к запуску в App Center (пример для XCUITest) и отправим на запуск. В App Center есть возможность билда только приложения, так что билдить проект тестов все же придется локально у себя на машине или в своем CI.
Shell: # Generate an XCUITest bundle and your iOS application as described above. $ rm -rf DerivedData $ xcrun xcodebuild build-for-testing -derivedDataPath DerivedData -scheme YOUR_APP_SCHEME # Upload your test to App Center $ appcenter test run xcuitest \ --app "" \ --devices DEVICE_SET \ --test-series "master" \ --locale "en_US" \ --build-dir DerivedData/Build/Products/Debug-iphoneos
Appium-тесты
Стоит убедиться, что используемые фреймворки тестов соответствуют поддерживаемым. Кроме того, необходимо использовать драйвер, предоставляемый App Center, а это накладывает свои ограничения по использованию фреймворков (например, Google Giuce использовать не получится).
Билд проекта для пользователей Maven
Шаг 1. Добавляем репозиторий и зависимости
Нужно будет добавить в файл pom.xml репозиторий JCenter.
XML jcenter https://jcenter.bintray.com/
Затем добавляем зависимость для расширений Appium-тестов
XML com.microsoft.appcenter appium-test-extension 1.3
Таким образом, во время компиляции будут доступны расширенные драйверы Android и iOS (которые нужны, прежде всего, для реализации фичи “label”; о ней подробнее в Шаге 4).
Шаг 2. Добавляем загрузочный профиль
Копируем сниппет в свой pom.xml в . Если в pom-файле отсутствует секция , нужно ее создать. Профиль после активации пакует наши тестовые классы и все зависимости в папку target/upload, готовую для загрузки в TestCloud.
Билд для пользователей Gradle
Шаг 1. Репозиторий и зависимости
Убеждаемся, что в build.gradle в корневой папке проекта активирован репозиторий JCenter:
gradle allprojects < repositories < jcenter() >>
Добавляем следующий сниппет в build.gradle в папке приложения:
gradle androidTestCompile('com.microsoft.appcenter:appium-test-extension:1.0')
Начиная с версии Gradle 3.0, androidTestCompile является устаревшим. Вместо него нужен androidTestImplementation.
Шаг 2. Автоматизируем генерацию pom-файла
Чтобы аплоадер заработал, требуется файл pom.xml. Добавляем в build.gradle в папке приложения следующий сниппет, чтобы pom-файл собрался автоматически:
gradle apply plugin: 'maven' task createPom < pom < withXml < def dependenciesNode = asNode().appendNode('dependencies') //Iterate over the compile dependencies (we don't want the test ones), adding a node for each configurations.testCompile.allDependencies.each < def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', it.group) dependencyNode.appendNode('artifactId', it.name) dependencyNode.appendNode('version', it.version) >def profilesNode = asNode().appendNode('profiles') profilesNode.append(new XmlParser().parse('https://raw.githubusercontent.com/Microsoft/AppCenter-Test-Appium-Java-Extensions/master/gradleuploadprofilesnippet.xml')) > >.writeTo("pom.xml")
Изменения в тестах
Шаг 1. Добавляем импорты
Импортируйте пакеты в свои тест классы:
Java import com.microsoft.appcenter.appium.Factory; import com.microsoft.appcenter.appium.EnhancedAndroidDriver; import org.junit.rules.TestWatcher; import org.junit.Rule;
Шаг 2. Создаем экземпляр TestWatcher
Добавляем в каждый тест-класс JUnit Rule (или в базовый класс тестов):
Java @Rule public TestWatcher watcher = Factory.createWatcher();
Шаг 3. Меняем тип драйвера
Поменяйте тип драйвера при его объявлении или с AndroidDriver на EnhancedAndroidDriver, или с IOSDriver на EnhancedIOSDriver
Java private static EnhancedAndroidDriver driver;
Шаг 4. Обновляем экземпляры драйверов
Меняем инстансы драйвера таким образом, чтобы строки вида:
Java driver = new AndroidDriver(url, capabilities);
… поменялись на вид:
Java driver = Factory.createAndroidDriver(url, capabilities);
Использование этих драйверов по-прежнему позволит запускать тесты локально без дополнительных модификаций, но в дополнение позволит добавлять “label” на шаги в исполняемом тесте, используя driver.label(«ваш текст»). Текст и скриншот с девайса будут доступны в тест-репорте в Test Cloud. Весьма рекомендуется делать обращение к метке через метод After, поскольку это добавит скриншот последнего состояния приложения в тест-репорт.
Скриншот будет сделан, даже если тест провален. Как правило, в нем достаточно информации, чтобы понять, почему так случилось. Пример реализации в методе After:
Java: @After public void TearDown()
Загрузка в App Center test
Процесс загрузки по шагам:
- Генерируем команду App Center Test upload. Документация (EN) — starting a test run.
- Пакуем тест-классы и все зависимости в папку target/upload
- mvn -DskipTests -P prepare-for-upload package
- Загрузка и запуск тестов начался
По завершении можем просмотреть результаты на каждом девайсе из списка:

Скрины с результатами, логи, отчет
На каждом из iOS или Android девайсов можно просмотреть подробный лог и скриншот для диагностики падения теста:

А также статистику всех запусков за интервал времени:

Правда, доступ к “девайсу” для дебага и инспекции не предоставляется. Если с тестами что-то идет не так и логов недостаточно — все решается только через поддержку. В одном из популярных сервисов по запуску АТ на девайсах — BrowserStack — такая возможность есть, и она встроена в Appium. Можно было бы отдать URL и порт для создания подключения к серверу девайсов.
Выводы
Удивительно, но весь релизный процесс от Continuous Integration до Continuous Delivery приложения обеспечивается в одном месте: Microsoft App Center предлагает CI build, test, deploy to store, analytics, crashlytics.
Попробовав меньше половины предложенного функционала, команда вынесла приятное впечатление. Из очевидных плюсов: не нужно писать поддержку для каждого девайса в виде кода. Ну и прочие плюшки радуют:
- Не нужно поднимать сервер для толпы девайсов.
- Не нужно подключать к этому серверу 100500 девайсов.
- Не нужно жить с глюками андроида когда он включен 24\7.
- Не нужно собирать контейнер под девайс, не нужно менеджить эти контейнеры.
- Не нужно мириться с ограниченностью эмуляторов.
Microsoft App Center нас устроил по изначальным параметрам: он очень не требователен в плане интеграции, но предоставляет все запрашиваемые функции, избавляя от трудной поддержки. Планируем использовать сервис на проекте, так как задачи инструментария при обеспечении качества он решает.
- Блог компании Microsoft
- Разработка под iOS
- Разработка мобильных приложений
- Разработка под Android
- Разработка под Windows
AppCenter v1
AppCenter — это облачный сервис от Microsoft, который позволит вам автоматизировать жизненный цикл своих приложений для iOS, Android, Windows и macOS. Подключайте ваш GitHub, Bitbucket или Azure репозиторий к системе, проводите сборки, тестируйте ваше приложение на тысячах реальных устройств, отправляйте приложение тестировщикам бета-версий и в магазины приложений, отслеживайте использование в режиме реального времени на основе отчетов о сбоях и аналитических данных. Все в одном месте.
При помощи интеграции с сервисом Notify.Events, вы в несколько движений сможете подключить все ваши команды к нотификациям о событиях из AppCenter, распределяя сообщения различного приоритета между несколькими группами получателей, в не зависимости от того, какой корпоративный мессенджер вы привыкли использовать.
Для того, чтобы начать получать сообщения с этого источника, пожалуйста войдите в свой аккаунт или зарегистрируйтесь — это займёт всего пару минут!
Начало работы для тестировщиков
Навигация по любому новому инструменту может оказаться подавляющим в качестве тестировщика. Существует множество различных элементов и препятствий для получения сборок на ваших устройствах, что в конечном итоге может сделать тестирование приложений разочарованием. Чтобы помочь вам, мы создали простой рабочий процесс в Центре приложений для тестировщиков. Кроме того, мы создали это руководство, чтобы помочь в любых частях тестирования в Центре приложений, которые могут показаться неясными. Мы знаем, что тестирование является важной частью процесса разработки приложений, поэтому мы стремимся обеспечить бесперебойную и успешную работу.
Что такое Центр приложений?
Центр приложений — это решение для непрерывной интеграции, доставки и тестирования для приложений Android, iOS, macOS и Windows. Центр приложений позволяет разработчикам быстрее и с большей уверенностью отправлять приложения за счет автоматизации жизненного цикла разработки.
Центр приложений предлагает множество различных служб, но наиболее подходящим для тестирования является наша служба распространения. Центр приложений позволяет разработчикам выпускать двоичные файлы приложений для вас, тестировщика, по ссылке для скачивания или на портале установки Центра приложений.
В этом документе предполагается, что вы пытаетесь приступить к работе в качестве тестировщика, и вам было предложено протестировать приложение Центра приложений.
Первые шаги
Когда разработчик приглашает вас протестировать приложение, вы должны получить сообщение электронной почты с уведомлением о назначении. Это сообщение содержит кнопку, которая позволяет создать учетную запись Центра приложений, если у вас ее нет. Если у вас есть учетная запись, войдите и просмотрите приложения. После входа в систему действия по установке приложений немного отличаются в зависимости от операционной системы, на которую вы тестируете.
Вы можете создать учетную запись до того, как разработчик официально предложит вам протестировать приложение. Вы можете зарегистрироваться на веб-сайте Центра приложений.
Чтобы приступить к установке приложения, которое вы приглашены для тестирования, выберите один из следующих вариантов:
- Тестирование приложений Android
- Тестирование приложений iOS
- Тестирование приложений macOS
Остановить тестирование
Вы можете прекратить тестирование приложения и удалиться из всех групп рассылки для этого приложения. После этого вы больше не будете получать уведомления для этого приложения и больше не будете иметь доступ к приложению на порталах разработчика и установки в Центре приложений. Чтобы удалить себя из приложения, должны выполняться следующие условия:
- Вы не являетесь участниками совместной работы приложения
- Вы не входите в общую группу для приложения
- Вы не входите в группу AAD для приложения
Если все перечисленные условия применимы к вам, вы можете удалить себя в качестве тестировщика для приложения. Для этого сделайте следующее:
- Перейдите на портал установки Центра приложений на мобильном устройстве.
- Выберите проект приложения, который требуется остановить тестирование.
- В правом верхнем углу экрана щелкните пункт меню с тремя точками.
- Нажмите кнопку Остановить тестирование приложения .
После выполнения этих действий вы больше не будете тестировщиком приложения.