Автоматизация тестирования: Java или Python?
Всем привет! В марте OTUS запускает сразу два курса по автоматизации тестирования: «Python QA Engineer» и «Java QA Engineer». У нас часто спрашивают, какой из этих курсов выбрать, ответить на данный вопрос мы решили переводом статьи от компании SafeBear.
Один из самых популярных вопросов звучит так:
Какой курс мне лучше пройти: по автоматизации тестирования на Python или по автоматизации тестирования на Java? И почему у нас есть курсы на обоих языках?
Первое и самое важное, о чем нужно сказать: не имеет значения, на каком языке вы проводите автоматизацию.
Приложение, которые вы хотите протестировать может быть написано на Java, Python, C#, Assembly, Scala или на любом другом доступном языке программирования. Фреймворки для автоматизированного тестирования на Python будут автоматизировать ручные тесты ничем не хуже фреймворков на Java. Когда речь заходит об автоматизации графического интерфейса, нет разницы на каком фреймворке вы проводите тестирование.
Какой курс вам подойдет, зависит от вашей ситуации. Конечно, если вы хотите стать экспертом по автоматизации, то вам скорее всего захочется пройти оба курса, поскольку фреймворки все-таки сильно различаются. Каждый из них справляется со своими задачами, как вы увидите ниже, и порой, выбор фреймворка сводится к личным предпочтениям.
Я попытался разобрать плюсы и минусы тех и других фреймворков, в надежде, что это облегчит ваш процесс принятия решения. Если же после этого решение будет принять только сложнее, то простите меня.
Python идеален
Плюсы
Автоматизирует ваш мир, а не только ваши тесты. Трудно встать на путь тестировщика не зная Python. Если и есть такой язык, который нужно знать, чтобы уметь автоматизировать ВСЕ, то это определенно Python. Вы можете автоматизировать разворачивание окружения, использовать его для сканирования портов или проводить тестирование на безопасность, для CI он незаменим. Python станет вашим другом, к которому вы будете обращаться за помощью снова и снова.
Коротко и просто. По сравнению с нагруженным синтаксисом Java его до смехотворного просто использовать и читать. Кроме того, известный факт, что на одну строку на Python приходится 10 строк на Java.
За вас уже все сделали. Множество других людей используют Python по той же причине, что и вы, из этого можно сделать вывод, что кто-то уже написал код, который вам нужен, а вы можете просто его импортировать.
Обучение и поддержка. В интернете можно найти кучу обучающих и полезных материалов. В целом, люди пришли к мнению, что материалы по Python понятнее, чем по любому другому языку.
Минусы
Боль с IDE. Python создавался, чтобы быть простым, универсальным и давать возможность писать скрипты прямо из интерпретатора, поэтому он не так хорошо ладит с IDE, как та же Java. Он настолько простой и универсальный, что IDE не может понять, что вы делаете, когда начинаете создавать объекты и передавать их между методами. Это неприятная особенность, которая может сыграть свою роль, если вы действительно захотите использовать IDE для создания своего фреймфорка.
Поддержка в офисе. Иногда лучше иметь локальную поддержку. Если у вас в коллективе никто не знает Python, то получить неотложную помощь в решении возникающих вопросов будет не от кого.
Java — это то, что нужно!
Плюсы
Прекрасные IDE. Одно удовольствие писать на Java в такой среде, как например, IDE от IntelliJ. IDE выполняет за вас большую часть работы, даже беря на себя боль от сложного синтаксиса. Функции по автодополнению кода сделают за вас огромное количество работы, пока вам будет казаться, что вы набрали на клавиатуре всего пару символов.
PageFactory. PageFactory в Java упрощает код для автоматизации на Selenium и позволяет писать простые для понимания тесты.
Домашняя поддержка. Большинство тестировщиков работает с Java-разработчиками. Если вы с чем-то застрянете, через пару столов от вас всегда будет кто-то, кто протянет вам руку помощи. Это очень помогает на кривой обучаемости, и дает вам преимущества знаний и опыта ваших коллег. Не успеете оглянуться, как станете профессионалом.
Минусы
Абракадабра. Непросто читать код на Java по сравнению с простым английским Python. А еще у Java очень крутая кривая обучаемости, и документация оказывается не всегда полезной. Однако помощь по многим вопросам можно найти онлайн (например, на Stack Overflow).
Боль c null pointer. Когда Java выдает вам сообщение об ошибке и выводит stack trace не всегда просто понять в чем дело, и порой эта информация оказывается бесполезной. IntelliJ помогает там, где может, но непонятные сообщения об ошибках могут превратить дебаг в полнейшее расстройство.
Ограничивается автоматизацией тестирования. Вы никогда не будете использовать Java в других областях тестирования. Не в CI, тестированиях на производительность, безопасность, доступность или в любом другом месте. Вы просто застрянете в автоматизации тестирования графического интерфейса вашего приложения и все.
На этом все. Надеемся теперь вам стало немного проще определиться с тем какой все же курс выбрать, а для закрепления выбора приглашаем вас на бесплатные уроки по курсам:
Python QA Engineer
Java QA Engineer