Please enable JavaScript.
Coggle requires JavaScript to display documents.
Автоматические тесты Android (Monkey (Минусы :unamused: (Неэффективно для…
Автоматические тесты Android
ADB
Плюсы
:smiley:
Простота использования
Нативность
Минусы
:unamused:
Некоторые действия требуют ручного вмешательства
Для более стабильной работы необходима ОС на основе ядра Linux
Суть
:star:
Составление и запуск простых cmd/bash скриптов на основе команд ADB
Monkey
Плюсы
:smiley:
Возможность обнаружения нетривиальных ошибок
Отсутствуют затраты на сопровождение
Не зависит от устройства
Минусы
:unamused:
Неэффективно для тестирования функционала, вызываемого сложной последовательностью действий. Например, monkey не сможет пройти аутентификацию и основной функционал приложения останется без внимания
Игры со сложным управлением, требующим быстрой реакции и сложных жестов, будут завершатся в самом начале, либо вообще не начнутся
Ошибки очень сложно воспроизвести
Нет проверки состояния приложения
Качество тестирования варьируется от приложения к приложению
Суть
:star:
Утилита отправляет на устройство поток псевдо-случайных действий пользователя. Параметры командной строки задают количество действий пользователя, соотношение их типов и имя тестируемого пакета, чтобы, например, обезьяна не вышла за пределы тестируемого приложения и не начала рассылать SMS по всем контактам из адресной книги
MonkeyRunner
Суть
:star:
При помощи скриптов использующих MonkeyRunner API можно не только разработать основу для тестирующей системы, но и написать скрипты для тестирования конкретного приложения на конкретном устройстве
Плюсы
:smiley:
Гибкость – реализовать можно практически все, что угодно
Минусы
:unamused:
Сложность написания скриптов даже в простых случаях
GetEvent/SendEvent
Суть
:star:
Утилиты getevent и sendevent позволяют записать последовательность действий пользователя, а затем воспроизвести эту последовательность. Утилиты находятся на самом Android-устройстве и не требуют для работы root-доступа
Плюсы
:smiley:
Последовательности действий могут быть записаны без дополнительных затрат в ходе ручного тестирования, если оно уже проводится
Для записи сценариев не требуются навыки программирования
Минусы :unamused:
Последовательности действий необходимо записывать отдельно для каждого приложения и для каждого устройства. При изменении интерфейса приложения все записанные действия необходимо проделать заново
Отсутствует проверка состояния приложения. Например, при тестировании браузера открывается страница. Если она открывается дольше, чем в момент записи, то дальнейшие действия будут выполнены до полной загрузки страницы и результат будет некорректный. Иногда возможно записать скрипт таким образом, что во всех подобных случаях ожидание превышает максимально возможное
Быстрая и сложная последовательность действий будет воспроизводиться дольше, чем записывалась – поэтому способ не всегда подойдет для тестирования динамичных игр, где критично время реакции и своевременность действия
Robotium
Суть
:star:
Главное отличие Robotium в том, что тестовые действия описываются на уровне интерфейса приложения. В рассмотренных ранее способах тестовые действия явно или неявно описывались на уровне устройств ввода.
Например, в приложении нужно нажать кнопку «OK». С помощью скрипта MonkeyRunner нажатие на кнопку реализуется как: «Коснуться точки экрана с координатами (x0, y0)». С помощью Robotium это реализуется как: «Нажать кнопку с текстом «OK»».
Когда действия описываются на уровне интерфейса приложения их можно сделать независимыми от расположения элементов интерфейса, разрешения экрана и положения устройства.
Плюсы
:smiley:
Действия описываются на уровне интерфейса приложения
Сценарий может быть независимым от разрешения экрана и ориентации устройства
После совершения действия можно проверять состояние приложения
Минусы
:unamused:
Для каждого приложения необходимо разработать сценарий тестирования на языке Java. Это требует навыков программирования и временных затрат
При изменении интерфейса приложения сценарий тестирования придется модифицировать
Написать сценарий Robotium сложнее, чем записать действия с помощью getevent/sendevent
Espresso
Суть
:star:
Эспрессо — это фреймворк, который предоставляет простой API для тестирования пользовательского интерфейса программы.
Минусы
:unamused:
Плюсы
:smiley:
Синхронизация с UI потоком. Так как тесты выполняется в отдельном потоке, без синхронизации с UI они могут быть нестабильными. Например тест может предпринять попытку нажать на кнопку до того, как она будет отрисована, так как рендеринг интерфейса занимает некоторое время. Отсутствия синхронизации тестов с UI-потоками было головной болью при использовании Robotium, т.к. часто приходилось останавливать поток теста с помощью Thread.sleep(long). У Espresso-тестов такой проблемы нет.
Более простой и легко расширяемый API. Например, если не хватает каких-то view action’ов или view matcher’ов, можно написать свои.
Более простой и легко расширяемый API. Например, если не хватает каких-то view action’ов или view matcher’ов, можно написать свои.