Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Помогите советом в выборе языка ООП (веб)

web
java
Теги: #<Tag:0x00007f7b6134ee80> #<Tag:0x00007f7b6134ed40>

(Svetlana_) #1

Всем доброго времени суток.

Я мануал тестер, но чем дальше, тем больше вижу необходимость в изучении автоматизации. Ибо есть множество интереснейших инструментов для тестирования (selenium, testComplete, robotium, testDroid, testNG, JUnit, eclipce, emma и т.д.), о которых я вечно только слушаю/читаю, но не могу применять из-за незнания языков программирования.
Изначально я остановила свой выбор, на мой взгляд, на наиболее универсальном языке - java. Но потом начала посматривать и на другие языки ООП, так как форумы тестеров пестрят комментами о неимоверноей сложности java, а также о полезностях ruby, python. С другой стороны вычитала, что тестеру со знанием ruby проблематично найти работу.

 

Выбор не лежит между этими тремя языками, а между всеми языками ООП (веб).

Хотелось бы услышать советы от людей, имеющий подобный опыт - какой язык лучше выбрать для изучения?
Спасибо за внимание, уделенное моей теме. 


Какой ЯП выбрать для Автоматизации и не только?
Выбор языка написания тестов (нет акцента на чем написано приложение)
(Artur Korobeynyk) #2

Руби

Легко учится, в перспективе можно выучить рельсы и стать разработчиком, если тестирование не понравится. Работу найти легко.

Питон

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

Джава:

Для тестирования достаточно Джава SE. Использовал редко, так как для серьезной работы придется написать пару страниц импортов и обьявлений. Не такой мощный как С++ и не такой простой как предыдущие. Лично мое мнение - не нравится как средство тестирования и из-за развития более простых скриптовых языков и их меньшему весу я думаю джава в тестировании начнет постепенно умирать.

С++

А оно вам надо?

Ассемблер в атоматизации тестирования:

Мне нравится... ваше чувство юмора

 

Ну и лично мое мнение:

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


(Svetlana_) #3

Спасибо огромное, что разжевали :-)

Очень толковый коммент, после которого ситуация для меня более-менее прояснилась ) Беру курс на пайтон значит 


(Mykhailo Poliarush) #4

java в тестировании умирать не будет, по крайней мере в СНГ это точно

так как тут масса проектов на java и при первой возможности автоматизации все выбирают java, как основной язык программирования


(Andrey Kharkov) #5

Я за Java и ничего сложного в изучении Java SE я не вижу.


(Mykhailo Poliarush) #6

Руби и Python имеют более менее одинаковые возможности

но я всегда, считал и считаю, что Python больше подходит для тестировщиков

ruby - более ориентирован на разработчиков, который программировали на других языках и им что-то не хватало, основное направление развития это веб

python - же ориентируется больше как язык, который включает разные парадигмы программирования, хорошо подходит для быстрого прототипирования, быстрого написания кода, системного программирования, скриптования и т.д. 

но python для тестировщиков интересен именно тем, что степень вхождения - низкая, а легкость изучения языка - высокая

 

java - конечно тоже нужно знать, потому как масса проектов было, есть и будет на этом языке программирования и на данный момент всеравно большинство пишут на java

C# - менее востребован чем java, но во многом присутствует на рынке. По сложности - это тоже самое, что и java

 

на счет других языков программирования, я бы даже не стал их рассматривать для тестирования, за исключением конечно javascript

так как экосистема javascript очень стремительно развивается и скоро будет очень много проектов на javascript и соответственно, автоматизация также будет на javascript

вот даже ко мне пришел заказчик и сказал, мы пишем приложение на coffeescript, так что я ожидаю что вы сделаете автоматизацию тоже на этой языке программирования

 

на счет поиска работы, на данный момент я бы расставил так (если мы говорим об СНГ) 1) java 2) c# 3) python 4) ruby 

http://automated-testing.info/content/kakoy-yazyk-programmirovaniya-vy-ispolzuete-dlya-napisaniya-selenium-testov

НО МОЙ ЛИЧНЫЙ ВЫБОР ЭТО PYTHON! :)


(Svetlana_) #7

Ок, спасибо за ваше мнение   =)

Ваш ответ - еще один мощный толчок в сторону python )

Правда, по синтаксису мне java все же как-то приятней. Но за него я уже лучше возьмусь после python. Когда-нибудь...


(Artur Korobeynyk) #8

Джаву когда-то учил, немного знаю. Но за 10 лет в моей проф. практике использовал оооочень редко. Только для себя что-то писал, делал по мелочи, утилитки мелкие. Джава хороша сейчас только тем, что под неё когда-то хорошие тест фреймворки сделали ну и много бесплатных библиотек наделали с непонятными лицензиями использования, что в больших корпорациях не приветствуется. Андроид потихоньку в сторону нейтив кода идет, вот уже и Qt на него развивается вовсю, а он значительно удобнее андроид сдк на джаве.

Но буду честен - я давно тестировал веб страницы, больше занимался активностью на самом сервере, либо десктопными приложениями. А когда давно ещё требовалось автоматизировать веб приложения, селениум тогда только в планах был у разработчиков и слухов в народе о нем не ходило. Мы на QTP писали, как раз 9.5 тогда вышла. Ну и тестраннер популярным был. А вообще я длительное время AutoIt обожал, для полной автоматизации он конечно не подходит, но пособие в ручном тестировании бесспорное.

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


(Mykhailo Poliarush) #9

java - это язык со строгими правилами, так что с какой-то стороны это тоже хорошо, потому что сразу показывает вам что и как вы сделали неверно

а вот python - более либеральный, т.е. он позволяет вам делать многое, а ответственность лежит на вас, когда вы запустите код

 

вот такая вот загогулина :)


(Mykhailo Poliarush) #10

да, если знаете парадигмы python, то можно свободно переключаться между python, ruby, coffeescript, groovy

принципы в этих языках одни и те же 

один мой выпускник курсов python для тестировщиков, начал заниматься soapui и там используется groovy

так он написал "из-за того, что я знал как устроен python, я очень быстро изучил groovy, все очень похоже"


(Sergey Korol) #11

Конечно все будут лестно отзываться о том языке, с которым приходится сталкиваться в повседневной рабочей жизни. У каждого есть свои достоинства и недостатки. Интернет весь кишит холиварами на эту тему. Скажем так, я работал и со всеми сями, и с джавой. Если абстрагироваться, то на данный момент знание джавы вам принесет наибольший профит, учитывая вектор вашего развития. Если говорить о личных предпочтениях, то шарп мне показался поприятней, ввиду наличия мощных средств рефакторинга и полезных наворотов последних фреймворков.


(qaleader) #12

C# потому что Microsoft заботится о вас :) На C# писать тесты легче, но у Java библиотека Webdriver более развита. В любом случае тестировщику не нужны столь глубокие знания языка, как программисту. Для старта хватит и базы, по этому берите любой язык, тут дело вкуса :)


(Максим Таран) #13

Я тоже предпочитаю джава (или груви, если что-то на скорую руку надо). Ибо люблю кросплатформенность. :) По поводу Native в андроид на QT - ну это костыли.


(Taras) #14

JAVA !!! Только JAVA , брат !))


(Svetlana_) #15

ээээ... сестра XD

спасибо)


(Mykhailo Poliarush) #16

прямо реплика из фильма брат 

- в чем сила брат?
- ммм
- java правит миром и тот сильнее у кого java-ы больше


(Mykhailo Poliarush) #17

это точно! :)


(vmaximv) #18

Любой код написанный на скорость, вне зависимости от используемого языка - это "пахнущий" код, который зачастую ставит крест на автоматизации на проекте.

Как уже говорилось в какой-то теме на данном форуме - главное в автоматизации это архитектура.

Про функции вообще ничего не понял. Все опять-таки зависит от архитектуры.

Например тест на логин в рамблере:

public void testLogin() {
  RamblerHome page = new RamblerHome();
  page.clickLink("Войти");
  page.loginFrame.waitForElement();
  page.loginFrame.rememberMe.verifySelected(false);
  page.loginFrame.type("Логин:", "just.for.testing");
  page.loginFrame.typeAndSubmit("Пароль", "test123");
  page.verifyTextContains("just.for.testing");
  page.clickLink("profile");
  page.clickLink("Выйти");
}

 

Почему многие выбирают джаву? Наверное из-за схожести синтаксиса с прародителями ООП таких как C++, Object Pascal, так и более современными типа C#.

И лично меня синтаксис php повергает в легкий когнитивный диссонанс. Хотя и приходилось писать автотесты и на ruby и на php.


(Artur Korobeynyk) #19

 

Если собираетесь писать бэкэнд сервер приложения, то да - джава лучше, быстрее.

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

Hello World in Java:
 

public class HelloWorld {

public static void main(String[] args) {
System.out.println(“Hello, World”);
}
}

 
Hello World in Python:
 
print “Hello, World”

 

так что в скорости написания кода джава далеко позади. Её плюс - в качестве скомпилированных программ, а тестам это по барабану.

Python, AutoIt, Ruby, и любой другой скриптовый язык расчитаны на скоростное написание скриптов и простоту реализации алгоритмов. Джава в этом сильно проигрывает.

И уж если что-то пишете, то аргументируйте. А то в стиле ваших комментов можно вообще сказать что Brainfuck самый простой, удобный и читаемый язык.


(Artur Korobeynyk) #20

Почему многие выбирают джаву? Наверное из-за схожести синтаксиса с прародителями ООП таких как C++, Object Pascal, так и более современными типа C#.

Джаву выбирают потому что когда вы пришли на проект - она уже была выбрана, и вам приходится её развивать дальше. Либо потому что многие знают только слово селениум и что им можно тестировать наш проект (хоть у него и есть порты на другие языки, но изначально он на джаве).

Джаву выбирают далеко не многие. И даже немного погуглив вы увидите что ссылки типа Why Python is better than Java выпадают значительно чаще, чем обратные, даже если в поисковик вводить Why Java is better than Python. Тесты на С++ это либо идиотизм, либо безвыходность в связи с особенностями проекта (может вы драйвера пишете, не знаю), потому как сами приложения написанные на С++ в 99% случаев очень уязвимы к ошибкам с памятью, а если при этом ещё и тесты такие делать... (Хотя последние реализации этого языка С++0x или так званый С++ 11 уже умеют распознвать конструкции которые весьма похожие семантикой на скриптовые языки типа питона и руби, так что кто знает, может появятся хорошие фреймворки тестирования в скором).

Синтаксис PHP не знаю, никогда на нем не писал (разве что перехватчики REST запросов), при чем он здесь - тоже не знаю.

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

Любой код написанный на скорость - это agile среда, которая сейчас встречается довольно часто. Глупости в алгоритмах - это недостаток программиста, а не языка.

Главное в автоматизации - это большое покрытие регрессионых тестов. Вы можете разрабатывать суппер умную обучающуюся систему принятия решений в зависимости от ситуации, но если она будет просто красиво выглядеть и ничего не делать - она нужна не будет. Хороший фреймворк - это удел программистов разрабатывающих фреймворк, а не тех кто должен использовать его для тестирования. Задача тестировщика - писать тесты, писать их быстро и хорошо => [писать тесты можно на чем угодно, писать тесты на скриптовых языках быстрее, писать хорошо зависит от опыта] => два параметра языково независимы, один параметр у скриптовых языков выигрывает.