Обезьяна-тренажер пользовательского интерфейса/приложений

The Monkey — это программа, которая запускается на вашем эмуляторе или устройстве и генерирует псевдослучайные потоки пользовательских событий, таких как щелчки, прикосновения или жесты, а также ряд событий системного уровня. Вы можете использовать Monkey для стресс-тестирования разрабатываемых вами приложений произвольным, но повторяемым образом.

Обзор

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

Monkey включает в себя несколько опций, но они делятся на четыре основные категории:

  • Основные параметры конфигурации, такие как установка количества попыток событий.
  • Эксплуатационные ограничения, такие как ограничение теста одним пакетом.
  • Типы и частота событий.
  • Варианты отладки.

Когда Monkey запускается, он генерирует события и отправляет их в систему. Он также наблюдает за тестируемой системой и ищет три условия, которые обрабатываются особым образом:

  • Если вы ограничили запуск Monkey в одном или нескольких определенных пакетах, он отслеживает попытки перехода к любым другим пакетам и блокирует их.
  • Если ваше приложение выйдет из строя или получит какое-либо необработанное исключение, Monkey остановится и сообщит об ошибке.
  • Если ваше приложение генерирует ошибку «Приложение не отвечает» , Monkey остановится и сообщит об ошибке.

В зависимости от выбранного вами уровня детализации вы также увидите отчеты о ходе работы Monkey и генерируемых событиях.

Основное использование Обезьяны

Вы можете запустить Monkey с помощью командной строки на вашем компьютере разработки или из сценария. Поскольку Monkey работает в среде эмулятора/устройства, вы должны запустить ее из оболочки в этой среде. Вы можете сделать это, добавив adb shell к каждой команде или войдя в оболочку и введя команды Monkey напрямую.

Основной синтаксис:

$ adb shell monkey [options] <event-count>

Если параметры не указаны, Monkey запустится в тихом (неподробном) режиме и отправит события любым (и всем) пакетам, установленным на вашей цели. Вот более типичная командная строка, которая запустит ваше приложение и отправит ему 500 псевдослучайных событий:

$ adb shell monkey -p your.package.name -v 500

Справочник по опциям команд

В таблице ниже перечислены все параметры, которые вы можете включить в командную строку Monkey.

