auto test android что это

Factory Mode на андроиде — что делать, если случайно зашел

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

Что такое Factory Mode на андроиде

Factory Mode в переводе с английского дословно означает «фабричный режим». Также его называют «заводским режимом». Он имеет ряд кардинальных отличий от всеми известного Recovery Mode, который предназначен для восстановления телефона, его перепрошивки и очитки кэша или всех данных.

Внешний вид обычного фактори моде

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

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

Заводское меню тестирования на разных телефонах выглядит по-разному

Как войти в Factory Mode на андроиде

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

Если в телефоне человека есть фактори мод, то наиболее вероятно, что он запускается:

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

Распространенная комбинация входа в режим

Что делать, если случайно вошел в режим тестирования на андроиде: как выйти

Иногда можно непроизвольно войти в Factory Mode на андроиде, что делать в такой ситуации? На самом деле все очень просто, пугаться не стоит, но и нажимать на все подряд не следует. Так можно изменить какие-нибудь важные настройки или попросту испугаться громкого писка, включив тестирование звукового модуля.

Обычно внизу списка есть пункт Reboot. Он есть везде и не зависит от версии операционной системы, производителя устройства или его модели. Переводится он как «Перезагрузка». Необходимо просто выбрать его, пройдя все пункты с помощью кнопки «Уменьшение громкости» и нажать на «Питание». Телефон автоматически перезагрузится и запустится в обычном режиме.

Обратите внимание! Часто люди случайно переходят в Factory Mode, когда нажимают не только кнопку включения, но и панель громкости при подаче питания одной рукой.

Выход из фактори мода путем выбора пункта «Reboot»

Виды тестов в Factory Mode на андроиде

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

Не все знакомы с Factory Test Android, что это и для чего нужно. Заводские режимы для тестов могут существенно отличаться друг от друга не только на основе различий в релизе и версии операционной системы, но и в связи с требованиями к программным и аппаратным средствам конкретного производителя. Основными тестами в Factory Mode являются:

Необходимо более подробно рассмотреть каждый вид.

Для чего нужен Auto Test

Авто тест — это самый главный и общий тест, при котором будут протестированы основные функции телефона. Он по максимуму пройдется по всей аппаратной части смартфона или планшета и проверит на работоспособность все доступные модули.

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

Manual Test

Аналог Full Test или Auto Test, который выполняет такую же проверку тех или иных средств и модулей гаджета, выясняя, какие из них работают корректно, а какие подлежат замене или вообще не откликаются на запрос.

Clear eMMC Android — что это

Не все знакомы и с параметром Clear Emmc Android, что это и как работает. На самом деле все очень просто. Это сброс данных (кэша и прочих настроек). Он работает аналогично стандартным функциям «Очистка кэша» и «Сброс настроек до заводских параметров», которые доступны в соответствующем разделе приложения «Настройки».

Аналог этого пункта можно найти в рекавери под названием «wipe data/factory reset». Также он может называться «Clear Flash».

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

Процесс загрузи Factory Mode

Что такое Debug Test

Debug Test представляет собой процесс входа в режим отладки и начало проверки на наличие ошибок с их дальнейшим исправлением. В нем можно пройтись по всем проблемам операционной системы андроид и решить их по возможности.

PCBA Test Android — что это

Еще один пункт в фабричном меню, предназначение которого заключается в калибровке датчика движения и приближения, встроенного в переднюю панель корпуса гаджета. Также он может называться «Device PCBA Calibration», но от изменения наименования суть работы не меняется. Процессор и ряд других модулей проверят датчик на работоспособность и откалибруют его в соответствии со стандартными настройками.

Читайте также:  черные точки на помидорах что это такое

Check if Root or Not

Некоторые производители также добавляют в свой фактори моде специальный раздел под названием «Check if Root or Not». Из этого остановится понятно, что весь его функционал направлен на определение, есть ли на данном мобильном устройстве права и привилегии суперпользователя или нет.

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

К сведению! Каким именно образом происходит проверка, будь то поиск специального файла в корневом каталоге операционной системы или запросы через встроенный терминал, знает только производитель устройства.

Очитка данных через специальный пункт «Wipe data»

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

Источник

Factory Mode — как сбросить настройки?

Иногда во время работы смартфона может появиться непонятное меню на английском или китайском языке. Оно называется Factory Mode. Эта статья расскажет о том, что это такое, зачем оно нужно и как из него выйти.

Что такое и зачем нужен Factory Mode

Второе название – Factorykit test. На русский язык эту функцию можно перевести как «заводской режим». Это часть прошивки смартфона на «Андроид», позволяющая вручную проверить работоспособность компонентов устройства перед загрузкой системы.

