Посоветуйте в каком направлении двигаться дальше. Python / WebDriver / PageObject

Всем привет. На данный момент возникла ситуация с выбором пути для дальнейшего развития. Используемый стек на данный момент : #python / #webdriver / #page-object::tag . Собственно проблема состоит в том что слышал о большом количестве фреймворков, но не совсем понятно для чего каждый из них используется и в каких случаях применяется.

Понятно что лучше разбираться самостоятельно и в сети куча информации отдельно по каждому. Но если есть возможность, хотелось бы узнать какую то логическую цепочку, что бы не тратить время на штудирования каждого по отдельности и скорее всего в несоответствующем порядке. Либо есть смысл для дополнения к арсеналу выучить дополнительный язык (#csharp , #java , #ruby ), либо может для обширности уделить время инструментам нагрузочного тестирования (к примеру #jmeter ).

Вопщем хотелось бы услышать услышать пару мнений по этому поводу и потребностям рынка на данный момент. Предпочтения в развитии Web.
Всем заранее спасибо!

1 лайк

Дополнительный язык - это обязательно, при чем не похожий на тот что уже знаете. Если питон учили, то руби учить не надо, при необходимости по аналогии с питоном учится за сутки. Учите джаву, раз в веб идете, можно даже джаву для андроида, чтобы не лезть в сервлеты и ЕЕ. А вот фреймфорки - это зависит от будущей работы, смысла учить какой-то наперед нету. Если не будете с ним работать то вы его забудете плюс ваши знания устареют. Нагрузочное - пару вебинаров посмотрите, но снова - это тулза, будет нужно - учится быстро, если понимать как она работает.
Вот что годится - это знание как работает Web. Например в чем разница между Web 1.0 и Web 2.0. Зачем нужны GET, POST, HEAD, PUT. Какие есть типы headers в запросах и ответах и что можно с ними делать. OWASP Top 10 - знание и умение использовать каждый из топа самостоятельно. Умение создавать свои прокси для перехвата и редактирования запросов ответов. Это то, что не зависит от языка и фреймворка и используется во всех компаниях и проэктах.

5 лайков

Другими словами, Вы советуете углубиться больше в API и паралельно изучать какой то дополнительный язык?

API - это другое. Я советую технологии, а апи всё же больше к теме фреймворков относится.

Понятно. А по поводу OWASP - это же вроди Security. Я конечно осознаю что это бесспорно полезно, но по поводу нужно ли это автоматизатору… Просто я ни в одной вакансии не видел такой абревиатуры. Вы имели ввиду что это было бы неплохо для общей прокачки, или необходимые скилы для недалекого будущего ?

Это не столько общая прокачка как кажется. В овасп топ 10 входит 10 самых популярных багов ведущих к потери данных. Пока их освоите, ознакомитесь и с базами данных, и с правилами тестирования веб форм, шифрованием, сертификатами, кукисами, безопасностью сессии. Автоматизатор - это не профессия, профессия - тестировщик. Автоматизация - лишь тулза для того чтобы удобнее было тестировать. И чем более дорогой баг мы предотвратили, тем круче мы отработали. А проверка формы на то, зеленая она должна быть или красная - не находит баг ведущий к утере или утечки данных, не ведет к ограничению производительности, фиксится за 2 минуты и то если надо. Затраты на автоматизацию относительно полезности говорят автоматизировать это надо тогда, когда осталось свободное время - следовательно никогда, сам заметится на скраме либо когда кто-то из команды будет лазить по формам вручную.

3 лайка

Денис, что бы правильно ответить на вопрос “что?”, нужно знать ответ на вопрос “зачем?”

Зачем Вы хотите развиваться? Вам не нравится компания и Вы хотите переходить, но думаете, что знания питона недостаточно? Вы хотите больше денег, но за питон мало платят? Вам просто скучно делать одно и то же?
Если первый ответ - тогда да, 100% согласен с Артуром. Если второй - возможно просто надо поискать. А вот если третий - то… А зачем другой язык, если а) в питоне кроме автоматизации есть море других направлений - в 2017 году питон перегнал R для аналитики, а про машинное обучение вообще молчу; б) откройте свои тесты, написанные год назад: так ли хорошо они работают? может стоит подучить новые алгоритмы? подумать, как писать оптимальнее? в) а может стоит посмотреть еще на “всякие скалабилити и масштабируемость” - достаточно ли Вы готовы перейти на проект, где нужно будет на питоне написать 20 000 тестов которые должны будут бегать за 20 минут? Хватает ли Вам знаний для такой задачи?