Категория Вариант Описание
Общий --help Распечатывает простое руководство по использованию.
-v Каждый ключ -v в командной строке увеличивает уровень детализации. Уровень 0 (по умолчанию) предоставляет мало информации, кроме уведомления о запуске, завершении теста и окончательных результатах. Уровень 1 предоставляет более подробную информацию о тесте во время его выполнения, например об отдельных событиях, отправляемых в ваши действия. Уровень 2 предоставляет более подробную информацию о настройке, например, о действиях, выбранных или не выбранных для тестирования.
События -s <seed> Начальное значение для генератора псевдослучайных чисел. Если вы повторно запустите Monkey с тем же начальным значением, он сгенерирует ту же последовательность событий.
--throttle <milliseconds> Вставляет фиксированную задержку между событиями. Вы можете использовать эту опцию, чтобы замедлить Обезьяну. Если не указано, задержки нет, и события генерируются как можно быстрее.
--pct-touch <percent> Отрегулируйте процент событий касания. (События касания — это событие перемещения вниз в одном месте экрана.)
--pct-motion <percent> Отрегулируйте процент событий движения. (События движения состоят из события опускания где-то на экране, серии псевдослучайных движений и события подъема.)
--pct-trackball <percent> Отрегулируйте процент событий трекбола. (События трекбола состоят из одного или нескольких случайных движений, иногда сопровождаемых щелчком.)
--pct-nav <percent> Настройте процент «базовых» навигационных событий. (События навигации состоят из событий вверх/вниз/влево/вправо, поступающих от устройства направленного ввода.)
--pct-majornav <percent> Настройте процент «основных» навигационных событий. (Это события навигации, которые обычно вызывают действия в вашем пользовательском интерфейсе, такие как центральная кнопка на 5-позиционной панели, клавиша «Назад» или клавиша меню.)
--pct-syskeys <percent> Настройте процент «системных» ключевых событий. (Это клавиши, которые обычно зарезервированы для использования системой, например «Домой», «Назад», «Начать вызов», «Завершить вызов» или «Регулировка громкости».)
--pct-appswitch <percent> Настройте процент запуска активности. Через случайные промежутки времени Monkey будет вызывать вызов startActivity(), чтобы максимизировать охват всех действий в вашем пакете.
--pct-anyevent <percent> Отрегулируйте процент других типов событий. Это комплексное решение для всех других типов событий, таких как нажатия клавиш, другие менее используемые кнопки на устройстве и т. д.
Ограничения -p <allowed-package-name> Если вы укажете таким образом один или несколько пакетов, Monkey позволит системе посещать действия только внутри этих пакетов. Если вашему приложению требуется доступ к действиям в других пакетах (например, для выбора контакта), вам также необходимо указать эти пакеты. Если вы не укажете ни одного пакета, Monkey позволит системе запускать действия во всех пакетах. Чтобы указать несколько пакетов, используйте параметр -p несколько раз — по одному параметру -p для каждого пакета.
-c <main-category> Если вы таким образом укажете одну или несколько категорий, Monkey позволит системе посещать только те действия, которые указаны в одной из указанных категорий. Если вы не укажете какие-либо категории, Monkey выберет действия, перечисленные в категории Intent.CATEGORY_LAUNCHER или Intent.CATEGORY_MONKEY. Чтобы указать несколько категорий, используйте параметр -c несколько раз — по одному параметру -c для каждой категории.
Отладка --dbg-no-events Если указано, Monkey выполнит первоначальный запуск тестовой активности, но не будет генерировать никаких дальнейших событий. Для достижения наилучших результатов комбинируйте с -v, одним или несколькими ограничениями пакета и ненулевым дросселем, чтобы Monkey работал в течение 30 секунд или более. Это обеспечивает среду, в которой вы можете отслеживать переходы пакетов, вызываемые вашим приложением.
--hprof Если этот параметр установлен, этот параметр будет генерировать отчеты о профилировании непосредственно до и после последовательности событий Monkey. При этом будут созданы большие (~5 МБ) файлы в data/misc, поэтому используйте их с осторожностью. Информацию об анализе отчетов профилирования см. в разделе Профилирование производительности вашего приложения .
--ignore-crashes Обычно Monkey останавливается, когда приложение выходит из строя или возникает какое-либо необработанное исключение. Если вы укажете эту опцию, Monkey продолжит отправлять события в систему, пока подсчет не будет завершен.
--ignore-timeouts Обычно Monkey останавливается, когда в приложении возникает какая-либо ошибка тайм-аута, например диалоговое окно «Приложение не отвечает». Если вы укажете эту опцию, Monkey продолжит отправлять события в систему, пока подсчет не будет завершен.
--ignore-security-exceptions Обычно Monkey останавливается, когда в приложении возникает какая-либо ошибка разрешений, например, если оно пытается запустить действие, требующее определенных разрешений. Если вы укажете эту опцию, Monkey продолжит отправлять события в систему, пока подсчет не будет завершен.
--kill-process-after-error Обычно, когда Monkey останавливается из-за ошибки, приложение, в котором произошел сбой, остается запущенным. Если эта опция установлена, она сигнализирует системе о необходимости остановить процесс, в котором произошла ошибка. Обратите внимание: при нормальном (успешном) завершении запущенный процесс(ы) не останавливается, а устройство просто остаётся в последнем состоянии после финального события.
--monitor-native-crashes Отслеживает и сообщает о сбоях, происходящих в собственном коде системы Android. Если установлен --kill-process-after-error, система остановится.
--wait-dbg Останавливает выполнение Monkey до тех пор, пока к нему не будет подключен отладчик.