Привет, Хабр!
Эта статья об одной крошечной наработке (да уж, по сравнению, например, со Spring), которая при некоторой доводке до ума, может найти применение в тестировании как вэб, так и мобильных приложений, или быть просто неким любопытным примером для будущих разработок в этом направлении. В данном случае следует подразумевать тесты со стороны UI. Я думаю, это интересно и по своему круто, что у кого-то получился подобный прототип. По сути, эта публикация посвящена одному из моих хобби. В свободное время я попробовал поработать над упрощением и унификацией способов описания интерактивности с вэб и мобильными приложениями, используя WebDriver API.
А так же — это работа над ошибками статей «Про Selenium и один «велосипед»» и «От велосипеда к…».
Я подразумеваю, что это открывашка серии небольших последовательных топиков. Благодаря советам Dmitry_Zhariy я решил оформить их в не совсем обычном формате… Здесь будет мало текста, но будут видео материалы, в которых я постараюсь наглядно и сжато раскрыть тему. Надеюсь, я не потрачу зря ваше время.
Статьи могут быть интересны как QA — специалистам, так и разработчикам. Людям, что просто интересуются open source'ом я очень рад. Если кто-то не знаком с Selemium и Appium — не беда. Ведь всегда можно сначала погуглить!..
Здесь будут простые примеры. В следующих статьях (если есть смысл) — более продвинутые.
План:
— ТТХ;
— Начнем;
— Первый вэб тест;
— Первый тест мобильного приложения;
— Кросс-платформенный тест;
— Заключение или продолжение следует.
В качестве «морской свинки» выбрана социальная сеть «ВКонтакте» — вэб и нативное приложение для Android. Вместо лишних слов, я просто продемонстрирую действия, которые будут «проверены».
Ссылка на github.
Набросок изначально был написан на 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 достаточно прописать следующую зависимость:
${actualVersion} можно узнать здесь.
Вперед!
Github: заготовки.
Github: тест.
От себя: Я думаю у тех, кто ежедневно использует разработку Яндекса HtmlElements может возникнуть чувство дежавю. Действительно, я кое-то позаимствовал оттуда. НО! Это простой пример, для затравки. Есть несколько более глубокие отличия, которые я пока обойду и представлю в следующих публикациях.
Дальше, я думаю, материал интереснее!
Github: заготовки.
Github: тест.
Я мог бы остановиться на этом, но ниже то, что могло бы считаться гвоздем программы.
Github: заготовки.
Github: тест.
На этом пока все!
В данной публикации я просто представил вам то, что получилось. Надеюсь, было интересно.
Я не стал делать настоящий тъюториал, т. к. такой формат подходит больше для решений, которые уже зарекомендовали себя и активно внедряются. Полезность этой разработки пока виртуальная, я думаю — ее лучше видно со стороны.
Полный «тъюториал» можно посмотреть на github. Кстати, здесь уже материал, не раскрытый в этой статье, но готовый к следующей.
Здесь были показаны очень простые вещи. В следующих (я предполагаю еще 2-3 публикации) я хочу продемонстрировать более интересные наработки. Но! Нужны ли следующие публикации — решать вам.
Спасибо за внимание!
Эта статья об одной крошечной наработке (да уж, по сравнению, например, со Spring), которая при некоторой доводке до ума, может найти применение в тестировании как вэб, так и мобильных приложений, или быть просто неким любопытным примером для будущих разработок в этом направлении. В данном случае следует подразумевать тесты со стороны UI. Я думаю, это интересно и по своему круто, что у кого-то получился подобный прототип. По сути, эта публикация посвящена одному из моих хобби. В свободное время я попробовал поработать над упрощением и унификацией способов описания интерактивности с вэб и мобильными приложениями, используя WebDriver API.
А так же — это работа над ошибками статей «Про Selenium и один «велосипед»» и «От велосипеда к…».
Я подразумеваю, что это открывашка серии небольших последовательных топиков. Благодаря советам Dmitry_Zhariy я решил оформить их в не совсем обычном формате… Здесь будет мало текста, но будут видео материалы, в которых я постараюсь наглядно и сжато раскрыть тему. Надеюсь, я не потрачу зря ваше время.
Статьи могут быть интересны как QA — специалистам, так и разработчикам. Людям, что просто интересуются open source'ом я очень рад. Если кто-то не знаком с Selemium и Appium — не беда. Ведь всегда можно сначала погуглить!..
Здесь будут простые примеры. В следующих статьях (если есть смысл) — более продвинутые.
План:
— ТТХ;
— Начнем;
— Первый вэб тест;
— Первый тест мобильного приложения;
— Кросс-платформенный тест;
— Заключение или продолжение следует.
В качестве «морской свинки» выбрана социальная сеть «ВКонтакте» — вэб и нативное приложение для Android. Вместо лишних слов, я просто продемонстрирую действия, которые будут «проверены».
Ссылка на github.
ТТХ
Набросок изначально был написан на 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.