Стресс тест для андроид что это такое

Русские Блоги

Стресс-тест приложения для Android

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

1. Предпосылки

1. Зачем нужно проводить стресс-тестирование?

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

1. Повышение стабильности продукта.
Стабильность продукта — очень важный пункт во всех показателях продукта приложения. По статистике, 70% пользователей будут сталкиваться с различными нестабильными проблемами при использовании приложения. Когда возникает проблема, некоторые пользователи будут терпеть продолжение использования, а некоторые пользователи могут отказаться от прямого удаления приложения, в зависимости от сценария использования и стадии разработки приложения, например WeChat, QQ, Alipay и т. Д., Люди не могут обойтись без этого. Продукты, которые тесно связаны с жизнью, даже если время от времени возникают одна или две нестабильные проблемы, пользователи не будут удалять в значительной степени, но если это происходит в запускаемом приложении, пользователи могут удалить напрямую, что может По роте нанесен смертельный удар.

2. Повышение уровня удержания продукта.
Согласно статистике, 5% пользователей предпочтут отказаться от использования приложения или удалить приложение, если время отклика страницы слишком велико. Когда пользователю противно такое приложение В это время DAU и коэффициент удержания продукта уменьшатся. Следовательно, чтобы повысить стабильность продукта, улучшить его удержание и принести больше пользы компании, стресс-тестирование является обязательным!

2. Когда будет проведен стресс-тест?

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

2. Теория

1. Сценарий ручного тестирования


Когда мы вручную моделируем операцию поиска, мы выполняем указанные выше шаги: 1. Щелкните поле поиска (появится экранная клавиатура), 2. Введите ключевые слова, 3. Нажмите кнопку поиска, Результаты поиска появятся на следующей веб-странице.

2. Сценарий автоматического тестирования

Каким должно быть преобразование описанных выше ручных операций на машинный язык?

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

3. инструмент обезьяны

  • 1. Что такое обезьяна?
    Monkey — это инструмент для тестирования, который поставляется с Android SDK. Это инструмент командной строки, который можно запустить в симуляторе или на реальном устройстве. Его можно запускать в эмуляторе или реальном устройстве. Он отправляет поток псевдослучайных пользовательских событий (таких как ввод с клавиатуры, ввод с сенсорного экрана, ввод с помощью жестов и т. Д.) В систему для выполнения стресс-тестирования разрабатываемого приложения. Поскольку тестовые события и данные случайны и не могут быть настроены, они имеют большие ограничения.
  • 2. Где Обезьяна?
    существует в нашем телефоне Android и должен использовать ADB для связи с Monkey.

4. команда ADB

  • 1. Что такое АБР?
    Android Debug Bridge (adb) — это универсальный инструмент командной строки, который позволяет взаимодействовать с вашим устройством. Команда adb упрощает различные операции с устройством (например, установку и отладку приложений) и обеспечивает доступ к оболочке Unix (которая может использоваться для выполнения различных команд на устройстве).
  • 2. Где находится АБР?
    adb включен в пакет инструментов платформы Android SDK. Вы можете использовать диспетчер SDK для загрузки этого пакета, и диспетчер установит этот пакет в android_sdk / platform-tools /. Или, если вам нужен отдельный пакет инструментов платформы Android SDK, вы можетеНажмите сюда для того, чтобы скачать。
Читайте также:  Неофициальный клиент 4pda для android

5. Что такое MonkeyScript

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

6. Что такое MonkeyRunner

И monkey, и monkeyrunner — это тестовые команды, предоставляемые android sdk, но monkeyrunner и money не имеют прямого отношения. Monkey запускает команды оболочки adb непосредственно на устройстве для генерации случайных событий для тестирования. Для сравнения, monkeyrunner отправляет определенные команды и события через API для управления устройством через рабочую станцию.

7.MonkeyRunner API