*поворчал и ушел работать.

Я Вас понял. Спасибо большое за совет и вектор направления.

Из всех вариантов, не особо что то подходит на данный момент… 1)Компания в принципе нравиться 2)Денег все всегда хотят больше) 3)не скучно, потому что не имею 5+ опыта за спиной и все равно периодически появляются задачи над которыми нужно поламать голову.

По поводу развития именно направлений - безусловно с вами согласен. Но не считаю целесообразным резко перепрыгивать на другое направление (хотя над ML давно подумываю, так как имеется математическая база). По поводу направления алгоритмов и углубления в сам язык - стараюсь уделять этому время. Но тема заключается немного в другом.

На вопрос “Зачем?”, мое субъективное мнение на этот счет - есть только два пути: либо ты развиваешся, либо ты деградируеш. Поэтому паралельно с основами хочу развиваться в направлении автоматизации и в принципе не вижу в этом ничего плохого (я осознаю что автоматизация лишь помогает тестированию, а не является отдельным направлением).

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

А в чем вопрос то?

Берете фреймворк который слышали, и пробуете. Конец

Проблема описана в следующем предложении.

Вы хотите какой то план развития дальнейший - а такого нет.

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

Вы должны сами научится оценивать инструменты, и понимать их возможности. Попробуйте думать со стороны архитектуры, возможностей и потребностей под ваш случай.

Дело не в “плане развития”. Суть создания этого топика была услышать возможные рабочие связки фреймворков на основе Python и WebDriver. Паралельно был задан вопрос типа “А может на что то еще обратить внимание?”. На второй вопрос я получил достаточно обширный ответ (за что очень благодарен, обязательно воспользуюсь советами). Но по поводу первого вопроса, на данный момент для меня ничего не прояснилось.

Абсолютно понятно что нужно больше времени уделять фундаментальным вещам. Но лично я хочу через некоторое время изменить обстановку (работу). Для этого нужно хотя бы косвенное ознакомление с некоторыми востребованными инструментами. Вот я и хотел услышать какие то рабочие связки, что бы когда придет время для более углубленного их изучения, я уже хотя бы имел представление, что для чего используется и где лучше применять тот или иной инструмент.

Если у вас имеется личное (субъективное) мнение с чего лучше начать для ряда стандартных задач которые присущны авто-тестированию Веб приложений - я бы с удовольствием его выслушал (прочитал).

Рецепта счастья нету. В любой компании разные инструменты используются по-разному. Конфигурации, окружение, подходы, костыли - у всех всё своё. Всё что вы можете сделать - это узнать как работает иснтрумент, чтобы быть готовым использовать его… или его аналоги в любое время, когда понадобится.
Сейчас уже не 90-е, когда было “3” инструмента и не было толковых интернет пособий. Тогда у профессионала ценилось знание этих трех инструментов, потому что загуглить что либо было невозможно. Сейчас можно загуглить прием решения проблемы за 5 минут, только надо знать как, где и почему возникает проблемма.
Я наверное тот редкий перец в тестировании, который ниразу в жизни не использовал селениум, вебдрайвер, дженкинс год назад начал юзать и то вскользь, алур… да вобще не помню в своей жизни готовых фреймворков. Все инхаус мейд. Как-то приходил и сразу догадывался как они работают. Как и знаю как работает селениум 1, селениум 2-3, вебдрайвер и потому на форуме довольно быстро помогал отвечать на вопросы некоторых тестировщиков по этим тулзам. Сейчас везде используется 100500 утилит, все популярны, все нужны. Но все они базируются на тех “3”-х вышедших из 90-х. Все работают по одинаковому принципу. И учить надо принцип, а не инструмент. Задавайте себе вопрос - “как это работает” во время изучения утилиты, а не “как что-то сделать” с помощью утилиты. А учить можно любую, даже тот же вебдрайвер. Вы знаете как он выполняет клик на ссылке? Какие механизмы задействованы в ОС для этого? Как информация о клике идет на сервер и как получается обратно. Как можно влиять на эту информацию до отправки, во время следования и после получения? И тогда проблем с выбором утилит не будет. Вы априори будете знать все, даже те о которых никогда не слышали.

