Сегодня я хочу вам рассказать о достаточно новом open-source инструменте для автоматизированного тестирования под названием Airtest. В дальнейшем я сделаю ещё несколько статей с подробным рассказом об отдельных элементах данного инструментария и как с ними работать, а сейчас у меня цель познакомить вас с ним и дать общее представление о нем.  Это первая статья из трёх. Вторая часть описывает фреймворк для распознавания изображений (Image Recognition) — AirTest, а третья и завершающая посвящена Poco — фреймворку UI автоматизации при помощи написания кода. AirTest IDE разработан компанией NetEase и предназначен для "hard-to-automate" приложений, таких как, к примеру, игр. Собственно на них и делается основной упор разработчиками, хотя это не мешает использовать AirTest и для любых других приложений. AirTest IDE работает под Windows, MacOS X и Linux и содержит в себе 2 фреймворка: AirTest и Poco. Данная разработка была представлена Xin Liu на Android Game Developer Summit 2018. Для написания тестов используется Python 2.7 и Python 3.3+. Такие важные вещи как поддержка запуска тестов сразу на большом количестве устройств, открытость исходного кода и бесплатность приложения, а также легкое написаное тестов — это те преимущества, которые выделяются разработчиками. Приложение может быть использовано как на Windows, так и на MacOS и позволяет автоматизировать приложения со следующих OS: Windows, iOS, Android.  AirTest Project на GitHub содержит 4 проекта: Airtest, Poco, iOS-Tangent, multi-device-runner.
Стоит также упомянуть, что NetEase предоставляет свою ферму физических устройств для автоматизированного тестирования, которая называется AirLab. Вкратце о фреймворках. 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. Об особенностях и параметрах команд я расскажу в отдельном статье посвященном более подробному изучению AirTest и Poco фреймовров. Сейчас стоит упомянуть, что keyevent команда отвечает за "нажатие физических кнопок" устройства, таких как Home, Power, Menu, Back. При использовании большинства комманд пользователю предлагают выделить часть экрана рабочего устройства, скриншот которого будет использоваться для соответствующей команды (touch, swipe, assert и т.д.).  Плюсы Airtest, которые я могу выделить после работы: Минусы Airtest, которые я могу выделить после работы: 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, которые я могу выделить после работы: Минусы Poco, которые я могу выделить после работы: Для полноты картины стоит ещё упомянуть, что в Airtest IDE есть свой Selenium плагин, при помощи которого можно автоматизировать ваш web проект, но используя только Chrome браузер. Остальные, на данный момент, не поддерживаются. Лично я с ним ещё не работал, поэтому не могу сказать о его работе, но и пропустить его в этом кратком описании было нельзя.  Как итог, я бы сказал, что AirTest IDE — это очень многообещающая разработка, которая предназначена для автоматизации UI в играх, но, на данный момент, не подходит для тестирования игрового процесса как такового. Если у вас достаточно много UI элементов и/или много устройств для проверки и вы не хотите тратить кучу человеко-часов, то данная IDE вполне может стать вашей палочкой-выручалочкой. Чтобы начать писать простейшие тесты не нужны глубокие знания в автоматизации и программировании, достаточно иметь базовое представление о работа с Python. Безусловно так вы далеко не уйдете и подучить данный язык программирования придется, но для старта и понимания насколько реально данная программа вам подходит, вам хватит за глаза. Единственное, что сейчас расстраивает, так это различные досадные ошибки связанные с, к примеру, невозможностью изменить размер окна с рабочим устройством (Windows приложением) после его встраивания, перекрытием большого выделенного объекта основного интерфейса программы и т.п., но с этим вполне можно смириться, особенно учитывая тот факт, что приложение находится в Beta стадии.  Quality Enigneer