- Да, такой минимум (уже) существует
- Почему это важно и нужно
- Что учить?
- Где учить?
- Польза ЯП для QA: примеры
- Где практиковать
- Подводя итоги
Да, такой минимум существует
Тестировщик играет важнейшую роль в обеспечении качества и надежности продукта. Однако динамика развития IT-отрасли предъявляет новые требования к уровню входа в эту профессию.
Владение основами программирования перестает быть дополнительным навыком, становясь неотъемлемой частью инструментария тестировщика.
Реально основы программирования так уж важны для тестировщика, и как это может изменить его профессиональную деятельность?
Давайте разберемся, какие преимущества и возможности открываются перед тестировщиком, овладевшим базовыми навыками программирования.
Почему это важно и нужно
Понимание хотя бы фундаментальных основ программирования играет ключевую роль в расширении возможностей тестировщика и повышении его эффективности. Вот несколько причин, по которым это нужно ему:
Улучшаются основные скиллы как тестировщика
Основы программирования не просто дополняют, а существенно углубляют существующие навыки тестировщика, позволяя глубже понять, как работает любое приложение. Это помогает создавать более сложные и эффективные тестовые сценарии и кейсы. Это открывает возможности для автоматизации своих рутинных задач и написания скриптов, значительно упрощая работу.
Понимание архитектуры и кода
Знание основ программирования помогает тестировщикам лучше понять структуру (архитектуру) приложения, и тестируемого им кода. Это позволяет быстрее определять потенциальные и уже случившиеся проблемы и ошибки, а также предлагать разработчикам предметные улучшения.
Улучшается коммуникация с разработчиками
Знание основ программирования позволяет тестировщикам и разработчикам «говорить на одном языке». Чем точнее и яснее тестировщик понимает код и сопутствующие нюансы, тем эффективнее обмен информацией и обсуждение проблем.
А что учить?
- База. Фундаментал. Python, Java, JavaScript
Изучение таких основных языков программирования в QA, как Python ИЛИ Java ИЛИ JavaScript, становится (или уже по факту является!) основой карьерного продвижения QA-инженера.
Что выбрать? Вопрос весьма сложный — этому посвящена отдельная статья. Вкратце: Python это простой синтаксис и широчайшие возможности автоматизации, и самый низкий порог входа; Java чаще используется в корпоративной среде; а JavaScript преобладает в веб-разработке и фрилансе.
- Автоматизация (фреймворки)
Понимание различных подвидов тестирования, таких как функциональное, модульное и интеграционное, является неотъемлемой частью работы тестировщика. Уверенное владение инструментами автоматизации, такими как Selenium и другие, помогает эффективно создавать и выполнять тест-кейсы и сценарии, значительно повышая скорость работы QA-инженера.
- Системы контроля версий
Освоение систем контроля версий, таких как Git, также играет роль в современной разработке, в любой роли. Понимание основных команд Git и эффективная работа с репозиториями позволяет тестировщикам отслеживать изменения кода, создавать «экспериментальные» ветки-бранчи и ветки совместной работы, то есть безопасно и эффективно вносить свой вклад в продукт.
Изучение этих основ — важный шаг для тестировщиков, который поможет им улучшить свои навыки, расширить возможности и стать более эффективными участниками команды.
А где учить?
- В онлайне — курсы и платформы
Такие платформы, как Coursera, Udemy, Codecademy и SoloLearn, предлагают обширные, хорошо структурированные учебные материалы для изучения основ программирования и тестирования. Видеоуроки, упражнения и проекты, которые помогают закрепить полученные знания путем их практического применения (так называемые code playgrounds).
К дополнение к ним — вероятно лучшая из существующих русскоязычная платформа — Stepik.
- Официальная документация по ЯП и гайды/туториалы
В официальной документации по языкам программирования всегда содержится масса полезной, исчерпывающе полной (поэтому скучной) информации о синтаксисе, основных понятиях и методах работы с выбранным языком. Гайды и видеотуториалы помогают понять хотя бы основы, а если понравится, то и более сложные нюансы.
- Коммьюнити и форумы
Участие в сообществах на таких платформах, как например русскоязычный раздел StackOverflow и GitHub, даст возможность пообщаться с реальными профессионалами, обращаться за советом, обмениваться опытом и участвовать в дискуссиях. GitHub предоставляет доступ к открытым проектам, позволяя не только изучать чужой код, но и самому участвовать в разработке — что как правило рассматривается рекрутерами очень даже позитивно и существенно повышает шансы трудоустройства в QA Automation.
Польза? Неоспорима
Изучение программирования на серьезном уровне открывает перед manual-тестировщиками множество возможностей.
- Более эффективное использование стандартных QA-инструментов: Использование JavaScript для написания тестовых сценариев в таких инструментах, как Postman, облегчает тестирование API, ускоряя верификацию запросов. Это повышает скорость тестирования и позволяет более точно исследовать функциональность приложения.
- Автоматизация рутинных QA-процессов с помощью скриптов: Сценарии на ЯП или Bash помогают генерировать тестовые данные, обрабатывать файлы и упрощать рутинные задачи. Это значительно повышает продуктивность тестирования, его надежность и разумеется упрощает рутинные QA-обязанности.
- Регулярные выражения в тестировании: Хорошее знание и использование регулярных выражений позволяет тестировщикам эффективно находить и анализировать данные в текстовых файлах или запросах, которые являются важнейшей частью QA-процессов.
- Анализ логов и тестовых данных: Использование Python или других скриптовых языков для обработки и анализа больших объемов данных или логов будет полезным для обнаружения аномалий или выявления трендов/тенденций, что способствует общему улучшению процессов на проекте.
- Генерация тестовых данных: Грамотное использование языков программирования при генерации тестовых данных помогает создавать крупные, разнообразные, заточенные под проект наборы данных, повышая общее качество продукта и охватывая широкий спектр потенциальных сценариев использования.
Итак, вы убедились, что овладение, а затем активное применение базовых навыков программирования в реальных проектах делает работу QA-инженера более эффективной, помогает повысить качество продукта, и улучшить сотрудничество с разработчиками.
А где практиковать?
- Опенсорс: Участие в проектах, открытых для всех желающих участвовать (опенсорсе) не просто улучшает навыки программирования, но и позволяет научиться полноценно сотрудничать с другими участниками, получая от них ценный опыт и знания о лучших практиках тестирования и разработки.
- Пет-проекты: Создание небольших личных проектов «для души» (так называемых пет-проектов) — это отличный способ практиковать приобретенные dev-скиллы (и затем продемонстрировать их на собеседовании!).
Это может быть создание красивых и полезных автотестов, или скриптов для генерации тестовых данных. Или может даже разработка — не очень сложных, но чем-то полезных, или хотя бы просто на вид приятных приложений.
Подводя итоги
В современных условиях, в 2023 году, сама по себе роль тестировщика претерпела значительные изменения. От этой роли теперь ожидают не только выявления ошибок, но и даже в какой-то мере участия в процессе разработки.
Овладение основами программирования выходит за рамки простого, обычного, постепенного расширения набора скиллов, как было раньше.
Изучение ЯП тестировщиком не просто делает его автоматизатором, увеличивая его доход примерно на треть.
Оно также преобразует процесс тестирования, делая его более прозрачным и эффективным для остальных членов команды проекта.
Понимание основ программирования позволяет создавать более гибкие и сложные тестовые сценарии и тест-кейсы, а также улучшает коллаборацию с разработчиками, повышая общий «средний» уровень профессионализма в проектной команде.
Интеграция программирования в сферу тестирования, обучение тестировщиков ЯП также открывает для проджект-менеджеров новые возможности, начиная от как можно более полной автоматизации процессов, и заканчивая приведением проектной отчетности в идеальное состояние.
Автор — радиоинженер по образованию и QA-инженер по призванию. Сейчас QA Team Lead и Co-owner в компании Devhouse