Рассматриваемых режим запускается в 2 случаях: самостоятельно при невозможности загрузки системы из-за повреждения необходимых файлов и системного раздела целиком (обычно после неудачной перепрошивки) и по требованию пользователя.

Во втором случае запустить заводской режим можно, в зависимости от модели смартфона одним из 2 способов:

Для каждого телефона предусмотрена своя комбинация и поэтому следует попробовать оба варианта.

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

Функции Factory Mode

После входа в factory mode на экране отобразится главное меню, состоящее из 5-12 пунктов. Для навигации используются кнопки громкости (вверх-вниз) и питания («Выбрать»).

Расшифровка наиболее часто встречающихся пунктов меню:

Результаты тестов выводятся посредством 2 сообщений: pass (удачно) и fail (провал).

Выход из Factory Mode

Чтобы выйти из factory mode нужно:

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

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

Источник

Автоматизация тестирования Android приложений

Концепция автоматического тестирования

Задача — с наибольшей точностью автоматизировать действия, которые выполняет тестировщик. Давайте их рассмотрим. В наличии есть несколько приложений и несколько Android устройств. Для каждого приложения и каждого устройства выполняются следующие шаги:

Далее рассматриваются средства, позволяющие автоматизировать перечисленные шаги.

Управление Android устройствами

Для начала нужно выделить компьютер на котором будет запускаться автоматическое тестирование и настроить на нем Android SDK. Примеры приводятся для компьютера с установленной ОС Linux.

На всех тестируемых устройствах нужно отключить экран блокировки и максимально увеличить время ожидания. Для некоторых методов тестирования нужно отключить смену ориентации экрана.

В Android SDK имеются две утилиты для управления устройствами: adb и MonkeyRunner.

Я постараюсь подробно описать автоматизацию действий, использующихся при тестировании. Тем, кто знаком с ADB и MonkeyRunner имеет смысл сразу переходить к разделу «Способы автоматизированного тестирования».

Управление с помощью утилиты ADB

ADB (Android Debug Bridge) – утилита для управления Android устройствами из командной строки. Официальная документация по ADB: developer.android.com/tools/help/adb.html

Проверка работы ADB

Устанавливаем и настраиваем Android SDK, подключаем к компьютеру Android устройства и выполняем команду:

Команда выдаст список всех подключенных устройств. Если список устройств не пуст, значит ADB настроен и работает.

Работа с несколькими устройствами

Основные команды ADB

Открыть консоль на устройстве:

Запустить команду на устройстве:

В Android присутствуют многие стандартные утилиты Linux: ls, cat, dmesg,…

Установить приложение из apk файла:

Название package можно получить из apk файла командой:

Загрузить файл с устройства на компьютер:

Загрузить файл с компьютера на устройство:

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

Чтение логов

Чтение логов в Android производится утилитой logcat.
Домашняя страница утилиты logcat: developer.android.com/tools/help/logcat.html

Считать логи с устройства (блокируется до нажатия Ctrl-C):

Очистить буфер логов на устройстве:

Считать буфер логов на устройстве (выдает текущее содержимое буфера, не блокируется):

Снятие скриншотов с помощью утилиты screencap

Утилита screencap сохраняет текущее содержимое экрана в графический файл:

Утилита screencap имеется на телефонах с Android 4.x и выше. На предыдущих версиях Android снятие скриншотов можно производить с помощью MonkeyRunner.

Пример BASH скрипта для тестирования приложения c помощью ADB

Управление с помощью MonkeyRunner

Утилита MonkeyRunner предоставляет API для написания скриптов, которые управляют Android устройстами. С помощью MonkeyRunner можно написать скрипт на языке Python, который устанавливает Android приложение, запускает его, имитирует действия пользователя, снимает скриншоты и сохраняет их на компьютер. Утилита MonkeyRunner использует Jython для выполнения скриптов.

Чтение логов с помощью MonkeyRunner

Скрипт запишет логи в файл example.log в текущей директории.

Читайте также:  какой краской покрасить гипсовые садовые фигурки

Снятие скриншотов

Скрипт снимает скриншот и сохраняет его в файл screenshot.png в текущей директории.

Пример управления устройством с помощью MonkeyRunner

Средства автоматизированного тестирования

Тестирование с помощью monkey

Представьте, что устройство попало в цепкие лапы очень активной и творческой обезьяны – утилита monkey призвана имитировать подобную ситуацию.

Утилита monkey входит в состав Android SDK. Утилита отправляет на устройство поток псевдо-случайных действий пользователя. Параметры командной строки задают количество действий пользователя, соотношение их типов и имя тестируемого пакета, чтобы, например, обезьяна не вышла за пределы тестируемого приложения и не начала рассылать SMS по всем контактам из адресной книги.