Инструменты MonkeyRunner в основном делятся на три категории: MonkeyRunner, MonkeyDevice, MonkeyImage.

  • 1. Класс MonkeyRunner: предоставьте метод waitForConnection (время ожидания с плавающей запятой, строка идентификатора устройства) для подключения к реальной машине и симулятору, а также метод alert () для отображения информации об отображении подсказки.
  • 2. Класс MonkeyDevice: предоставляет методы для установки и удаления пакетов программ, запуска Activity, отправки кнопок и событий щелчка и запуска тестовых пакетов.
  • 3. Класс MonkeyImage: используется для сохранения тестовых снимков экрана во время теста, сохранения различных форматов и может сравнивать два объекта MonkeyImage.

Три, настоящий бой

1. Приложение «Боевой стресс-тест»

  • 1. В параметрах разработчика мобильного телефона отметьте отладку по USB.
  • 2. Убедитесь, что телефон и компьютер успешно соединены.

    Если вы можете найти свое собственное устройство в списке подключенных устройств, соединение установлено успешно.
  • 3. Установите тестовое приложение.
  • 4. Отправьте команду стресс-теста (случайная).

В это время телефон будет моделировать различные случайные операции 100 раз.

После выполнения в командной строке вы увидите следующее:

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

  • 5. Получите название пакета приложения.
    Выше мы выполняем случайные команды. Что, если мы хотим провести стресс-тестирование определенного приложения? Во-первых, нам нужно получить имя пакета приложения, которое мы хотим протестировать. Вы можете использовать следующую команду:

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

, где cmp = com.meizu.flyme.calculator — имя пакета калькулятора.

  • 6. Нагрузочное тестирование указанного приложения.

Эта строка кода выполнит 1000 случайных операций в нашем приложении-калькуляторе.

2. Использование дополнительных параметров Monkey

  • 1. Параметры дроссельной заслонки
    Укажите интервал между событиями (миллисекунды)
  • 2. параметры семян
    Укажите начальное значение случайно сгенерированного числа.

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

  • 3. Коснитесь события
    Установить процент событий касания

Также возьмем калькулятор в качестве примера, добавим в команду параметр -v, вы увидите процент операции в процессе выполнения:

Событие 0 представляет событие касания, поскольку мы указали –pct-touch 100, поэтому другие события касания равны 0, события касания — 100, и их много в следующих результатах ACTION_DOWN и ACTION_UP, нажатие и отскок объединены в пару, что имитирует процесс щелчка.

Если мы не укажем -pct-touch 100, посмотрим на эффект выполнения:

Видно, что события очень случайны, а события касания составляют 15%. Из выходных данных журнала ниже мы видим, что есть также такие события, как Traceball и запуск вращения.

  • 4. События действия
    Установите процент событий действия

Здесь следует отметить, что сумма события действия и процента других событий должна быть равна 100. Если оно не равно 100, оставшаяся часть будет использоваться случайным образом.

Здесь мы указываем 50% для событий касания и 30% для событий движения, поэтому пропорции остальных 8 типов событий назначаются случайным образом.

  • 5. Событие трекбола
    Установите процент событий трекбола
  • 6. Основные события навигации.
    Установите процент основных событий навигации, введите верхнюю, нижнюю, левую и правую часть устройства.
  • 7. Основные события навигации
    Установите процент основных событий навигации, совместимых со средней клавишей, клавишей возврата и клавишей меню.
  • 8. События системной навигации.
    Установите процент событий системной навигации, HOME, BACK, набора номера и клавиш регулировки громкости.
  • 9. Запустите событие Activity.
    Установите процент запускаемого события Activity, которое будет переключаться между несколькими приложениями.
  • 10. Необычные события
    Установите процент нечастых событий
  • 11. Событие сбоя
    Игнорировать сбои и исключения
Читайте также:  Формат файлов для рингтона андроид

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

  • 12. Тайм-аут.
    Игнорировать события тайм-аута

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

