Презентация по МДК.01.03 Разработка мобильных приложений на тему «Эмулятор. Методы изучения состава компонентов»
Эмулятор. Методы изучения состава компонентов
Android Emulator (emulator) - виртуальное мобильное устройство, которое создается и работает на компьютере разработчика, используется для разработки и тестирования мобильных приложений без привлечения реальных устройств.
Эмуляция (англ. emulation) в вычислительной технике - комплекс программных, аппаратных средств или их сочетание, предназначенное для копирования (или эмулирования) функций одной вычислительной системы (гостя) на другой, отличной от первой, вычислительной системе (хосте) таким образом, чтобы эмулированное поведение как можно ближе соответствовало поведению оригинальной системы (гостя). Целью является максимально точное воспроизведение поведения в отличие от разных форм компьютерного моделирования, в которых имитируется поведение некоторой абстрактной модели
Рис.1 – Работа программы «Hello World» в среде эмулятора Не все возможности поддерживаются эмулятором, в частности он не поддерживает следующее:
Bluetooth
NFC
Работу с SD-картой
Работу с наушниками
USB
Настройка интегрированного эмулятора Android Studio
П ри установке Android Studio существует опция установить устройство эмуляции ( Android Virtual Device или еще называется Android Emulator), в случае если вы не установили его, вы можете установить потом.
Установка и настройка стороннего эмулятора LDPlayer:
Скачать LDPlayer можно со страницы официального сайта:
Поддержка операционных систем: Windows 10, 8.1, 8, 7, Vista, XP
рис2. Эмулятор LDPlayer
Настройка стороннего эмулятора LDPlayer
Для запуска приложений, разработанных в Android IDE, необходимо:
Настроить устройство (включить режим отладки по USB).
Настроить компьютер (для Windows необходимо установить нужный драйвер вручную, нужны права администратора).
Настроить среду и запустить проект на устройстве.
К сожалению, эмуляторы имеют и ряд недостатков:
Требуют много системных ресурсов.
Из-за различий в архитектуре процессоров компьютера и смартфона медленно запускаются. Современные персональные компьютеры построены на архитектурах x86 и x64, а большинство процессоров смартфонов на Android - ARM. Процесс эмуляции одной архитектуры на другой чрезвычайно сложен и происходит довольно медленно.
Тем, не менее основным своим преимуществом эмуляторы покрывают все недостатки – это возможность без дополнительных вложений на покупку дорогих телефонов и планшетов проверить работу программы на этих устройствах. Поэтому основная функция любых эмуляторов (и Android Студия не является здесь исключением) – это т е с т и р о в а н и е работы приложений!
ОЗНАКОМИМСЯ ДОПОЛНИТЕЛЬНО С
АЛЬТЕРНАТИВНЫМИ ЭМУЛЯТОРАМИ
В комлект Android SDK входит эмулятор мобильных устройств, с другой стороны, существуют альтернативы:
Genymotion (http://www.genymotion.com/) – решение, основанное на Virtual Box, которое виртуализирует, а не эмулирует Android, за счет чего происходит серьезный прирост производительности. Содержит: shell, позволяющий управлять сенсорами; простое эмулирование GPS координат; более 10 виртуальных устройств и интеграцию с Eclipse и Android Studio.
MobiOne Studio (http://www.genuitec.com/mobile/features/) – это ориентированная на Windows среда разработки кроссплатформенных мобильных приложений для iOS и Android платформ. Позволяет разработчику программировать, тестировать, отлаживать, упаковывать и внедрять мобильные веб-приложения на устройства, содержит эмулятор для тестирования приложений. Имеет много полезных функций вроде просмотра исходников страницы и инспектор кода. Решение платное (на данный момент – 100$), есть 15-дневный триал.
Облачные платформы устройств
Позволяют удаленно протестировать приложение на множестве различных мобильных устройств, имеют в наличии стенд с реальными устройствами, результаты тестирования передаются разработчику, как видео-изображения с веб-камеры. Облачные платформы предоставляют устройства "напрокат", час работы с одним мобильным устройством стоит около 15$, можно оформить подписку, существуют бесплатные триальные версии.
Наиболее известные платформы:
Perfecto Mobile (http://www.perfectomobile.com/)и
DeviceAnywhere (http://www.keynotedeviceanywhere.com/).
Автоматизированное воспроизведение скриптовых тестов
При выборе подходящего инструмента следует принимать во внимание его принцип работы. Наиболее распространены два варианта:
Воспроизведение теста происходит по обращению к экрану, без анализа самого экрана и элементов интерфейса. Обычно такое воспроизведение осуществляется через координаты жестов на экране. Главный плюс – обычно нет необходимости модифицировать приложение. Главный минус – зависимость тестов от размера экрана, ориентации устройства, дизайна приложения.
Воспроизведение теста посредством обращения к интерфейсным элементам приложения. В тесте указаны метки для форм, кнопок, текстбоксов и прочей визуальной "начинки". Главный плюс – даже существенные изменения в интерфейсе приложения вряд ли повлияют на работу теста. Главный минус – придётся просить разработчиков собирать тестировщикам версии приложений с дополнительными библиотеками.
Рассмотрим наиболее известные инструменты:
Robotium (code.google.com/p/robotium/) – пожалуй, самый известный на текущий момент инструмент для автоматизации тестирования Android-приложений. "It’s like Selenium, but for Android" – утверждают разработчики. Тесты пишутся на Java (есть сторонние решения, позволяющие писать их, например, на Python). Возможности запускать тесты на устройстве нет, только в эмуляторе. Необходимо добавлять библиотеку в сборку приложения.
MonkeyRunner (http://developer.android.com/tools/help/monkeyrunner_concepts.htm
l) поставляется в составе Android SDK, позволяет выполнять функциональное тестирование приложения под Android, предоставляя API для управления устройством. MonkeyRunner является более низкоуровневым по сравнению с Robotium, и не требует исходного кода приложения. Тесты пишутся на Python, или с помощью рекордера, выполняются как в эмуляторе, так и на реальных устройствах, подключенных к компьютеру. Большой минус этого решения в том, что жесты записываются в координатах, проверка результатов только путём сравнения скриншотов, что очень усложняет использование одного скрипта для тестирования на нескольких устройствах, а также делает скрипты неподходящими для регрессионного тестирования в случае изменения GUI приложения.
AppThwack (appthwack.com/) – интересный сервис для тестирования на Android-устройствах (поддержка iOS обещается в скором времени). Вы загружаете своё приложение на ресурс, оно устанавливается на настоящие устройства (ассортимент переваливает за сотню) и подвергается "исследованию" – запуск, замеры используемой памяти и загрузки процессоров, выявление ошибок и проблем, нагрузка небольшим манкитестом. По результатам исследования создаётся отчёт со скриншотами. Имеется триал (неделя), цена – от 29$ в месяц за тестирование на 10 наиболее распространённых устройствах.
JamoSolution (www.jamosolutions.com/) – одна из самых многообещающих платформ, на которой сейчас разрабатывается несколько инструментов (например, M-eux test и SeeTest). Она позволяет тестировать iOS, Android,
Windows Phone и другие платформы. Поддерживается запись тестов (record&play). Работает через установку на устройстве приложения-агента, что освобождает разработчика от модифицирования своего приложения. Есть триальная версия.
EggPlant (www.testplant.com/eggplant/testing-tools/eggplant-mobile-eggon/) от студии TestPlant позволяет запускать свой тестовый скрипт на множестве устройств одновременно, определяя выходные данные методом распознавания картинки на экране. Поддерживает тестирование на устройствах Android и iOS и их эмуляторах, а также на эмуляторе Windows Phone. Приложение разработано под Windows, Linux, Mac. Есть триальная версия.
Sikuli (www.sikuli.org/) – open sourсe инструмент для автоматизации тестирования GUI Java-приложений (в том числе и Android). Открытая кроссплатформенная визуальная среда создания сценариев-скриптов, которая ориентирована на программирование графического интерфейса при помощи изображений (скриншотов). Особенность – скрипт, задающий последовательность действий, позволяет использовать скриншоты – чтобы дать команду нажать кнопку, достаточно подставить в скрипт скриншот этой кнопки. Поддерживает написание скриптов на Java и Python.
MonkeyTalk (www.cloudmonkeymobile.com/monkeytalk) – бесплатный инструмент для тестирования Android и iOS-приложений. Имеет собственный мощный скриптовый язык (можно писать скрипты и на JavaScript), позволяет создавать и хранить тестовые проекты (тесткейсы, тест-сьюты). Так же имеется интеграция с Eclipse, есть рекодер. Требует вставки своей библиотеки в приложение.
Robot Framework (code.google.com/p/robotframework/) – это opensource фреймворк для автоматизации приемочного тестирования и разработки через приемочные тесты (ATDD), имеющий широкий функционал. Поддерживает дополнительные библиотеки (можно использовать собственные, написанные на Python или Java) – именно с помощью уже реализованных библиотек и появляется возможность тестирования приложений на Android и iOS.
Случайное тестирование ("monkey" testing)
• Monkey (developer.android.com/tools/help/monkey.html) является инструментом случайного тестирования для Android, содержащимся в Android SDK. Генерирует псевдослучайные действия пользователя. Позволяет настроить
"хаотичность", интервал между событиями, их тип и т. п. Модификация кода приложения не требуется. Тестировать можно как на эмуляторе, так и на подключенном устройстве.
Сервисы для бета-тестирования
uTest (www.utest.com/) – сообщество из 45 тысяч профессиональных тестеров из 180 стран. Реальные пользователи протестируют работу приложения. Платный.
(iOS, Android, Windows Phone)
The Beta Family (thebetafamily.com/) – бесплатный сервис для тестирования приложения. Необходимо завести аккаунт, залить бета-версию приложения, разослать приглашение на тестирование, обработать результаты тестирования. Можно выбрать тип бета-тестеров: private или public. Если public, то приложение смогут тестировать все желающие. Работает с iOS, Android, Windows Phone.
Сборщики статистики
Flurry (www.flurry.com/) поддерживает iOS, Android, Windows Phone, бесплатная;
BugSence () поддерживает iOS, Android, Windows Phone, бесплатная;
Apsalar (apsalar.com/) поддерживает iOS, Android, бесплатная;
Google Analytics (www.google.com/analytics/) поддерживает iOS, Android, бесплатная;
Mixpanel (mixpanel.com/) поддерживает iOS, Android, платная;
Localytics (www.localytics.com/) поддерживает iOS, Android, Windows Phone, платная;
Bango (bango.com/) поддерживает iOS, Android, Windows Phone, платная.
У каждой системы есть свои изюминки: обновление статистики в реальном времени (Localytics), суперточность с отслеживанием уникальных ID каждого пользователя (Bango), наличие средств для проведения опроса среди пользователей (Apsalar) и т. д. Естественно, есть и море отличий: в интерфейсе, в средствах анализа, в наличии дополнительных API, в стоимости, в наборе поддерживаемых платформ.