Язык программирования для тестировщика
Автоматизация тестирования: 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, тестированиях на производительность, безопасность, доступность или в любом другом месте. Вы просто застрянете в автоматизации тестирования графического интерфейса вашего приложения и все.
На этом все. Надеемся теперь вам стало немного проще определиться с тем какой все же курс выбрать, а для закрепления выбора приглашаем вас на бесплатные уроки по курсам:
Лучшие языки для автоматизации тестирования в 2020 году
Нужно понимать, что программист, который создаёт скрипты автоматизации, ценится намного больше, чем рядовой ручной тестировщик. А значит, он может продавать свою работу дороже.
Python
Один из самых востребованных языков – занимает первое место по мнению 73,3% разработчиков, принявших участие в исследовании. Этот open source инструмент нравится широкому кругу айтишников по нескольким причинам. Во-первых, большое количество библиотек позволяют меньше кодовых строк писать самостоятельно. Во-вторых, Python обладает хорошей переносимостью и простым синтаксисом, благодаря чему его можно быстро и легко освоить. В третьих, у него есть сильное сообщество, открывающее перед программистами массу возможностей.
Для упрощения тестирования используют такие библиотеки, как Selenium или Appium. Очень полезны для тестировщиков ПО и фреймворки:
ОО-язык, который принадлежит корпорации Oracle. Java придерживается принципа WORA, что расшифровывается как «write-once-run-anywhere» (на русском: «напиши единожды, запускай повсюду»). Это даёт много межплатформенных преимуществ. Этот язык в своих внутренних системах использует большое количество разных крупных компаний. В современном мире насчитывается больше 3 млрд устройств, на которых установлены Java-приложения.
Для модульного тестирования чаще всего используют JUnit. В. Если речь идёт о браузерах, пользуются библиотека JUnit и инструмент Selenium WebDriver. Также можно посоветовать следующие фреймворки:
Он совместим с инструментом Selenium WebDriver, благодаря чему многие тестировщики применяют его в автоматизации и межбраузерных тестах. С помощью Page Object Model QA получают возможность быстро написать эффективно работающий, поддерживаемый код.
Так как в C# доступен большой выбор сред, его обычно предпочитают в межбраузерном тестировании. Самыми распространенными в C# являются такие платформы:
JavaScript
Это одна из популярнейших технологий на сегодняшний день. Данным языком пользуются многие крупные организации для разработки интерфейса веб-сайтов электронной коммерции.
Главная причина, по которой JavaScript начал доминировать в сфере автоматизации тестирования заключается в том, что IT-индустрию покоряет метод тестирования под названием “сдвиг влево”, предусматривающий тестирование проектов на первоначальных этапах разработки. При этом QA работают вместе с разработчиками, чтобы реализовать автоматизацию тестирования максимально эффективно.
JavaScript стали предпочитать в QA и благодаря широкому выбору сред для разных видов тестирования. Среди фреймворков можно выделить:
Open source язык программирования, отличающийся от остальных главным образом мощностью, гибкой архитектурой, удобным синтаксисом и простотой. Ростом своей популярности Ruby обязан и поддержке непрерывно растущего сообщества.
Постепенно этот язык выходит на первый план в сфере разработки веб-проектов. На нем программисты создают разные полезные приложения, при этом самостоятельно прописывая относительно мало строк кода, потому что им на помощь приходят обширнейшие библиотеки.
С Ruby совместим и Selenium WebDriver. Начать их использовать совсем не сложно: для первого межбраузерного теста понадобится только несколько кодовых строк. Наиболее востребованными платформами для автоматизации межбраузерного тестирования стали:
SmashTest
Этот язык использует NodeJS и дает возможность создавать тесты за короткий промежуток времени. Он очень быстрый, но обладает своим недостатком – документации по нему в интернете очень мало.
SmashTest легкий для понимания, а в дополнение к этому удобочитаемые шаги плюс мощные инструменты отчетности позволяют назвать его превосходным вариантом для изучения и применения в QA. Вот фреймворки, обычно используемые специалистами этой сферы:
Скриптовый язык сценариев общего назначения, который применяется для разработки веб-приложений. Но помимо этого PHP широко используется и в работе QA. Одна из причин – этот язык не такой трудный, как другие ЯП backend-разработки, вроде Python или Java.
У PHP отличная поддержка сообщества. Он также предлагает XDebug – средство отладки скриптов и их профилирования, обладающее большой мощностью и возможностями. Язык поддерживает много сред для QA, в том числе:
7 важных языков программирования для автоматизации тестирования в 2020 году
Для любого тестировщика существует возможность повысить свою эффективность работы и зарплату. Для этого достаточно автоматизировать тестирование, используя 7-ку популярных в 2020 году языков программирования, о которых мы поговорим в данной статье.
Важно понимать, что тестировщик, пишущий скрипты для автоматизации, в большей степени ценится на рынке труда, чем ручной тестировщик. Соответственно, он может претендовать на более высокую зарплату.
Чем больше языков программирования тестировщик знает, тем с большим количеством продуктов он может работать, а значит — его востребованность среди работодателей гораздо выше. При этом следует выбирать для изучения те языки программирования, которые находятся сейчас в тренде.
Python
Python — язык программирования с открытым исходным кодом. Согласно исследованию, 73,1% разработчиков считают Python наиболее востребованным языком программирования.
Python широко востребован у тестировщиков по ряду причин. Множество библиотек позволяют меньше писать строк кода самостоятельно. Python легче переносится, его синтаксис прост в изучении, что дает возможность быстро его освоить. Сильное комьюнити открывает больше возможностей перед тестировщиками. Библиотеки Selenium и Appium для Python упрощают автоматизированное и межбраузерное тестирование на стационарных и мобильных устройствах. PyUnit и Pytest широко применяются в автоматизации тестирования Selenium и автоматическом кросс-браузерном тестировании.
Для автоматизация тестирования Python лучше всего искать фреймворки более высокого уровня:
Java
Java — язык программирования общего назначения, принадлежащий корпорации Oracle. Выстроенный на принципах объектно-ориентированного программирования, он следует принципу WORA (англ. write once, run anywhere – написано однажды, выполняется где угодно), что дает множество кросс-платформенных преимуществ. Многие корпорации используют Java для поддержания своих внутренних систем. Существует более трех миллиардов устройств, на которых работают приложения, созданные с использованием Java.
Наиболее известной платформой для модульного тестирования в среде Java является JUnit.В. На данном языке был также создан ряд платформ для автоматизации тестирования приложений с открытым кодом.
Автоматическое тестирование браузера для веб-продуктов (веб-сайт и веб-приложение) может быть выполнено с использованием JUnit с Selenium WebDriver.
Из фреймворков для автоматизации также используют:
JavaScript
Согласно исследованию, JavaScript занял первое место в разделе «Языки программирования, сценариев и разметки» в категории «Самые популярные технологии». Многие крупнейшие компании используют JavaScript для разработки интерфейса для сайтов e-comerce.
Одной из основных причин доминирования JavaScript в автоматизации тестирования является распространение в IT-индустрии методологии тестирования со сдвигом влево (когда тестирование продукта происходит на начальных этапах).
Согласно данной методологии? команда тестировщиков (QA) работает в тесном сотрудничестве с разработчиками с целью обеспечить эффективную реализацию автоматизации тестирования.
Разработчики также предпочитают использовать JavaScript вместе с Selenium для тест-сценариев, связанных с автоматическим тестированием браузера. Его также можно использовать для параллельного тестирования с помощью Selenium Grid, используя LambdaTest без существенных изменений в исходном коде.
Наличие широкого спектра сред тестирования для модульного и E2E (сквозного) тестирования делает JavaScript предпочтительным языком для автоматизации. Одними из лучших фреймворков автоматизации тестирования JavaScript являются:
Благодаря его совместимости с Selenium WebDriver многие QA используют C# для автоматизации и кросс-браузерного тестирования. Используя шаблон проектирования Page Object Model (POM), тестировщики могут быстро разработать эффективный и поддерживаемый тестовый код.
В C# существует ряд платформ, которые помогают в автоматизации тестирования Selenium или браузера. Из-за доступности широкого спектра тестовых сред многие разработчики рассматривают C# для разработки тестовых случаев, связанных с кросс-браузерным тестированием. Наибольшее распространение в автоматизации тестирования получили следующие платформы в C#:
Ruby
Ruby — язык программирования открытым исходным кодом и ориентирован на простоту и производительность. Как и Python, Ruby также имеет удобный синтаксис, а гибкая объектно-ориентированная архитектура делают Ruby мощным языком программирования.
Другим важным аспектом роста популярности Ruby является поддержка постоянно растущего сообщества Ruby. Он постепенно становится предпочтительным языком программирования для создания веб-приложений. Разработчики могут создавать полезные приложения на Ruby, используя меньше строк кода написанных самостоятельно, благодаря обширнейшим библиотекам.
Платформа Selenium также работает с языком Ruby, поэтому ее можно использовать для автоматизации тестирования Selenium. Начать работу с Ruby и Selenium не сложно. Можно выполнить первый кросс-браузерный тест с Selenium WebDriver и Ruby, используя всего несколько строк кода.
В Ruby есть ряд платформ автоматизации тестирования, которые помогают в кросс-браузерном тестировании. Из которых наиболее популярны:
PHP
PHP — серверный язык сценариев, используемый для веб-разработки. Тем не менее он также широко используется в качестве языка программирования для автоматизации тестирования. Уровень сложности PHP низок по сравнению с другими языками программирования бэкэнда, такими как Python и Java.
PHP имеет хорошую поддержку сообщества и растущую экосистему. Он предлагает XDebug, мощный инструмент отладки и профилирования, который обладает большими возможностями. Он поддерживает большое количество сред автоматизации тестирования, таких как:
SmashTest
SmashTest — язык программирования для автоматизации тестирования, использующий NodeJS. Данный инструмент и язык с открытым исходным кодом позволяет быстро создавать тесты. Язык в 10 раз быстрее, но документации по SmashTest не так уж и много представлено в сети.
Язык прост для понимания, имеет удобочитаемые шаги и мощные функции отчетности, которые делают его идеальным языком для изучения и внедрения автоматизации тестирования. Фреймворки которые используются для автоматизации тестирования:
Читайте новости первыми в нашем Telegram-канале!
Подписывайтесь на наш канал в Яндекс.Дзен!
Огляд мов програмування для автоматизованого тестування
Автоматизоване тестування означає використання інструментів автоматизації для виконання набору тест-кейсів. Оскільки цей вид виконується за допомогою механізованих засобів, потрібно менше часу для ручного тестування, але більше – для підтримки автоматизованих сценаріїв. Автоматизація добре підходить для великих проектів, які потребують багаторазових перевірок одних і тих же областей. Також і тих проектів, які вже пройшли початковий процес ручного тестування. Знаходження багів у простих операціях і є головним завданням автоматизації. Даний вид тестування підійде більше для компаній великого масштабу, так як він вимагає істотних вкладень.
Переваги автоматизованого тестування
Автоматизація має багато переваг, деякі з них будуть розглянуті далі:
Завдяки цим перевагам можна стверджувати, що отримана якість продукту буде високою. На тестування витрачається менше часу і ресурсів.
Найпопулярніші мови програмування для автоматизованого тестування
Важливу роль також відіграє і мова програмування, що використовується в автоматизації. При оцінці будь-якої мови для автоматизації необхідно враховувати вісім основних моментів. Ці критерії спеціально оцінюють мову з точки зору чистоти і зручності використання, не обов’язково з точки зору нагальних потреб проекту.
Usability. Хороша мова автоматизації досить високорівнева і повинна виконувати такі складні завдання, як керування пам’яттю. Швидкість розробки також дуже важлива для термінів проекту.
Elegance. Процес перекладу тестового випадку в код повинен бути простим і зрозумілим. Для зручності обслуговування, тестовий код також слід робити коротким і самодокументованим.
Available Test Frameworks. Фреймворки забезпечують базові потреби, такі як налаштування/очищення, логування та звітність. Прикладами можуть бути Cucumber і xUnit.
Available Packages. Краще використовувати готові пакети для звичайних операцій, такі як веб-драйвери (Selenium), HTTP-запити і SSH.
Powerful Command Line. Хороший CLI полегшує запуск тестів. Це дуже важливо для безперервної інтеграції, коли тести не можуть бути запущені вручну.
Easy Build Integration. Автоматизація збірки повинна запускати тести і повідомляти про результати. Складна інтеграція – страшний сон розробників.
IDE Support. Тому що Notepad і vim просто не підходять для великих проектів.
Industry Adoption. Підтримка це важливо. Якщо мова залишається популярною, фреймворки і пакети будуть добре підтримуватися.
Далі будуть розглянуті найпопулярніші мови для автоматизації тестування.
Java – це мова програмування загального призначення, якою володіє корпорація Oracle. Java побудована на принципах об’єктно-орієнтованого програмування. Мова Java дотримується принципу WORA ( «Write Once, Run Anywhere»), який дає багато переваг для крос-платформного тестування.
Java використовується для підтримки внутрішніх корпоративних систем в багатьох великих корпораціях. Програми, написані на мові Java, працюють більш ніж на 3 мільярдах пристроїв. Незважаючи на те, що для юніт тестування найпопулярнішою платформою є JUnit, багато платформ для автоматизації тестування з відкритим вихідним кодом були розроблені на мові Java. Автоматизоване тестування в браузері для веб-сайту або веб-додатку можна виконати за допомогою JUnit з Selenium WebDriver.
У цій мові є як плюси, так і мінуси. З позитивного – це PageFactory, спрощує код для автоматизації та є можливість писати дуже прості для розуміння тести. У Java існує велике ком’юніті, нею володіють багато розробників і на ній вже написана величезна кількість інструментів. Внаслідок цього тестувальники часто мають можливість запитати поради у розробників і легше знайти готове рішення під певне завдання. З мінусів – код читається складніше, ніж навіть в Python. Ще одним мінусом є повідомлення про помилки, які часто складно зрозуміти.
Python
Python також використовується в автоматизації тестування, пропонує відкритий вихідний код, використовується в машинному навчанні та багато іншого. Основною перевагою, яку Python має перед іншими мовами програмування для автоматизації тестування, є легкість в освоєнні завдяки читабельності мови.
Згідно з дослідженням Stack Overflow Developer Survey (2019), колосальні 73,1% проголосували за Python як найбільш затребувану мову програмування, що вказує на популярність Python.
Ця мова програмування високорівнева, плюс має відмінну динамічну систему. Python найкраще підходить для автоматизації тестування.
Переваги Python:
JavaScript
За результатами досліджень Stack Overflow Developer Survey (2019), JavaScript зайняв перше місце в розділі «Programming, Scripting, and Markup Languages» в категорії «Most Popular Technologies».
JavaScript також є чудовою мовою програмування для автоматизації тестування, яка переважно використовується для фронтенд розробки. Багато великих споживацьких веб-сайтів використовують JavaScript для розробки інтерфейсу, і він однаково популярний для автоматизації тестування.
Однією з головних причин його популярності в автоматизації тестування може бути більш широке впровадження shift-left testing методології, коли розробники також беруть участь в розробці тестового коду. У shift-left testing методології команда тестувальників багато співпрацює з розробниками, що дозволяє реалізовувати автоматизоване тестування максимально ефективно.
JavaScript разом з Selenium також використовується для розробки тестових сценаріїв для автоматизованого тестування в браузерах. Його можна використовувати з віддаленою Selenium Grid, такий як LambdaTest, при цьому не буде необхідності проводити суттєві зміни у вихідному коді.
Однією з переваг, що робить JavaScript кращою мовою для автоматизації тестування, є широкий спектр середовищ тестування для End-to-End і юніт тестування. Деякі з кращих фреймворків автоматизації тестування на JavaScript:
Для автоматизації на JavaScript потрібно володіти базовими основами мови, навчитися роботі в Selenium, а також визначитися з фреймворком.
Переваги JavaScript:
З недоліків JavaScript можна виділити:
Ця мова розробки повільно і неухильно набирає обертів в області автоматизованого тестування. Завдяки потужним можливостям мови і її сумісності з Selenium WebDriver, багато автоматизаторів схильні використовувати C# для тестування автоматизації та крос-браузерного тестування. Шаблон проектування Page Object Model (POM) дозволяє тестувальникам написати тестовий код ефективним і легко підтримуваним.
У C# розроблено багато платформ для автоматизованого тестування, створених допомогти в автоматизації тестування на Selenium або для автоматизованого тестування в браузерах. Також існує широкий ряд тестових середовищ, через що багато автоматизаторів використовують C# для написання тестових випадків для крос-браузерного тестування.
Найбільш часто використовувані платформи автоматизації тестування в C#:
Ruby також є мовою програмування, за допомогою якої можна писати автоматизовані тести. Ця мова зараз набирає популярності в сфері автоматизації та автоматизованому тестуванні в браузерах. Вона має відкритий вихідний код, є досить простою та продуктивною. Ruby, на зразок Python, дуже проста у вивченні і подальшій реалізації. Потужною мовою для програмування і автоматизації її робить те, що вона має простий і зручний для людини синтаксис та гнучку об’єктно-орієнтовану архітектуру.
У Ruby активно підтримується і зростає співтовариство його користувачів, яке вважається найбільш важливою і сильною стороною мови. Розробники поступово все більше віддають перевагу Ruby як мові програмування для розробки веб-додатків, так як за допомогою неї можна створити корисні хороші програми, використовуючи при цьому набагато менше число рядків коду.
Мова Ruby також дружить з платформою Selenium, тому тестувальники автоматизаторів можуть писати тести на Selenium. Навчитися роботі з мовою Ruby і платформою Selenium досить легко, і знадобиться зовсім невелика кількість рядків коду, щоб написати, наприклад, тести для крос-браузерного тестування.
Ruby і веб-фрейм Ruby on Rails є популярною інтерпретуємою мовою для стартапів. У ній є повне онлайн-навчання, як для початківців, так і для досвідчених програмістів, а також для фахівців в цій області. Високий рівень прийняття означає доступність численних веб-архівів та інструментів, які допомагають веб-розробникам швидко створювати додатки. У Ruby є джерело багаторазових архівів, які легко обслуговуються, а також розгорнуті в формі Ruby Gems. Як і Python, Ruby підходить для автоматизації від Puppet – інструменту управління начерками з відкритим вихідним кодом, спочатку написаного на мові Ruby.
В Ruby для допомоги в крос-браузерному тестуванні розроблений цілий ряд платформ для роботи тестувальників автоматизаторів. Нижче наведені найбільш поширені платформи:
Підводячи підсумки можна сказати, що Python і Java є сьогодні найкращими мовами для автоматизації. На Ruby можна швидко почати писати повноцінний фреймворк для тестування. Такий вид тестування обходиться дешевше і набагато швидше, ніж ручне тестування. У реальності відбувається так, що чим краще фахівець програмує, тим правильніше і точніше зможе автоматизувати. Вивчення будь-якої мови послужить гарною основою для технічного зростання.