3 лайка

Вот читаю Ваши посты, и ощущаю резкий внутренний диссонанс) С одной стороны - полностью согласен и поддерживаю: сейчас основ практически никто не знает, и чем глубже - тем хуже. Начиная с протоколов, и заканчивая физикой работы транзистора. И это, по моему мнению как “технаря” - плохо. Хочется треснуть по голове каждого веб-тестировщика, не знающего хотя бы методы http. Но с другой стороны - насколько выгодны бизнесу такие “подкованные” кадры? Да, пусть он увидит все недостатки популярных фреймворков. Пусть он напишет свой отличный самописный инструмент. Но дальше-то что? Уйдет он на другую работу, собьет его автобус, а пришедший останется один на один с уникальным, пусть и гениальным, творением. Даже если “самопал” будет отлично задокументирован, изменений в самом проекте никто не отменял, и придет момент когда поменять что-то внутри этого “самопала” новичок не сможет. Поддержки-то никакой не останется. Кроме того, согласно Макконелу, работать нужно с интерфейсом, а не сквозь интерфейс. Ваш подход нарушает этот принцип.
Короче, к чему я это все. Скажите пожалуйста, Вы утрируете в своих постах? Возможно, истина где-то посередине? Например, “хорошо на всякий случай знать побольше, но надо чтобы вас и окружающие поняли”?

Ну лично с моей стороны понимания происходящего - как раз описанная Вами золотая середина и соблюдается. Никто же не предлагает учиться фундамент на таком уровне, что бы после его осознания писать какие то свои инструменты и нетривиальные решения, которые человек с обычными познаниями в этих областях, просто не сможет рационально использовать (или вопще не поймет что здесь происходит). Речь идет о том что бы самому лучше разобраться в том что ты делаешь и как это работает изнутри на более глубоком уровне. Собственно это, как я воспринял, и пытались донести выше стоящие посты.

Еще немного поворчу насчёт “зачем”, хотя и боюсь, что мой ответ Вам не поможет :slight_smile:

У меня ситуация “наоборот” - математическая база слабенькая, есть 5+ опыта с C# (но правильнее сказать что “опыта, как делать не надо”) и над вопросом “что изучать и куда рости” думал так же как и Вы достаточно давно и долго. Пробовал разные языки учить. Но поскольку не было задачи - к которой применить знания, то они благополучно улетучивались, оставляя “осадок знания”.
Как изучал шарповские фреймоврки? Смотрел на “заброшенность” разработки, как часто упоминали на конференциях и пробовал на задачах, которые уже были сделаны по-своему. Если фреймворк помогал решить задачу лучше - значит брал на вооружение. Лазил по репозиторию гитхаба, если был такой, смотрел реализацию (потому что когда понимаешь, почему ЭТО работает лучше - глядишь и в моём коде меньше бардака будет).

Кстати, гитхаб позволяет сортировать по звездочкам и фильтровать по языку. Попробуйте, может что для себя интересное найдете. (Да, я на Ваши вопросы не ответил)

3 лайка

Ну почему же. По поводу гитхаба довольно толковый совет. В принципе как по мне, самый обширный и толковый ресурс, на котором можно найти если не все, то очень многое по интересующей тематике. Ну и довольно большого стоит посмотреть как это реализуется на реальном примере, а не 3-4 строчки вырванные из общего кода. Так что Спасибо! )

Это уже проблемма компании. Если ей не нужны хорошие кадры, то и подкованого специалиста нанимать не надо. Можно меньше заплатить и неподкованому приняв риски. Но есть компании в которые не хотят отпускать хорошие кадры и пытаются их держать вкусностями. Да и сами кадры есть, некоторым может просто нравиться их работа и зарплатой их не переманишь. Проблемма Украины - она как Индия, аутсорсинговая страна. Ситуация в остальном мире немного другая. И требования к знаниям другие. Украине достаточно отправлять заказчикам красивые репорты, заказчикам достаточно получать из Украины красивые репорты, для этого подкованные спецы не нужны, нужны те кто знают утилиты подготовки красивых отчетов. Мне как-то повезло, всю жизнь работал на компании с продуктом, а не с отчетами, даже в аутсорсе.

2 лайка