Примеры использования и перечень параметров приведены на домашней странице: developer.android.com/tools/help/monkey.html

Главное достоинство monkey – отсутствие затрат на поддержку. Кроме того, стресс-тестирование приложения потоком произвольных событий может обнаружить нетривиальные ошибки.

Тестирование с помощью MonkeyRunner

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

Тестирование с помощью getevent/sendevent

На устройстве должны воспроизвестись записанные действия.

Тестирование с помощью Robotium

В отличии от рассмотренных ранее способов Robotium не входит в состав Android SDK, а распространяется под Open Source лицензией.

Главное отличие Robotium в том, что тестовые действия описываются на уровне интерфейса приложения. В рассмотренных ранее способах тестовые действия явно или неявно описывались на уровне устройств ввода.

Например, в приложении нужно нажать кнопку «OK». С помощью скрипта MonkeyRunner нажатие на кнопку реализуется как: «Коснуться точки экрана с координатами (x0, y0)». С помощью Robotium это реализуется как: «Нажать кнопку с текстом «OK»».

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

Кроме того, Robotium позволяет проверять реакцию приложения на действие.

Например, после нажатия на кнопку «OK» в приложении должен появиться список с элементом «Item 1». С помощью Robotium можно проверить, появился ли список с таким элементом.

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

Сравнение способов тестирования

Способ тестирования Достоинства Недостатки
Monkey – поток случайных действий пользователя. Отсутствуют затраты на сопровождение.
Не зависит от устройства.
Стресс-тестирование позволяет обнаружить нетривиальные ошибки.
Качество тестирования варьируется от приложения к приложению.
Найденные ошибки сложно воспроизвести.
Нет проверки состояния приложения.
MonkeyRunner – скрипт управления устройством. Гибкость. Сложность написания и поддержки скриптов даже для простых приложений.
getevent/sendevent – запись/воспроизведение действий пользователя. Для записи последовательности действий не требуются навыки программирования. Записанная последовательность действий подходит только к одному устройству при фиксированной ориентации.
При изменении интерфейса приложения необходимо заново записать последовательность действий.
Нет проверки состояния приложения.
Robotium – сценарий тестирования интерфейса приложения с проверкой состояния. Действия описываются на уровне интерфейса приложения.
Сценарий может быть независимым от разрешения экрана и ориентации устройства.
После совершения действия можно проверять состояние приложения.
Сложность написания сценариев на языке Java. При изменении интерфейса приложения сценарий придется модифицировать.

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

В результате тестирования приложения перечисленными выше способами мы получили логи и скриншоты. Теперь их нужно проанализировать на наличие ошибок.

Анализ логов

Анализ скриншотов

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

Также полезно сравнивать скриншот до и после запуска приложения – это позволяет определять случаи, когда приложение аварийно завершается без сообщений на экране и в логах.

MonkeyRunner позволяет сравнить два скриншота с заданным допуском в процентах:

К сожалению, в API MonkeyImage не предусмотрена функция загрузки из файла. Поэтому для сравнения сохраненных скриншотов придется писать свою функцию, например с помощью Python Imaging Library.

Сброс состояния устройства после тестирования

После тестирования приложения устройство нужно вернуть в первоначальное состояние.

Многократное нажатие кнопки «Назад»

Нажимаем кнопку «Назад» используя MonkeyRunner:

На практике этот вариант оптимален, так как имитирует поведение реального пользователя.

Заключение

В заметке были рассмотрены некоторые способы автоматического тестирования Android приложений, их достоинства и недостатки. Кроме того, рассмотрены инструменты, входящие в Android SDK или распространяющиеся под Open Source лицензией.

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

Источник

Автотесты на Android. Картина целиком

Автотесты под Android — это непросто. Чтобы выстроить процесс автотестирования, надо запланировать и решить множество задач. Но самая большая беда заключается в том, что нигде нет полного описания, что вообще включает в себя автотестирование под Android, каковы его основные стадии. Отсутствует цельная картина. Этой статьей мы хотим восполнить пробел.

Она также выступит в роли схематичной дорожной карты работы Avokado Project. Мы верим в то, что в скором времени разворачивание автотестирования будет занимать куда меньше времени, чем сейчас. И активно работаем в этом направлении.

Зачем нужны автотесты?

