В начале года в Хельсинки прошла первая официальная конференция RoboCon 2018, посвящённая инструменту автотестирования Robot Framework. И мы, мейнтейнеры группы автоматизации интеграционного и системного тестирования компании «Петер-Сервис», не могли такое событие пропустить. Потому что этот инструмент у нас в компании используется довольно широко: в частности, в нашей группе с помощью него реализован продукт TORS (Testing of Release Stands).
Организаторы конференции пообещали проводить её ежегодно. Но уже в этот раз она собрала более 250-ти человек, сразу же сделавшись самой большой встречей сообщества разработчиков и тестировщиков, использующих вышеупомянутый фреймворк.
Абсолютное большинство участников были из Финляндии. Однако встречались и те, кто специально приехал из США, Канады, Испании, Германии, России и других стран, поэтому основным языком конференции избрали английский. Доклады шли одним потоком, что позволило не выбирать наугад по названиям, а прослушать все. И я не могу не отметить неплохой баланс в разнообразии тем: какие-то выступления были посвящены организации процесса тестирования, другие — разработке с использованием конкретных библиотек, а третьи — истории фреймворка и сообщества.
Открывал конференцию основатель Robot Framework Pekka Klarck с почти часовым докладом «How did we get here? Where do we go next?». Докладчик припомнил, как выглядел прототип фреймворка, который он разрабатывал ещё в университете, не без гордости сообщил, что сегодня Robot Framework является де-факто стандартом для тестирования в Финляндии, а также анонсировал планы на будущее.
Кого-то может удивить утверждение насчёт стандарта. Естественно, из-за сравнения фреймворков копий уже сломано немало, и вряд ли кто когда-либо сможет окончательно определить лучший. Но мне и моим коллегам Robot Framework очень по душе, и сейчас я попробую назвать некоторые его преимущества:
- Keyword Driven Testing. Имея уровень абстракции в виде ключевых слов, мы получаем возможность составлять из них тесты, имея минимальный опыт программирования.
- Киворды пишутся на Python: язык простой, но при этом мощный. При этом при желании можно переключиться на Java. С учётом предыдущего пункта это даёт весьма низкий порог вхождения.
- Благодаря продуманной архитектуре, функционал Robot Framework очень легко расширяется с помощью новых библиотек, листенеров и преран-модифайеров.
- Есть поддержка Selenium «из коробки», параллельного запуска тестов.
- Каждый, кто пользовался инструментом, отмечает удобный и красивый лог прогона тестов – некоторые даже и выбирают Robot только из-за этого.
- Запуск из командной строки, что позволяет легко использовать в контейнерах, билд-цепочках.
- Большое живое сообщество: люди заинтересованы в развитии фреймворка, по любому вопросу ответ можно получить в течение дня.
Возвращаюсь к докладу Pekka Klarck. Итак, в ближайших планах Robot Framework на будущее:
- Выпуск новой версии 3.0.3 с незначительными улучшениями и баг-фиксами.
- Переход SSHLibrary на Python 3. Весь Robot Framework активно переделывается под третью версию, но SSHLibrary в этой задаче имеет наивысший приоритет, так как это самая большая на данный момент библиотека, работающая лишь на 2.7.
- Новая библиотека для тестирования REST/JSON, которой был посвящён отдельный доклад её автора Anssi Syrjasalo. Впрочем, библиотека ещё дорабатывается, и логирование пока не реализовано до конца.
- Выпуск версии 3.1 с новым статусом теста. К обычным Passed/Failed добавится статус Skipped для тестов, которые по тем или иным причинам исключены из прогона.
В долгосрочной перспективе:
- Переработка конструкций if/else.
- Переработка User Guide.
- Переработка редактора RIDE.
- Фокус на расширении использования фреймворка вне Финляндии.
- Выпуск полноценной книги о Robot Framework (пока с описаниями и мануалами к инструменту немного туговато).
Благодаря посту в google-groups о нашем участии в конференции, в перерывах между докладами многие подходили к нам познакомиться. Некоторых интересовала анонсированная в посте библиотека для ReportPortal, другим было просто любопытно узнать об использовании Robot Framework в нашей стране. Ведь в России фреймворк пока не очень популярен (и, на наш взгляд, зря).
Последующие доклады были жёстче ограничены по времени: 30 минут, из которых 10 отведены для вопросов. В докладах Deau Regis «The naked truth about successful test automation journey» и Aldina Codesso-Lipponen «Mega Robot projects, what to expect» формулировались общие рекомендации для больших проектов, и было очень приятно отметить для себя, что у нас все эти рекомендации и так уже учтены (в основном они касались код-ревью, использованию системы контроля версий, билд-сервера).
Отдельно хочется упомянуть доклад Ed Manlove «The Importance of Open Source Communities», который имел целью убедить слушателей влиться в сообщество Robot Framework не только в роли пользователей, но и в качестве разработчиков. Доклад был рассчитан на весьма широкую аудиторию, поэтому автор сознательно отказался от погружения в технические вопросы и вместо этого использовал отсылки к поп-культуре, активно жестикулировал и вообще вёл себя свободно и непосредственно, а в конце устроил для зала небольшой интерактив с вопросами.
Об эффекте, произведённом этим докладом, можно было судить на следующий день, когда началась секция Sprints, где собрались люди, стремящиеся занимать активную роль в сообществе. Половина из пришедших была явно вдохновлена выступлением Эда. Многие из них были абсолютными новичками – то есть, вообще без опыта программирования на чём бы то ни было. Было очевидно, что доклад Эда очень их замотивировал: многие из пришедших только там впервые услышали, как делается open-source проект, и одновременно почувствовали, что им по силам принять в нём участие даже с их скромными знаниями (пришлось отдельно объяснять начинающим про модели ветвления, систему контроля версий и т. п.).
В целом весь второй день представлял собой логическое развитие вышеописанного доклада и имел целью показать, что в разработке open-source приложения может участвовать каждый. После вступительных слов и инструкции по github все разделились на три группы разработки:
- плагин Jenkins;
- Selenium;
- core.
Так как большая часть лично моей работы в последнее время была связана с утилитой параллельного запуска pabot, я очень надеялся, что её автор Mikko Korpela сделает отдельную группу, но он предпочёл присоединиться к Selenium. Впрочем, Микко предложил ознакомиться с выложенными им тремя видео на youtube о добавлении нового функционала в pabot и присоединиться к обсуждению в комментариях.
Выбирая из того, что оставалось, я остановился на секции core. И это оказалось гораздо интереснее, чем я ожидал, поскольку работу в секции возглавлял сам Pekka Klarck. Задачи для разработки были взяты из issues в github, специально помеченных тэгом RoboCon (и это тоже было сделано для новичков, пока не способных самостоятельно подобрать себе задание адекватного уровня сложности). В принципе, никто всерьёз не ставил целью решить какую-либо из этих задач за 3-4 часа, поэтому я решил взять issue "Need While Loop Keyword". Суть её сводилась к реализации теста с ключевым словом «while» (при существующем аналоге для «for», готового аналога для «while» не было реализовано). Хотя мы в своём коде и выносим всю работу с циклами и логикой в python, как, кстати, советует делать сам Pekka, добавление нового киворда показалось мне хорошей возможностью разобраться, как работает Robot Framework изнутри. Я надеялся опереться на уже реализованный цикл «for»… Но, конечно же, всё оказалось намного сложнее добавления одного метода. И всё равно: даже сама по себе попытка разобраться с задачей помогла мне лучше понять, как именно работает Robot Framework.
Подведу итоги. Robot Framework активно развивается и, очевидно, будет расширять и функционал, и число пользователей. Чрезвычайно приятно было осознать, что мы в нашей компании не только идём в ногу с сообществом RF, но и во многом опережаем его: к примеру, только треть зала знала, что такое pabot, а про использование headless режима браузера для тестирования WebUI слышали лишь единицы.
Лично мне ощутимую пользу принесло ещё и начало активной деятельности в репозитории RF. Правда, для нашей рабочей группы это не в новинку: мы постоянно ставим задачи и комментируем в репозитории Robot Framework, репозиторий Peter-Service R&D содержит как разработанные (cassandracqllibrary, apachetomcat, reportportal-ng), так и доработанные нами (Selenium2Library, SSHLibrary, Rammbock) библиотеки для фреймворка. А один из коллег и вовсе занимает второе место в списке контрибьютеров pabot, по количеству коммитов и строк кода уступая лишь создателю утилиты. Но, в любом случае, личное знакомство с такими людьми как Pekka Klarck (основатель RF), Mikko Korpela (автор pabot), Tatu Aalto (ведущий разработчик SeleniumLibrary) показалось мне очень полезным.
Программа конференции:
- Pekka Klarck, Eliga: Keynote «How did we get here? Where do we go next?»: видео.
- Deau Regis, OpusCapita: «The naked truth about successful test automation journey»: видео.
- Aldina Codesso-Lipponen, Kone: «Mega Robot projects, what to expect»: видео.
- Asko Soukka, University of Jyvaskyla: «Robot Framework in Plone CMS project»: видео, презентация.
- Ed Manlove: «The Importance of Open Source Communities»: видео.
- Anssi Syrjasalo, Siili: «Towards contract-based API testing with a new REST JSON test library»: видео.
- Tatu Aalto, CRF Health: «Extending SeleniumLibrary 3.0»: видео, презентация.
- Martin Taylor, Nymi: «Design Patterns for Efficient Multi-Platform and Multi-Device Testing with Robot Framework»: видео.
- Mikko Korpela, Reaktor: «Parallel test execution with Pabot»: видео.
livelace
Спасибо!