3. Анализ результатов сбоев

  • 1. Установите приложение, которое вылетает.
  • 2. Выполнить стресс-тест обезьяны.
  • 3. Анализируйте информацию об исключениях сбоя.


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

Обратите внимание, что в конце журнала есть строка:

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

Если мы хотим аварийно завершиться, обезьяна по-прежнему выполняет 1000 операций, тогда мы можем использовать –ignore-crashes, представленный выше.

Как видите, мы указали начальное число для имитации последнего потока операций, а также использовали –ignore-crashes. Сбой произошел, но он все равно будет выполняться, поэтому введенное событие — 1000. , Но в этот раз, если вы хотите увидеть начальное значение, вы обнаружите, что оно исчезло, потому что, когда происходит сбой, обезьяне все еще требуется продолжить выполнение, поэтому новое начальное значение будет сгенерировано случайным образом.

4. Анализ результатов ANR.

  • 1. Установите приложение, которое вызовет ANR.
  • 2. Выполните обезьяну для стресс-теста.
  • 3. Проанализируйте информацию об исключениях ANR.

Журналов много. Взгляните на некоторые из них:


Видно, что при выполнении 84-й операции возникает ANR. Причина возникновения также описывается в журнале. Если мы хотим воспроизвести этот ANR, мы можем полагаться на это Семена производят во второй раз. Точно так же, если вы хотите, чтобы событие продолжало выполнение, вы можете использовать команду -ignore-timeouts.

5.Бой в MonkeyScript

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

Прежде чем писать MonkeyScript, давайте разберемся с некоторыми общими командами:
1. Команда DispatchTrackball
Событие трекбола

длительное время простоя относится к времени, когда клавиша была впервые нажата
long eventtide указывает время, когда произошло событие.
действие int относится к действию определенной операции, например нажатию
float x, float y относятся к координатам x и y
размер события давления поплавкового давления (0

1)
размер с плавающей запятой относится к значению затронутой ноты (0

1)
int metastate относится к идентификации текущей нажатой клавиши сопряжения.
float xprecision, float yprecision относится к точному значению координат x и y
Источник события int устройства (0

x)
int edgeflags означает за пределами экрана

Здесь мы можем использовать три параметра, а именно:
int действие (0 означает нажатие, 1 означает отскок)
Если мы хотим смоделировать событие щелчка, нам нужно передать два параметра: одна команда передает 0, что означает нажатие, а другая передает 1, что означает отскок, чтобы мы могли реализовать процесс щелчка. .

В процессе нажатия нам необходимо определить точку, на которую нужно щелкнуть. Здесь нам нужно определить диапазон щелчка, то есть координаты x и y:float xс участиемfloat y

2. Команда DispatchPointer
Событие клика

Значение параметра такое же, как у DispatchTrackball.

3. Команда DispatchString
Команда ввода строки

Получите строку для ввода.

4. команда LaunchActivity
Запустите приложение

#package относится к имени пакета приложения.
#Activity относится к имени активированной страницы.

5. команда UserWait
ожидает события

Время ожидания в миллисекундах

6. Команда DispatchPress
Нажмите значение клавиши

keycode 66 Введите ключ
В соответствии с вашими потребностями вы можете передать соответствующее значение ключа

Боевая часть MonkeyScript
Поняв приведенные выше команды, мы официально приступили к написанию скриптов. Здесь мы моделируем сценарий, когда пользователь выполняет 100 поисков в браузере. Последовательность действий пользователя следующая:

Затем мы преобразуем эти шаги на язык, поддерживаемый MonkeyScript.

Читайте также:  Сброс до заводских настроек андроид через рекавери асус

Во-первых, в MonkeyScript есть несколько фиксированных заголовков скриптов, которые нужно писать в верхней части скрипта.

Затем идет сценарий шага, который мы хотим выполнить, полный сценарий выглядит следующим образом:

Это смоделированное событие щелчка, поэтому нажатие и нажатие появляются парами.Действие третьего параметра — 0 и 1 для движения вниз и вверх соответственно, а четвертый и пятый параметры — координаты x и y щелчка. , Тогда как получить эту точку? Вам необходимо использовать uiautomatorviewer в Android SDK. Его путь находится в my / Library / Android / sdk / tools / bin /. Вы можете найти эту команду в соответствующем каталоге установки. После запуска это выглядит так:

Мы можем использовать это, чтобы получить желаемые значения x и y и поместить их в параметры.

После того, как сценарий будет написан, сохраните его. В настоящее время выполнение adb shell monkey -f monkey.script 2 недопустимо. Почему?
Поскольку обезьяна хранится на нашем мобильном устройстве, а мой сценарий monkey.script хранится на моем компьютере, обезьяна в мобильном телефоне не может напрямую получить сценарий компьютерного устройства. , Итак, нам нужно поместить monkey.script в телефон и выполнить следующую команду:

Затем выполните эту команду, обратите внимание на абсолютный путь к файлу, который должен быть записан путем, который мы только что установили.


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

Итак, почему здесь введено значение 30? Фактически, количество этой операции — это количество команд в нашем скрипте, а количество выполнений — это его продукт.

6.MonkeyRunner актуальный бой

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

Прежде чем использовать MonkeyRunner, давайте сначала разберемся с некоторыми общими командами.

MonkeyRunner API в основном передает следующие три пакета:
MonkeyRunner: В основном он предоставляет вспомогательные методы для приложений MonkeyRunner и методы для подключения устройств или симуляторов, а также обеспечивает поддержку пользовательского интерфейса.
MonkeyDevice: От имени устройства или симулятора он предоставляет методы для установки и удаления приложений, запуска Activity, отправки кнопок или событий касания и т. Д.
MonkeyImage: Представляет собой снимок экрана, вы можете захватывать изображения в разных форматах, сравнивать два изображения MonkeyImage, сохранять изображения и т. Д.

1.MonkeyRunner API — alert
окно предупреждения

Напишем ниже скрипт на Python:

Выполнение заказа monkeyrunner demo.py

2.MonkeyRunner API — waitForConnection
ожидает подключения устройства, существует несколько идентификаторов устройств, необходимо указать, какое устройство

3.MonkeyRunner API — drag
перетащить

start: начальная позиция
end: конечная позиция
duration: продолжительность жеста.
Количество шагов точки интерполяции, по умолчанию 10

4.MonkeyRunner API — press
кнопка

keycode: код ключа
тип: тип кнопки: DOWN, UP, DOWN_AND_UP

5.MonkeyDevice API — startActivity
Запустите приложение

6.MonkeyDevice API — touch
Событие клика

7.MonkeyDevice API — type
событие ввода

8.MonkeyDevice API — takeSnapshot
Событие «Снимок экрана»

9.MonkeyImage API — sameAs
сравнение изображений

10.MonkeyImage API — writeToFile
сохранить файл изображения

Фактическая часть MonkeyRunner
Мы по-прежнему моделируем описанную выше операцию и используем сценарий MonkeyRunner для ее повторной реализации. Полный код выглядит следующим образом:

Мой скрипт python размещен на рабочем столе, поэтому я вхожу в каталог рабочего стола и выполняю следующую команду:

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

Видно, что после того, как мы нажали кнопку поиска, мы выполнили команду снимка экрана и сохранили ее по указанному пути.

На этом базовое использование MonkeyRunner завершено. Мы видим, что MonkeyRunner помог нам завершить весь автоматизированный процесс. Если вы хотите, чтобы MonkeyRunner выполнялся несколько раз, вам нужно использовать скрипты Python для выполнения таких действий, чтобы вы могли завершить повторяющийся процесс операции. .

В-четвертых, вывод

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

Источник

Оцените статью