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

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2019-08-31 08:30

разработка по

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

AirTest IDE разработан компанией NetEase и предназначен для "hard-to-automate" приложений. Этот бесплатный инструмент отлично подходит для тестирования многопользовательских игр (об этом говорят и сами разработчики). Заявлено о поддержке запуска тестов сразу на большом количестве устройств, открытости исходного кода, а также легкое написание тестов.

AirTest IDE состоит из 2 фрейворков: AirTest и Poco. Для написания тестов используется Python 2.7 и Python 3.3.

Приложение может быть использовано как на Windows, так и на MacOS и позволяет автоматизировать приложения со следующих OS: Windows, iOS, Android.

Соответственно, проект представлен на GitHub в четырех ипостасях: Airtest, Poco, iOS-Tangent, multi-device-runner.

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

Рассмотри отдельно фреймворки:

Airtest.

Airtest — это image recognition кроссплатформенный фреймворк для мобильных игр и приложений в основе которого лежит image thersholding. AirTest IDE дает возможность взаимодействовать с приложением используя следующие команды:

touch, wait, swipe, exists, text, keyevent, snapshot, sleep, assert_exists, assert_not_exists, assert_equal, assert_not_equal.

К примеру, команда keyevent команда отвечает за "нажатие физических кнопок" устройства, таких как Home, Power, Menu, Back. При использовании большинства команд пользователю предлагают выделить часть экрана рабочего устройства, скриншот которого будет использоваться для соответствующей команды (touch, swipe, assert и т.д.).

К плюсам Airtest можно отнести:

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

• Точное определение картинки, которая используется в коде, на активном рабочем девайсе. Плюс ко всему в отчете указывается процент совпадения (сравнение) картинки, используемой в коде и картинки с экрана рабочего устройства.

• После каждого запуска можно создать отчёт используя сочетания клавиш CtrlCmd+L. Удобный отчет предоставляет такую информацию как: виды assert их результаты, а также каждый тестовый шаг выделен в отдельную под-секцию с информацией о том, куда AirTest кликнул, где ожидал картинку, процент совпадения картинок и т.п.

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

• Многопоточность. Есть возможность подключить множество тестовых устройств и запускать их в параллельном режиме.

Не обошлось и без минусов:

• Если в процессе работы попадаются элементы, которые визуально выглядят одинаково, к примеру ползунки, кнопки и т.п., то с большой вероятностью AirTest не поймёт какой именно элемент управления вы хотите использовать. Об этом будет указано в соответствующей ошибке. Однако этот минус частично обходится при помощи второго фрейморка (Poco).

• Сравнение изображений (из кода и актуальных, на экране) происходит в черно-белом режиме. Иногда бывает важно оценить визуальный облик персонажа – цвет одежды, кожи оружия и т. д. Если персонажи визуально различаются, но на экране изображены одинаково (одни позы и т.п.), то проверка с большой долей вероятности пройдёт успешно. В опциях распознавания изображения есть галочка "rgb", которую можно использовать, но она работает не очень эффективно, если у вас маленькое изображение.

• Нельзя "заморозить" экран во время использования приложения, чтобы аккуратно сделать скриншоты. Время от времени нужно "вылавливать" нужный кадр.

• Т.к. приложение в открытой бете, то вы можете встречать различные досадные ошибки или неточности, к примеру такие как невозможность изменить размер окна со встроенным приложением на Windows. Сейчас авторы обновляют AirTest IDE раз в несколько месяцев и, надеюсь, такие оплошности будут в скором времени исправлены.

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

Poco.

Poco — это универсальный фреймворк для автоматизации пользовательского интерфейса (UI), который предоставляет независимые от (игрового) движка мощные API. Те, в свою очередь, извлекают иерархию UI элементов во время выполнения приложения. Благодаря этому пользователь может всю иерархию элементов на текущей странице, в несколько кликов "достучаться" до нужного ему элемента и т.п. Также данный фреймворк позволяет "замораживать" текущий экран для написания кода на основе иерархии элементов текущего окна. Poco призван помочь AirTest для понимания о каком именно UI элементе идет речь в тестах, но никто не мешает вам писать все тесты используя только этот фреймворк.

Все тесты пишутся на Python. Реализации команд можно найти в соответствующих API: airtest.core.api module, airtest.core.android package, airtest.core.ios package, airtest.core.win package

Пройдемся по плюсам и минусам Poco.

Плюсы:

• Есть поддержка ряда важных игровых движков, включая Unity3D, cocos2dx-js, cocos2dx-lua, NetEase internal engines, а также поддержка нативных приложений Android/iOS. Никто не мешает написать свой движок, для этого есть отдельная инструкция. Разработчики обещают поддержку Unreal Engine, но, пока что, сроки не обозначены.

• Иерархия UI элементов на экране возвращается в режиме реального времени.

• Быстрый запуск и пробег по тестам.

• Поддержка Python 2.7 и 3.3+. Тесты написанные однажды – работают везде.

• Есть возможность подключать любые внешние библиотеки.

• Есть поддержка GPS, акселерометра и гиро сенсоров, а также поддержка портретного и альбомного режимов отображения.

Минусы:

• Некорректное перемещение объектов (swipe команда) в некоторых случаях. К примеру, если указать объект, который нужно переместить и координаты второго объекта, который является финальной точкой. В этих редких случаях Poco промахивается с финальным местоположением, но в отчётах указаны корректные данные перемещения (вектор) и шаг считается успешно выполненным. Проблема воспроизводится при работе с Windows 10.

• При выборе некоторых элементов с большими макетами (layout), выделение может перекрыть окно Poco Assistant и нет возможности выбрать другие элементы, пока не снято выделение с текущего. Чтобы убрать выделение приходится пользоваться сочетанием клавиш Alt+F4.

В Airtest IDE есть даже свой Selenium плагин, при помощи которого можно автоматизировать web-проекты, но только используя Chrome браузер. Остальные, на данный момент, не поддерживаются.

AirTest IDE — это очень многообещающая разработка, которая предназначена для автоматизации UI в играх, но, на данный момент, не подходит для тестирования игрового процесса как такового. Чтобы начать писать простейшие тесты не нужны глубокие знания в автоматизации и программировании, достаточно иметь базовое представление о работа с Python.

С «детскими» ошибками (невозможностью изменить размер окна с рабочим устройством, перекрытием большого выделенного объекта основного интерфейса программы и т.п.) вполне можно смириться, особенно учитывая тот факт, что приложение находится в Beta стадии.

Комментарии: