QA-инженер: кто это, чем он занимается и как им стать
Разбираемся, что это за профессия и чего ждут от специалиста в 2024 году.
Иллюстрация: freepik / frok 5674 / rawpixel / Freepik / Boliviainteligente / Goran Ivos / Mike Van Den Bos / Manuel / Pi Supply / Unsplash / Дима Руденок для Skillbox Media
Любое программное обеспечение, будь то мобильное приложение для социальной сети или новая версия операционной системы, перед релизом должно пройти проверку качества и тестирование. Этим занимаются QA-инженеры. Расскажем подробнее о том, что это за специалисты.
Кто такой QA-инженер
QA engineer (от английского quality assurance — обеспечение качества) — это инженер по тестированию программного обеспечения, проверяющий его качество на всех этапах разработки: от сбора требований и согласования архитектуры проекта до контроля работоспособности перед релизом для пользователей. Это отличает его от тестировщика, который подключается к работе только на этапе готового продукта.
Требования к QA-инженерам различаются в отдельных компаниях, поэтому единый перечень для специальности сформулировать сложно. Например, на HeadHunter можно найти вакансию с тестированием дронов на полигоне. Такой инженер должен не только владеть обычными навыками, но и участвовать в испытательных полётах.
QA-инженеры, как и тестировщики, делятся на мануальщиков и автоматизаторов. Первые проверяют документацию, код, интерфейс и другие части ПО вручную, прокликивая кнопки и вычитывая текст на соответствие требованиям. QA-автоматизаторы используют для этого разные инструменты — библиотеки и фреймворки, например Pytest для Python.
Читайте также:
Какие знания и навыки нужны
QA-инженеру
Требования в разных вакансиях различаются, но есть базовый набор навыков, который встречается в большинстве из них.
Основы тестирования: виды и методы
QA-инженеру не обойтись без теоретической базы. Необходимо знать, какие существуют подходы и виды тестирования и когда каждый из них стоит использовать.
Специалист должен знать, как составляется тестовая документация, чек-листы и тест-кейсы. Это основа мануального и автоматизированного тестирования.
Вы читаете эту статью, потому что задумываетесь о карьере тестировщика? Присмотритесь к этому курсу Skillbox — он подойдёт вам, если вы хотите освоить тестирование с нуля.
Языки программирования
В зависимости от вида тестируемого ПО инженер должен знать на базовом уровне языки программирования, на которых оно создано. Например, если он работает с мобильными приложениями, придётся разобраться со Swift для iOS или Kotlin для Android.
При работе с автоматизированным тестированием используется JavaScript, Python или Java и их специализированные фреймворки: Cypress для JavaScript, Pytest для Python и JUnit для Java.
Инструменты тестирования: библиотеки и фреймворки
В разных компаниях используют свой стек технологий для тестирования. Но можно выделить наиболее популярные инструменты:
- Postman, Insomnia и SoapUI для тестирования API;
- Cypress, Katalon Studio и Selenium для работы с сайтами и веб-приложениями;
- Espresso и XCTest для тестирования мобильных приложений.
Знать их все необязательно. Достаточно одного инструмента из каждой группы.
Базы данных и SQL
Веб-приложения используют для хранения информации базы данных. Чтобы оценивать их работоспособность и взаимодействие с тестируемым ПО, потребуется знать язык запросов SQL и одну из основных баз данных на его основе: MySQL, PostgreSQL или другой.
Системы контроля версий
Система контроля версий Git используется для управления версиями исходного кода программ. Разработчики, QA-инженеры и другие специалисты могут одновременно работать над одним проектом без проблем с синхронизацией разных версий кода.
Читайте также:
Системы баг-трекинга
Для совместной работы используют системы управления проектами, например Jira или YouTrack, и ПО для баг-трекинга, то есть учёта выявленных дефектов: Kiwi TCMS, Qase TCMS и другие. Они упрощают фиксацию ошибок и постановку задач для их исправления.
Чем занимается QA-инженер
Главная задача QA-инженера — подготовить план тестирования программного обеспечения и провести его самостоятельно или с помощью команды. Если проанализировать вакансии, то можно составить список часто встречаемых рабочих задач.
Анализ требований к продукту и технической документации. QA-инженер проверяет, соответствует ли техническая документация функциональным и нефункциональным требованиям к продукту.
Например, по мнению владельца продукта, расчётная посещаемость приложения ожидается на уровне 10 000 пользователей в день, но в документации указано значение 1000. Если не исправить ошибку, то система не справится с количеством запросов и приложение не будет работать.
Разработка плана тестирования и тест-кейсов. Тест-план — это документ, который описывает весь процесс тестирования: цели, сроки проведения, участников и их обязанности. Его составляет сеньор QA-инженер или тимлид. Тест-кейсы — это пошаговое описание каждой задачи, указанной в тест-плане. Благодаря этому их может выполнить джуниор или мидл.
Проведение тестирования. После того как тест-кейс написан, его необходимо выполнить — вручную или с помощью инструментов автоматизации. По завершении формируется список багов, которые передаются разработчикам для исправления.
Определение метрик качества программного обеспечения и контроль за их значениями. Например, один из важных показателей качества ПО — степень покрытия тестами. Целевое значение и план по его достижению определяет сеньор QA-инженер или руководитель отдела тестирования.
Чем QA-инженер отличается от тестировщика
Специалистов по quality assurance и тестировщиков часто путают. В некоторых компаниях оба названия используют для обозначения одной и той же специальности. Но различий между ними много.
Главное из них в том, что QA-инженер участвует в разработке программного обеспечения на всех этапах, начиная с момента создания документации с описанием требований к нему, а тестировщик подключается на финальном этапе, когда продукт уже готов. Но есть и другие различия по списку задач.
Рабочие задачи | Тестировщик | QA-инженер |
---|---|---|
Проверка функциональных и нефункциональных требований и технического задания на разработку ПО | Нет | Да |
Разработка плана тестирования, включая выбор инструментов, методологий работы и сроков | Да, но чаще всего на уровне мидл- и сеньор-специалистов | Да |
Привлечение к работе смежных специалистов команды: заказчика, бизнес- и системных аналитиков, разработчиков и так далее | Нет | Да |
Проведение ручного или автоматизированного тестирования | Да | Да |
Составление плана по устранению выявленных ошибок и контроль работы специалистов | Нет | Да |
Методы тестирования
Существует несколько вариантов классификации методов тестирования: по используемым инструментам, по оцениваемым требованиям и по подходу к тест-кейсам. Поговорим о каждом из них.
По используемым инструментам
Тестирование бывает ручным и автоматизированным. При ручном тестировании специалист работает с интерфейсом приложения или сайта: нажимает на кнопки, заполняет поля в формах и так далее. Его задача проверить, возникают ли при этом какие-либо ошибки.
Например, приложение при регистрации требует от пользователя ввести номер мобильного телефона. QA-инженеру необходимо удостовериться, что пользователь может ввести только его и только в требуемом формате, а не электронную почту или случайный набор символов.
Автоматизированное тестирование проводится специализированными программами и инструментами для автоматизации процесса. Например, для проверки фильтрации товаров по производителю в интернет-магазине QA-инженер может написать простой алгоритм, который сделает это сам. Проверять все возможные комбинации вручную просто долго.
По оцениваемым требованиям
Тестирование может быть функциональным и нефункциональным.
К первому относится проверка тех задач ПО, которые оно должно непосредственно решать. Например, от банковского приложения мы ожидаем, что оно может переводить деньги со счёта на счёт, отображать баланс и присылать уведомления пользователю о его изменениях. При функциональном тестировании мы будем проверять именно эти действия.
Нефункциональное тестирование показывает, насколько удобно приложение само по себе, его производительность на разных устройствах, надёжность и так далее. В примере с банковским приложением это будут проверки работоспособности двухфакторной авторизации или удобство расположения элементов навигации для пользователей.
По «прозрачности» тест-кейсов
Существует три подхода к тестированию программного обеспечения: тестирование белого, серого и чёрного ящиков. Они различаются между собой доступом QA-инженера к исходному коду.
Чёрный ящик. Специалист не может проанализировать программный код тестируемого продукта. Поэтому он оценивает только его работоспособность. Например, если тестируется сайт онлайн-магазина, то на уровне интерфейса проверяется, как работает поиск товаров по сайту, добавляются ли выбранные позиции в корзину покупок, можно ли применить промокод на скидку и так далее.
Белый ящик. QA-инженер знает программный код ПО и использует его для поиска ошибок. В примере с интернет-магазином при выставлении количества заказываемых товаров, специалист проверяет, как эта функция на уровне кода обрабатывает разные числа, в том числе отрицательные, дробные и другие.
Серый ящик. QA-инженер не имеет полного доступа к программному коду или вынужден оценивать его работоспособность со стороны интерфейса. Например, он знает, что для получения списка товаров при фильтрации используется API, но правильность его работы проверяет, сверяя полученный при фильтрации список товаров вручную, а не оценивая исходный код для API-подключения.
Нужны ли QA-инженеры в IT-компаниях
В середине декабря 2023 года на HeadHunter было больше 5900 вакансий:
Больше всего их в Москве, на втором месте — Санкт-Петербург, а затем идёт Татарстан и Новосибирская область. Нужны специалисты разного уровня — от джуниоров до тимлидов.
Карьера QA-инженера
Для QA-инженеров, как и других айтишников, существует система грейдов, классифицирующая их по опыту, навыкам и уровню зарплаты. Но система условная, поэтому требования в конкретных компаниях могут различаться.
Junior. Опыт работы до года. Джуниор выполняет тест-кейсы, которые для него составили мидл или сеньор QA-инженеры. От таких специалистов требуют знания теории тестирования и базового владения основным ПО и инструментами, используемыми в работе.
Middle. Опыт от года до трёх лет. Автономная рабочая единица — может самостоятельно писать тест-кейсы исходя из плана тестирования и проводить их, или ставить задачи джуниор-специалистам.
Мидл глубоко знает ПО и инструменты, используемые в работе, умеет выбрать из них наиболее подходящие для конкретного тест-кейса. Как правило, специалисты этого уровня уверенно владеют автоматизированным тестированием.
Senior. Опыт от трёх лет. Сеньор пишет план тестирования ПО, описывает сложные тест-кейсы и принимает результаты работы джуниоров и мидлов. Специалист разрабатывает и описывает метрики качества и следит за их достижением.
Сеньор QA-инженер может стать тимлидом команды тестирования или даже CTO в компании. Некоторые специалисты переходят в бэкенд-разработку, так как обычно уверенно владеют одним из языков программирования для бэкенда — Python или Java — и SQL.
Сколько зарабатывают QA-инженеры
По данным «Хабр Карьеры» за первое полугодие 2023 года, медианная зарплата QA-инженера в России — 125 000 рублей. Важно, в статистике учтены и тестировщики ПО.
Примерные диапазоны зарплат для разных грейдов выглядят так:
- Джуны — от 25 000 до 80 000 рублей.
- Мидлы — от 90 000 до 180 000 рублей.
- Сеньоры — от 180 000 до 500 000 рублей.
Уровень зарплаты зависит не только от грейда, но и от владения автоматизированным тестированием. Как правило, у автоматизаторов зарплата больше на 20–30%
Как стать QA-инженером
Правильного пути, подходящего для всех, нет. Кто-то выбирает самостоятельное обучение, а кто-то готовые онлайн- или очные курсы.
Руслан Мурадов
QA Lead в SberDevices, эксперт Skillbox
— Для того чтобы стать успешным QA-инженером, советую правильно подойти к процессу обучения.
Начните с углублённого понимания основ тестирования и разберитесь в том, как работать с функциональными и нефункциональными его видами. После этого переходите к изучению принципов работы баз данных и клиент-серверных приложений. Будет здорово, если вы сразу начнёте осваивать автоматизированное тестирование на одном из популярных языков программирования: Python, Java или JS.
Не забудьте разобраться в инструментах управления проектами, например с Jira. С ними придётся много взаимодействовать на работе. Ну, и конечно, полезно знать метрики, которые используют в тестировании, например это могут быть как продуктовые метрики, такие как Zero Bug Policy, так и процессные — Test Design Coverage и другие. Это поможет вам лучше понимать, что влияет на качество продукта.
И главный совет — чередуйте теорию и практику, пробуя делать руками всё то, что прочитали в книге или узнали на курсах. Без этого знания быстро забудутся.
Если вы хотите погрузиться в тему тестирования программного обеспечения, вот несколько ресурсов для старта:
- «Тестирование программного обеспечения. Базовый курс» Святослава Куликова;
- «Искусство тестирования программ» Гленфорда Майерса, Тома Баджетта и Кори Сандлера;
- Курсы «Тестирование ПО с нуля. Теория + Практика» и «Тестирование ПО с нуля. Тесты» на платформе Stepik;
- Курс «Автоматизация тестирования с помощью Selenium и Python» на платформе Stepik.
- Курс Skillbox «Инженер по тестированию»;
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!