UA RU
logo
Вопросы      02/06/2022

«Главное — понять основы, дальше будет легче»: сколько языков программирования нужно знать тестировщику

Сергей Могилевский BLOG

QA Team Lead и TechLead в NIX

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

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

На IT-конференции NIX MultiConf я рассказывал о программировании как об одном из возможных инструментов для QA-инженера, а теперь готов поделиться своим опытом с читателями Highload.

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

Если я QA, то зачем мне глубоко погружаться в программирование?

Освоение любого языка поможет вам разобраться во всех базовых концептах программирования — переменных, типах данных, циклах, условных операторах, объектах и ​​т.д.

Это замечательная точка входа в автоматизацию тестирования, а отсюда совсем недалеко до более сложных умений вроде чтения кода разработчиков.

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

Когда вы понимаете код приложения, можете тестировать его как «белый ящик». То есть сразу видеть, какие тест-кейсы нужны и как максимально рационально их написать. К тому же понимание программного кода позволяет намного глубже исследовать баги, найденные в приложении, тем самым помогая разработчикам сократить время следующего фикса.

Окей, но неужели одного языка хватит?

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

Большинство языков создано по одному лекалу. Базовые концепты везде одинаковы, отличаются только синтаксис и минорные моменты. В любом языке переменные останутся переменными, циклы — циклами, а классы — классами.

Онлайн-курс "Ефективні презентації в PowerPoint" від Laba.
Навчіться доносити ідеї через актуальні візуалізації.Курс зі створення презентацій, які додивлятися до кінця.Будь то sales offer, чи pitch deck.
Дізнатись більше

И да, я понимаю, что если вдаваться в подробности, то низкоуровневые концепты того или иного языка будут заложены разные. Но для рядового QA-автоматизатора, уверен, мои тезисы будут актуальны.

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

Среди самых популярных сегодня — Java, Python, JS, C#, а меньше всего — Ruby и Groovy.

Если условно пытаться оценить их мощность (наличие инструментов в рамках языка), популярность (что будет напрямую влиять на легкость нахождения ответов на вопросы) и простоту использования, то может получиться примерно такой график:

Мой совет прост: берите любой язык, который вам нравится, и осваивайте базу.

Когда QA может потребоваться знание еще одного языка программирования?

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

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

Требования клиента

Часто клиенты просят, чтобы автоматизация в их проектах выполнялась на определенном языке. Причины могут быть абсолютно любыми: от «Все наши команды используют этот фреймворк для автоматизации» до «Я слышал, что этот фреймворк самый лучший, и его точно нужно попробовать». Конечно, вы можете оспорить решение заказчика, но далеко не всегда это сработает. В действительности придется адаптироваться под условия клиента.

Курс Project Manager від Powercode academy.
Онлайн-курс Project Manager. З нуля за 3,5 місяці до нової позиції Без знання коду, англійської та стресу.
Зарееструватися

Специфика проекта

Бывает и такое, что вы заходите на проект, а вокруг уже происходят давно настроенные процессы, которые нельзя изменить. К примеру, помимо основной автоматизации команда привыкла делать небольшие автотесты в Postman для точечных проверок, а в нем можно писать скрипты только на JavaScript. В таком случае просто присоединяемся к команде и бежим в одном темпе.

А может, на собеседовании вы доказали, что относительно быстро способны овладеть необходимым языком или фреймворком и присоединиться к автоматизации, которую уже сейчас поддерживает команда.

Другой причиной выбора нового языка программирования может служить то, что разработчики иногда тоже хотят участвовать в автоматизации тестирования — писать тесты или просто их читать. Тогда следует выбирать тот язык, на котором ведется разработка программы — и всем будет комфортно участвовать в совместных активностях.

Да, сначала это может быть обременительно, но если все сделать правильно, то помощь девелоперов быстро окупит всю изначальную боль.

Кроме этого, в проекте могут использоваться специфические технологии, которые не удастся тестировать на каком-либо языке. К примеру, существует протокол передачи данных MQTT. Для простоты можем назвать его аналогом HTTP, но с некоторыми оговорками и юз кейсамиUse Case описывает сценарий взаимодействия участников (как правило, пользователя и системы), специфическими для IoT.

Если вам понадобится писать перформанс-тесты для MQTT, вам не подойдет какой-либо перформанс-инструмент. Придется брать один из популярных, в котором необходим инструментарий. К примеру, для Jmeter есть такая библиотека, пусть и с ограниченным функционалом. Или можете использовать один из инструментов, который создавался специально для тестирования MQTT:

В противном случае вы просто не сможете выполнить поставленную перед вами задачу.

Онлайн курс з промт інжинірингу та ефективної роботи з ШІ від Powercode academy.
Курс-інтенсив для отримання навичок роботи з ChatGPT та іншими інструментами ШІ для професійних та особистих задач, котрі допоможуть як новачку, так і професіоналу.
Записатися на курс

Особые задачи

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

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

Необходимость читать девелоперский код

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

Главное понять основы программирования. А дальше любой язык легко будет выучить

Программирование – это набор концептов. Как только вы ими овладеете, вам будет не сложно «натянуть» на этот концепт конкретную имплементацию в виде языка программирования, библиотеки или фреймворка. Это подобно тому, как мы учимся кататься на велосипеде. Вот 5 минут назад ты еще неловко, подталкивая себя ногой, пытаешься на завалиться на бок, а теперь уже относительно быстро едешь, пытаясь научиться поворачивать, тормозить и объезжать прохожих.

Знаете это ощущение, когда учишься, и вдруг все становится ясно и все выходит? В голове будто что-то щелкает.

Буквально это же случилось и с моим умением программировать еще в университетские годы. Поначалу мне многое давалось нелегко. В первый год обучения на программировании я не понимал и половины того, что мне говорил преподаватель. Но впоследствии я перестал думать о том, «как ехать на велосипеде», и получил возможность овладевать более сложными конструкциями и умениями. Когда-то сначала хитроумная для меня теория упорядочилась и стала понятна.

Инженерный подход к задачам автоматизации — это ключ к решению любого таска.

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

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

Онлайн-курс DevOps engineer від Mate academy.
DevOps інженери відповідають за автоматизацію процесів розробки, тестування та випуску продукту. Завдяки цьому курсу ви швидко станете високооплачуваним спеціалістом.
Отримати знижку на курс

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн-курс "B2B-продажі" від Laba.
Розробіть ефективну стратегію B2B-продажів за 11 занять: від воронки до партнерської програми.Лектор курсу — засновник консалтингової компанії, який має 15 років досвіду в продажах.
Дізнатись більше

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: