Pull to refresh

Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!

Reading time4 min
Views6K
Привет, Хабр!

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

А так же — это работа над ошибками статей «Про Selenium и один «велосипед»» и «От велосипеда к…».

Я подразумеваю, что это открывашка серии небольших последовательных топиков. Благодаря советам Dmitry_Zhariy я решил оформить их в не совсем обычном формате… Здесь будет мало текста, но будут видео материалы, в которых я постараюсь наглядно и сжато раскрыть тему. Надеюсь, я не потрачу зря ваше время.

Статьи могут быть интересны как QA — специалистам, так и разработчикам. Людям, что просто интересуются open source'ом я очень рад. Если кто-то не знаком с Selemium и Appium — не беда. Ведь всегда можно сначала погуглить!..

Здесь будут простые примеры. В следующих статьях (если есть смысл) — более продвинутые.

План:
— ТТХ;
— Начнем;
— Первый вэб тест;
— Первый тест мобильного приложения;
— Кросс-платформенный тест;
— Заключение или продолжение следует.


В качестве «морской свинки» выбрана социальная сеть «ВКонтакте» — вэб и нативное приложение для Android. Вместо лишних слов, я просто продемонстрирую действия, которые будут «проверены».



Ссылка на github.

ТТХ


image

Набросок изначально был написан на java 7, но затем мигрировал на восьмую версию. Мне было просто интересно попробовать ее возможности + она содержит вещи, которые помогли уменьшить объем кода. Некоторые фишки, такие как Repeatable Annotations нашли свое явное применение в виде фич фрэймворка.

Selenium — в представлении не нуждается. Используется для автоматизации взаимодействия с десктопными браузерами:
— Mozilla Firefox;
— Google Chrome;
— Internet Explorer;
— Safari;
— PhantomJS (из-за него пока нельзя поднять версию Selenium до последней, ждем публикации фикса).

Appium — относительно молодой фрэймворк, разработанный для автоматизации взаимодействия с мобильными браузерами и приложениями. В его состав входят NodeJS сервер и клиентские библиотеки на различных языках программирования. Он все еще активно развивается, хотя на мой взгляд уже не такой рыхлый, каким был был на момент написания этой статьи. Я сам время от времени подкидываю свои пять копеек в развитие клиентских библиотек. Сначала это был Java-client, думаю немного подсобить с .NET.

Используется для автоматизации взаимодействия с:
— Android Chrome;
— родной браузер Android и Chromium — недавно прикручено к описываемой разработке;
— Mobile Safari;
— нативными и гибридными приложениями — пока Android и iOS. В перспективе — Firefox OS и Windows Phone.

Внутри фрэймворка существует система из медиаторов, фабрик, внедрений зависимостей и т.д. Все это хозяйство живет за счет…

Spring + AspectJ — на мой взгляд получилась отличная альтернатива EventFiringWebDriver и не только. Я думаю — есть смысл подумать, как можно еще расширить применение этой сладкой парочки.

CGLIB поддерживает значительный объем сквозной функциональности.

Много других второстепенных библиотек…

Начнем


Операционная система — Windows 7/8, Mac OS X (минимум 8.5). Про Linux/Unix/Ubuntu ничего сказать не могу, ибо не проверял. Каюсь, грешен, постараюсь исправится!

Во первых — надо скачать и установить Java. Как минимум Java SE Development Kit 8.
Далее. Устанавливаем новенькую IDEA или скачиваем Eclipse — лучше сразу Luna.
Если интересны мобильные платформы, то советую ознакомиться и все настроить согласно требованиям Appuim. Правда, тут ничего не сказано ни слова о Genymotion (Android). Но вы можете попробовать. Мне лично очень нравится :)

Настроили?

Открываем среду разработки. Создаем Maven — проект. Отлично! В pom.xml достаточно прописать следующую зависимость:

<dependencies>
        ...
    <dependency>
        <groupId>com.github.arachnidium</groupId>
        <artifactId>arachnidium-app-model</artifactId>
        <version>${actualVersion}</version>
    </dependency>
        ...
  </dependencies>


${actualVersion} можно узнать здесь.

Вперед!

Внимание!!! Я вангую, что возможны замечания относительно видео. Обычно выступающий кодит и поясняет. У меня рука еще не набита. Мне было проще все заранее заготовить а потом объяснять по написанному. Но если такой формат всех устроит… На подготовку всех трех примеров у меня ушло 1 час (+- 10 минут) со всеми отладками. Если что — качество видео обсудим в комментариях. Пока — за каждым роликом будут следовать соответствующие ссылки на github.


Первый вэб тест




Github: заготовки.
Github: тест.

От себя: Я думаю у тех, кто ежедневно использует разработку Яндекса HtmlElements может возникнуть чувство дежавю. Действительно, я кое-то позаимствовал оттуда. НО! Это простой пример, для затравки. Есть несколько более глубокие отличия, которые я пока обойду и представлю в следующих публикациях.

Дальше, я думаю, материал интереснее!

Первый тест мобильного приложения




Github: заготовки.
Github: тест.

Я мог бы остановиться на этом, но ниже то, что могло бы считаться гвоздем программы.

Кросс-платформенный тест




Github: заготовки.
Github: тест.

На этом пока все!

Заключение или продолжение следует


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

Полный «тъюториал» можно посмотреть на github. Кстати, здесь уже материал, не раскрытый в этой статье, но готовый к следующей.

Здесь были показаны очень простые вещи. В следующих (я предполагаю еще 2-3 публикации) я хочу продемонстрировать более интересные наработки. Но! Нужны ли следующие публикации — решать вам.

Спасибо за внимание!
Only registered users can participate in poll. Log in, please.
Вы хотите продолжение?
80.77% да! :)42
23.08% нет :(12
52 users voted. 33 users abstained.
Tags:
Hubs:
Total votes 5: ↑4 and ↓1+3
Comments1

Articles