Java vs Python в автоматизации с Selenium

Здравствуйте!

Я в автоматизации всего полгода, на работе пишу автотесты на Java, используя Selenium, Java и PageObject.
Из разных источников слышал, что многие хвалят Python именно в области тестирования. Я его почти не знаю, только основы. Накинуть небольшой тест на авторизацию получилось. Дальше не углублялся.

Хотелось бы спросить знающих людей: есть ли в тестировании какие то преимущества у Python перед Java?
Или может просто существуют серьезные отличия. Хочу знать исключительно для себя.

Буду благодарен за ответы. Спасибо.

1 Like

Другими словами – язык программирования это лишь приложение преобразующее ваши идеи в последовательность электрических сигналов для процессора. И именно это они все и делают. Полезнее выучить как работает ваша технология, чем написать те же самые поверхностные тесты на новом языке программирования.

3 Likes

Питон лучше для вхождения в автоматизацию своей простотой. Потому на нем проще начинать изучать автоматизацию. Если вы уже работаете с Джавой - смысла переходить нету.

6 Likes

Лучший язык тот, который знают ваши разработчики и используется на проекте.

2 Likes

http://software-testing.ru/library/testing/testing-automation/2308-automation-language-is-not-necessarily-your-development-language

1 Like

Да я же не утверждаю что какой-то язык лучше, это не холивар. Я спросил конкретно про возможно имеющиеся преимущества Питона над Джавой именно в разработке и запуске автотестов

Никаких. Всё упирается лишь в уровень знания языка, ОС, networking.

2 Likes

Ну я бы все же выделил простоту питона перед java и скорость написания кода и отладки. P.S.: Python не нужно собирать ещё к тому же) P.P.S.: Python мультипарадигменный ЯП но это плюс только если вы не любите ООП

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

1 Like

Про производительность я и не спорю :slight_smile: Но все же питон для изучения по мне так будет проще. Да у питона есть проблемы с многопоточностью, но вероятность с ними столкнуться при написании автотестов - крайне мала :slight_smile: Опять же если использовать функциональный подход, проблем с многопоточностью будет гораздо меньше.

Давно, уже пришел к мнению, что самым главным фактором при выборе ЯП, является вкус и пристрастия выбирающего. С чем человеку комфортно и приятно работать, то и надо выбирать:)

1 Like

И снова вопрос в том что проще для вас. Допустим вы выучили питон и пришли тестировать десктоп приложение. И вас окунают в мир дескрипторов, хэндлов, потоков, указателей, драйверов, сигналов и т.д. А всё это ведь дается достаточно легко даже при среднем знании С\С++, но для питона это ад.
Либо приходите вы тестировать серверные приложения и вам начинают втироать про апплеты, сервлеты, сериализации, упаковки, вары и джары, бубны с конфигурациями ЕЕ версий на сервере. Питониста это снова повергает в ад.

Хотите совет - знать надо все языки в достаточной степени, чтобы написать всё что вам нужно с помощью документации. Как тестировщик вы столкнетесь со всем. Я писал на bash, batch, autoit, QTP, jscript, js, java, C++, python, ruby, pascal, step 7. И это всё по работе, а не для себя. Придя на проэкт вы подстраиваетесь под него, а не проэкт под вас. И любой проэкт даст вам время подняться и стать на ноги. Вы выучите немного основ языка. Но вот что учится действительно долго, это как работает окружение в котором всё это выполняется: ОС, браузер, контроллер, драйвер.

1 Like

Ну так я про это ничего и не говорил. И я не пропагандирую только за Python (прекрасно использую groovy, js, go, c# и иногда java) :slight_smile: @AlexSud спросил какие могут быть преимущества Python перед Java в области тестирования, я и ответил.

Пока речь идет о селениуме, то писать лучше на том, что удобнее == быстрее.

2 Likes

Перешел с Джавы на Питон(не по своей воле): имея уже готовые идеи в реализации фреймворка, который я писал на Джаве 2-3 месяца, я смог все очень легко переписать на питоне за 2-3 недели. Язык намного проще, гибче, и понятнее. Все проблемы решаются намного быстрее. Остался доволен и я и боссссс…

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

2 Likes

Большое спасибо всем за ответы и дискуссию.
На работе нет необходимости писать на Питоне, более того, на нем у нас вообще никто ничего не пишет.
Просто слышал, что для автоматизации он удобнее в применении, хотя на практике и по вакансиям основа - это Java. Многие также сейчас переходят на .NET

MS вроде недавно зарелизили CoreCLR под *nix, так что C# теперь тоже очень вкусный :wink:

Если уже есть готовое решение на Java + Selenium + Pageobject, то экспериментировать с Python большого смысла наверное нет, разве что прикрутить какие-то “смежные” инструменты, работающие и с Java и с Python.

Python, как по мне, хорош для простых решений и “прототипирования”, когда хочешь быстро пробовать, менять, перезапускать свое решение. Поскольку он не требует компиляции, перезапуски получаются очень быстро, и за счет легкости языка, отсутствия строгой типизации — мороки меньше, имхо.

Раньше предпочтение отдавали Java по причине того, что Selenium нативно поддерживает её, однако сейчас уже Питон неплохо работает с Selenium.

Попробую перечислить плюсы Питона:

  • Простое вхождение
  • List Functions
  • Скорость разработки
  • Сообщество

Минусы:

  • Сообщество поделено на любителей Python 2 и 3. Которые не совместимы между собой.
  • Инфраструктура раздельная (package manager, environment virtualization, test runner)

Плюсы Java:

  • Качественный код, так как Java приучает к типизации.
  • Инфраструктура (Maven, TestNG). Мавен даст фору PIP.
  • Selenide, которая решает все проблемы с ожиданиями и AJAX из коробки
  • Лямбды и интерфейс Stream

Минусы:

  • Длительное вхождение в язык
  • Тяжеловесная и избыточная для автотестов
  • Более длительный процесс разработки
2 Likes

Всё верно кроме лямбд. Они сейчас везде есть, даже в питоне. И джава их получила позже всех остальных. Ну и ещё один минус джавы - доступ к нейтив коду из неё = взрыв мозга.
Дополнительный минус для меня - с самого универа не мог понять - зачем нужна джава если есть С++? Да, кто-то скажет write onсe run everywhere, но С++ позволяет сделать то же при правильном подходе, правда сложнее но зато намного производительнее. Но С++ против Джава это вечный холивар, которому почти столько же лет сколько и мне

1 Like