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

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

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

QA Team Lead и TechLead в NIX

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

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

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

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

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

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

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

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

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

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

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

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

Курс QA engineer від Mate academy.
Якщо ви новачок та хочете опанувати професію QA engineer - обирайте курс з гнучким графіком та допомогою в працевлаштуванні!
Отримати знижку на курс

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

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

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

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

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

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

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

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

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

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

Онлайн-курс Digital Marketing від Mate academy.
На курсі Digital Marketing ви отримаєте усі необхідні навички, щоб отримати нову роботу: навчитесь використовувати цифрові канали для залучення аудиторії, просування брендів, товарів та послуг.
Отримати знижку на курс

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

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

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

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

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

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

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

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

Курс QA Manual (Тестування ПЗ мануальне) від Powercode academy.
Навчіться знаходити помилки та контролювати якість сайтів та додатків.
Записатися на курс

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

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

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

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

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

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

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

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

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

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

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

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

Курс Full-stack developer від Mate academy.
Опануйте нову професію завдяки курсу Full-stack developer! Ви отримаєте необхідні навички та допомогу у працевлаштуванні! .
Отримати знижку на курс

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

Курс UI/UX designer від Mate academy.
UI/UX designer досліджуєте, що турбує користувача та створює візуальну частину додатку чи сайту. Станьте таким спеціалістом після нашого курсу! .
Отримати знижку на курс

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

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

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

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