Есть мнение, что UI-тесты не нужны, если у вас достаточное количество юнит- и интеграционных тестов. Но от следующей метафоры никуда не деться. Представьте, что вы собираете велосипед. У вас есть два хорошо протестированных колеса, протестированная рама вместе с седлом, протестированная система педалей с цепью и рулем. То есть мы с вами имеем хороший набор интеграционных и юнит-тестов. А велосипед-то в итоге поедет? Чтобы это проверить, вы нанимаете ручных тестировщиков, которые перед каждым релизом должны убедиться, что безупречные детали корректно взаимодействуют друг с другом, и велосипед будет ездить и доставлять пользователю удовольствие.

Читайте также:  чертовы ворота почему так называется

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

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

Все это естественным образом подводит к необходимости автоматизации проверки пользовательских сценариев, то есть написания end-to-end- или автотестов. У «Авито» есть рассказ о том, как автотесты помогают и сколько они стоят (2019 год). Однако большинство команд такой метод отпугивает своей сложностью и необходимостью вкладывать существенные ресурсы, чтобы выстроить процесс. Это возвращает нас к цели данной статьи и вообще к одной из целей Avokado Project — стандартизировать процесс автотестирования в Android и существенно уменьшить его стоимость.

Картина целиком

Итак, обещанная картина целиком.

Если вы чего-то не понимаете, не переживайте. Мы сейчас пройдемся подробно по всем пунктам.

Процесс написания тестов

На первом шаге давайте попробуем написать тесты у себя на машине и запустить их локально.

Выбор инструментов для написания автотестов

Стоит сразу определиться со стеком технологий, который мы будем использовать для написания тестов.

Первая развилка — это выбор между кроссплатформенным решением (Appium и т. д.) и нативным решением (Espresso, UI Automator). Много копий сломано в этих спорах. Рекомендуем посмотреть выступление наших коллег, полное драматизма и накала страстей.

Спойлер — мы за нативные решения. По нашему опыту, они:

Кроме того, Google поддерживает Espresso и UI Automator.

Больше почитать про сравнение вы можете в статьях:

На чистом Espresso и UIAutomator нынче редко кто пишет. Разработчики сделали различные удобные обертки, которые решают их проблемы. Сейчас у нас готовится статья об этих инструментах с классификацией и сравнением. Если кратко, то фреймворк, на который мы делаем ставку, это Kaspresso.

Kaspresso

Kaspresso — это фреймворк, который:

Вы можете прочитать о Kaspresso на GitHub и Habr.

Test runner

Вы написали несколько тестов. Теперь их нужно запустить. За этот этап отвечает Test Runner, или просто раннер.

Что нам предлагает Google? Утилиту AndroidJUnitRunner и ее специальный режим — Orchestrator. AndroidJUnitRunner делает то, что от него и требуется — просто запускает тесты, позволяя еще и параллелить их выполнение. Orchestrator позволяет продолжить выполнение тестов, даже если некоторые из них упали, и дает возможность минимизировать общее состояние между тестами. Так достигается изоляция исполнения каждого теста.

Но со временем требований к раннеру становится все больше. Вот некоторые из них:

На рынке есть несколько сторонних раннеров. Среди всех них, самым перспективным мы считаем Marathon, который довольно быстро настраивается и удовлетворяет части обозначенных выше требований. Например, он поддерживает распараллеливание тестов и подготовку результатов прогона в формате, пригодном для отображения в Allure.

Однако, Marаthon, к сожалению, не обладает некоторыми важными, по нашему мнению, свойствами. В частности, в нем нет:

Кроме того, мы считаем, что раннер должен быть платформенным, то есть либо для Android, либо для iOS. Это обусловлено уникальной спецификой каждой ОС и вытекающей отсюда сложностью внесения изменений в раннер.

Поэтому прямо сейчас мы работаем над Avito Runner, в котором хотим собрать все лучшие и зарекомендовавшие себя наработки и идеи. Ждите будущих анонсов!

На чем запускать тесты

Параллельно с вопросом о том, какой раннер выбрать для тестов, перед вами встает другой: а на чем лучше запускать тесты? Есть три опции:

Мы делаем ставку на Docker.
В сети есть разные Docker-образы Android-эмуляторов, мы рекомендуем обратить внимание на следующие:

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

Инфраструктура

Вы написали сотни UI-тестов. Часть из них вы хотите запускать в рамках PR, а значит, весь тестовый набор должен проходить в максимально короткие сроки, например, до 20 минут. Вот тут наступает настоящее масштабирование.

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

Итак, что вам примерно предстоит:

В ближайшее время мы планируем выпустить Avito Runner и статьи, которые помогут настроить инфраструктуру.

Остальное

Не забывайте про такие немаловажные моменты, как:

Про все это мы еще обязательно поговорим.

Заключение

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

Источник

Сказочный портал