Selenium != framework

Сидел я как-то томным вечером и думал, что моё фанбойство к Codeception слишком затянулось и пора искать что-нибудь новенькое. Стремительно возникшая мысль тут же заставила меня пойти в гуглопоиск и ввести что-то вроде automation test frameworks, дабы получить какой-нибудь топ самых-самых классных. Конечно, увидел я там всякое, что за уши, но с болью можно притянуть к званию “framework”, однако верного камрада Selenium я там точно не ожидал увидеть. И почти каждая подборка гордо давала ему это звание и ставила почти в первые ряды. После пятой ссылки у меня начало припекать, а потому хочу рассказать вам почему НЕЛЬЗЯ называть Selenium фреймворком и почему мне так хочется откусить кому-нибудь лицо всего лишь из-за какого-то наименования.

Framework

Предлагаю сначала разобраться с этим модным словом – фреймворк, а то уж шибко часто оно тут мелькает. Можно смело залезть в вики (как русскоязычную, так и в англоязычную), посмотреть в словаре значение слова (например, тут) и узнать, что англицизм фреймворк в какой-то мере можно заменить русизмом “каркас”. Это будет немного топорно, но всё по-порядку.

Возьмём примером какой-нибудь фреймворк для веб-разработки Symfony. Какие возможности он нам даёт?

Когда мы узнаём о понятии framework ближе

Представим, что мы хотим открыть ночной клуб и нам добрые люди дали супер крутой фреймворк для постройки ночных клубов SuperNightClub: Bender Edition. Он сразу даёт нам возможность сделать пару простых вещей: поставить помещение, установить там барную стойку и заказать бухло. Раскуривая мануал, мы узнаём, как мы можем лёгко и просто (не всегда) реализовать бармена, официантов (если они нужны), диджея и другие жизненно необходимые вещи для ночных танцулек и кутежа. При этом, наш фреймворк хоть немного позаботился о начинающих бедолагах и наше помещение уже имеет сигнализацию, настроенный механизм взаимодействия между барменом и официантами, а в некоторых мануалах прямо по шагам расписано как мы можем нанять охрану или разнообразить меню нашей кухни (если она у нас есть). И всё это чудо мы творим через какую-нибудь условную консоль в вашем офисе администратора клуба: написал какие-то команды и появился новый бармен, прописал ещё немного, и вот нажатием одной кнопки можно получить еженедельный отчёт о каждой тусовке и так далее.

Мы имеем какой-то набор базовых инструментов под капотом (молоток, пила, лопата, дрель, шпатель), самые примитивные действия (забить, копать, пилить, сверлить) и основные принципы, где и для чего мы будем с этим взаимодействовать (просверлить дыру в стене, отпилить брусок, закопать создателей топов про фреймворки). Это упрощает описание типичных процессов, подводит их под какой-то стандарт и собирает всё самое необходимое в одной коробке.

Лопата

Мне кажется тут уже должна возникнуть благая мысль, мол “Selenium даёт только возможность взаимодействия с web driver”, “там нет никакого набора других инструментов”, “нужно много ещё чего сделать, чтоб написать полноценный, но простой тест”. Поздравляю, мы смогли ответить на вопрос “почему Selenium не фреймворк” всего лишь разобрав понятие фреймворка. И всё действительно обстоит именно так, ведь для полноценных тестов нам нужны:

И это только базовый набор. Даёт ли этот набор Selenium? Правильно, не даёт. Только тыкать в браузер, только жамкать кнопки.

Вывод: Selenium это прекрасная библиотека для взаимодействия с web driver (или с чем-то на основе), тулза, которая позволяет тыкать кнопки и прикинуться юзверем.

Учить матчасть

Надеюсь, что я объяснил своё повышение температуры при виде “Selenium – top 1 framework for autotesting!”. Казалось бы, ну назвали не так, ну что такого, а в итоге получаем такого рода подборки, начинающих, которые искренне верят в причастность Selenium к лику фреймворков и другую вытекающую путаницу. Многие берут Selenium и начинают прикручивать различные xUnit, другие библиотеки для полноценного использования, делая как раз тот самый фреймворк, на котором будет удобно писать и поддерживать тесты. Кто-то берёт уже готовые решения типа Codeception (PHP, JS), Selenide (Java), Golem (Python) или Cypress (JS). Вот последние чуваки – фреймворки, а Selenium – нет. Mic drop.

P.S. Будет круто, если вы выскажите своё “э, слышь” или своё “всё чётко” в комментариях.

Обратите внимание на то, что комментарии отображаются не мгновенно, а спустя некоторое время после сборки на стороне GitHub Pages.

Комментарии

Пишет Бендер

07 Sep 2018, 08:14:46

Всё чётко.

Пишет Бендер не пишет, Бендер сгибает

03 Oct 2018, 23:32:36

Э, слышь… Вот тут “… посмотреть в словаре значение слова (например, тут) и узнать…” ссылочку потерял.

Пишет RebOOter

04 Oct 2018, 06:35:11

Fixed