Какой язык программирования выбрать? Этот вопрос встаёт перед каждым начинающим IT-специалистом. В статье разберём особенности языков программирования с точки зрения автотестирования.
Выбор языка — важная задача для автотестировщика. Потому что проекты могут меняться, а вместе с ними будут меняться и языки программирования (ЯП).
Код проекта и автотесты вполне могут реализовываться на разных ЯП, но удобнее, если эти языки совпадают. Во-первых, это позволяет использовать единую инфраструктуру (среда разработки, библиотеки, плагины). Во-вторых, процессы и разработки, и автотестирования на проекте будут одинаковыми. И в-третьих, всегда будет возможность использовать знания разработчиков, чтобы облегчить и ускорить тестирование. Итак, какой же язык выбрать?
Java
Java — один из самых популярных языков. Поэтому риск «не совпасть с языком проекта» со знанием Java ниже. Кроме того, благодаря кросс-платформенности на этом языке пишутся приложения для большинства современных платформ (кроме iOS).
В плюсы Java попадает и тот факт, что экосистема вокруг него содержит большой массив библиотек и фреймворков, которые в том числе относятся к работе автотестировщика: Cucumber — для описания тестовых сценариев в читабельном виде, JUnit — для модульного тестирования, Selenium — для тестирования графических веб-интерфейсов.
Главным минусом этого языка является производительность процессов и необходимость большого дискового пространства. Но эта сложность решается грамотной архитектурой тестов и тестового фреймворка благодаря шаблонам проектирования.
Считается, что этот язык сложен для освоения новичками. Но основная сложность заключается в построении правильных алгоритмов и структур данных, а этому можно научиться.
С#
C# – ещё один подходящий язык для начала карьеры в автотестировании. Начиная с 2016 года благодаря платформе .NET Core, основанной на концепции “create once, run anywhere”, С# является кроссплатформенным языком программирования, что позволяет применять его для ОС Windows, Linux, MacOS, Android, iOS и других систем. Используя C# как основной язык программирования, можно с легкостью написать автоматизированные тесты для любого приложения, для UI отлично подойдет Selenium WebDriver и Playwright, для API – RestSharp, а для мобильной автоматизации – Appium. Если нужно создать тестовые сценарии на понятном для бизнеса языке C# автоматизаторы можно использовать Gherkin синтаксис и SpecFlow как основную библиотеку для автоматизации тестовых сценариев, таким образом следуя поведенческому подходу в тестировании приложений.
Python
Python уступает Java и C# по количеству созданных на нём программных продуктов (программ, которые решают проблемы заказчика). Но его популярность возросла вместе с популярностью технологий искусственного интеллекта, нейросетей и машинного обучения. И хотя ядро таких технологий обычно написано на C++, Python широко используется в этих областях для создания «клиентского слоя» ПО, над которым чаще всего и работают автотестировщики.
Считается, что этот язык относительно прост для изучения. Сегодня Python поддерживает современные концепции и парадигмы программирования, в частности, объектно-ориентированное программирование. Ещё один плюс Python — это богатая экосистема, которая в том числе содержит специальные библиотеки и фреймворки для автотестирования.
JavaScript
Считается, что это язык фронтенда. Поэтому он довольно популярен среди автотестировщиков. Изначально JavaScript был узкоспециализированным языком для написания браузерных сценариев. Однако в настоящее время на нём создают и серверный код. Его даже применяют для программирования встроенных приложений, например, для платформы Raspberry PI.
Под JavaScript подразумевают целое семейство реализаций стандарта ECMAScript. Наиболее ходовыми можно считать JavaScript и TypeScript от Microsoft. Основным минусом JavaScript является его сильная фрагментированность: множество дублирующих друг друга библиотек, не позволяющих выделить какой-то общеупотребительный набор.
Любой из этих языков программирования подходит для начала карьеры в автотестировании. А какой конкретно выбрать — зависит от ваших личных предпочтений и направления проектов, в которых вы хотите развиваться.