QA-инженер (расшифровка аббревиатуры — Quality Assurance, «обеспечение качества») — специалист, который следит за качеством программного обеспечения на всех этапах жизненного цикла разработки. QA engineer нужен на всех этапах работы над продуктом: от сбора требований до проверки продукта перед релизом. Этим он отличается от тестировщиков, которых привлекают на этапе готового ПО.
Требования к специалистам в этой области (Quality Assurance Engineer) размыты, зависят от задач компании. В обзоре рассказываем все о профессии QA-инженера:
- каковы обязанности и задачи специалиста, чем ему предстоит заниматься;
- в чем отличие QA-инженера от тестировщика;
- с чего начать карьерный путь, какие зарплаты указаны на сайтах вакансий.
Кто такой QA-инженер
QA-инженер — это профессия, благодаря которой минимизируется риск ошибок и недоработок в ПО на этапе создания (DEV), в процессе разработки (UAT, LT) и на стадии эксплуатации (PROD).
Согласно ISO 9000:2015 (Международный стандарт системы менеджмента), QA — участник системы качества наряду с другими членами команды:
- QI manager — улучшение качества;
- QP — планирование качества;
- QC manager — управление качеством.
Представители профессии занимаются тестированием:
- веб-сайтов;
- мобильных приложений;
- игр;
- отраслевого ПО (например, 1С);
- дронов;
- устройств IoT («умный дом»).
Интересными направлениями могут стать Big Data Testing, Blockchain Testing, Quality engineering (QE), QAOps (DevOps для тестировщиков), Codeless Automated Testing.
Инженеры QA проверяют, как работает программа или приложение:
- ищут ошибки и баги;
- проверяют отображение на различных устройствах;
- защищают софт от хакерских атак и так далее.
Создается впечатление, что тестировщик занимается «кликаньем по кнопкам»: просмотрел формы на сайте, нашел ошибку, сообщил о баге разработчику. Некогда программисты даже называли таких специалистов «обезьянками-кликальщиками». Инструменты для тестов могли носить названия вроде MonkeyRunner («Обезьяна-бегунья»).
На самом деле деятельность инженера по качеству гораздо сложнее и интереснее. В команде engineer взаимодействует с frontend- и backend-разработчиками, техническими писателями, бизнес-аналитиками, системными аналитиками, продакт-менеджерам и другими.
Приведем пример — форму авторизации на сайте GitVerse. Самое простое, что можно протестировать:
- доступность страницы (нет ли ошибок 404, 503 и т.д.);
- соответствие бизнес-условиям (названия кнопок, наличие меню, информационных сообщений);
- корректность отображения на различных устройствах (ПК, смартфоны, планшеты), адаптация формы при расширении или уменьшении поля;
- адаптация для слабовидящих и незрячих (крупные шрифты, возможность озвучивания текста);
- появление уведомлений (валидационных сообщений) при некорректном заполнении формы.
Можно углубиться в тестирование форм и полей. Нужно, чтобы:
- пользователь вводил корректные данные (почта формата support@gitverse.ru, а не support@);
- форма была защищена от SQL-инъекций и внедрения вредоносного кода;
- валидация корректно отрабатывала и на фронтенде, и на бэкенде.
Например, при вводе в поле «Пароль» появляется ошибка: «Длина должна быть не больше 16 символов», а бэкенд принимает пароли длиной от 16 символов. Иными словами, появляется проблема: пользователь не может войти в аккаунт.
Инженер занимается тестированием:
- поля для ввода почты (email) — есть ли @, как система реагирует на отсутствие или задвоением «собаки», что происходит при вводе кириллических символов;
- работы системы при вводе пароля (реакция на латинские символы, цифры, спецсимволы, теги для внедрения вредоносного кода);
- чек-боксов (checkbox) — как ведет себя форма при выборе веб-элемента, проставляется ли галочка при клике по тексту рядом с «квадратиком».
В зависимости от бизнес-требований и специфики формы engineer может заниматься другими направлениями:
- тестировать текстовые поля и области (text field, text area) — оставить поле «Пароль» пустым и проверить появление ошибки, проверить ограничения по количеству символов, реакцию системы на кириллицу/цифры/спецсимволы/ пробелы (пробел считается как отдельный символ), проверить теги <> (таким образом злоумышленники могут внедрить вредоносный код), уточнить, может ли система обработать копирование из буфера обмена через Ctrl C + Ctrl V;
- тестировать поля со ссылками (link) — перебор протоколов https://gitverse.ru, ftp://gitverse.ru, http://gitverse.ru, проверка ошибок при вводе некорректной ссылки вроде https://гитверс.ru;
- тестировать поля для загрузки файлов (upload file) — что происходит без загрузки файла, соблюдаются ли ограничения по размеру и формату (до 10 Мб, только gif/doc/png/pdf), вводится и обрабатывается ли информация по пути (при загрузке по ссылке), как система реагирует на файл размером 0.00 Мб, появляются ли валидационные сообщения при ошибках;
- тестировать поля для ввода номера телефона (phone) — обязательность поля, пустое поле, реакция за сторонние символы вроде + и –, реакция на латинские и кириллические символы, теги, спецсимволы, ввод из буфера обмена через Ctrl C + Ctrl V, наличие масок (фиксированные коды страны — +711, +375, +901), отделение цифр знаками «-»;
- тестировать капчу (captcha) — появляется ли капча, изменяется ли изображение при перезагрузке страницы, как ведет себя система при вводе неверной капчи или оставлении поля пустым;
- тестировать выпадающие списки (dropdown) и списков (listbox) — как ведет себя система при выборе одного элемента, срабатывает ли поиск по элементам, отрабатывают ли сортировки, есть ли выбор через кнопки на клавиатуре (Shift, CTRL).
Также можно тестировать календари и ввод времени (Data/Time Picker), слайдеры, поисковые строки на сайте, кнопки загрузки (лоадеры), другие веб-элементы. И это — только неполный список для веб-формы с двумя полями! Дополнительно можно проверить, к примеру:
- выдержит ли система, если кнопку «Войти» одновременно нажмут 10 000 пользователей;
- происходит ли авторизация под старыми данными, если клиент сменил пароль (API, база данных);
- появляются ли ошибки в уже написанном коде при модификации формы — к примеру, при добавлении нового поля «Логин»;
- деактивируется ли кнопка «Войти» после нажатия на нее для защиты от отправки множественных запросов на сервер (тесты фронтенда).
От корректности работы софта зависят репутация и доходы компании, так что значение QA сложно переоценить.
В случае обнаружения ошибки engineer составляет баг-репорт. В нем обязательно указывается веб-элемент, где найдена проблема (captcha, upload file, text field), чтобы разработчик понимал, как ее исправить.
Обязанности QA-инженера
Часто работу специалиста представляют как последовательность действий: протестировать продукт / отдельную часть кода —> найти баги —> составить баг-репорт и передать задачу разработчику —> заново проверить проект после исправления ошибок.
Но на самом деле обязанностей гораздо больше. Специалисты могут заниматься решением разных задач:
- писать, поддерживать актуальность тестовой и сопроводительной документации (тест-кейсы, планы, чек-листы);
- помогать техподдержке в расследовании инцидентов;
- участвовать в ревью автотестов;
- обучать и наставлять стажеров, младших сотрудников;
- настраивать и поддерживать тестовое окружение (test environment);
- писать баг-репорты и заносить их в трекер (Redmine);
- предлагать улучшения продукта, участвовать в обсуждении новой функциональности.
Например, на этапе согласования проекта QA-инженера могут привлечь наряду с другими членами команды, чтобы проанализировать требования заказчика и возможность реализовать проект.
В процессе работы эксперт взаимодействует с бизнес-аналитиками или системными аналитиками — например, когда предлагает ввести новые требования для валидации формы email. Техническим писателям Quality Assurance Engineer передает информацию для составления или обновления документации, сотрудникам техподдержки — указывает, с какими багами рискуют столкнуться пользователи и как их устранить.
Навыки и знания для работы QA-инженером
Требования нанимателей зависят от конкретной вакансии и специфики проекта.
Выделяют разные виды тестирования:
- по требованиям — функциональное (выполнение задач программного обеспечения) и нефункциональное (юзабилити, дизайн);
- по инструментам — ручное, автоматическое, полуавтоматическое;
- по уровням в сетевой модели — frontend, backend, database;
- по прозрачности тест-кейсов (доступности кода) — «белый» (тестировщик знает программный код), «серый» (доступ к коду частичный) и «черный» (доступа к коду нет) «ящики»;
- по продукту — игры, мобильные приложения, веб-приложения, чат-боты, дроны, отраслевое ПО;
- по сценариям — позитивные и негативные;
- по объектам — безопасности (security and access control), удобства пользования (usability testing), доступности (accessibility), установки (installation), на соответствие (conformance/compliance), конфигурационное (configuration), локализации;
- по изменениям — регрессионное (regression), работоспособности (sanity), дымовое (smoke);
- по уровням — модульное (unit), компонентное (component), системное (system end-to-end), интеграционное (integration).
В рамках отдельных видов QA существуют подвиды. К примеру, для производительности (performance) тестирование может быть:
- нагрузочным (load);
- стрессовым (stress);
- выносливости (soak/endurance testing);
- устойчивости (resilience);
- емкости (capacity);
- масштабируемости (scalability);
- стабильности/надежности (stability/reliability);
- отказа и восстановления (failover and recovery testing и т. д.
Чтобы строить карьеру в области Quality Assurance, нужны не только теоретические знания (составление тестовой документации, чек-листов и тест-кейсов). Часто в вакансиях фигурируют и другие требования.
По данным PractiTest, в ТОП-5 скиллов входили:
- навыки коммуникации;
- автоматизация функционального тестирования;
- знание паттернов, принципов, лучших практик;
- тесты API;
- методология Agile.
Языки программирования
Чтобы профессионально заниматься QA, желательно знать на базовом уровне язык программирования, на котором написан проект:
- Python;
- C++;
- JavaScript;
- Java;
- Ruby и другие.
Часто нужно писать автотесты на том или ином языке программирования. Например, для тестов JavaScript-кода используют библиотеки Mocha, Jest, Jasmine, Karma, Puppeteer. Для теста мобильных приложений выбирают Appium, Espresso, XCUITest, Calabash. Чтобы работать с ними, нужно знать Swift или Kotlin.
Базы данных и SQL
Информация может храниться в реляционных и нереляционных базах данных. В вакансиях часто фигурирует SQL: он используется для программирования, создания, модификации и управления БД. Знать язык нужно на уровне написания запросов средней и повышенной сложности:
- DML;
- DDL;
- подзапросы;
- Join;
- агрегирование и группировка.
На проекте могут использовать разные базы данных: SQLite, MySQL, PostgreSQL, MongoDB, Oracle Database, Microsoft SQL Server, Redis.
Система контроля версий
Git — система контроля версий, благодаря которой несколько человек могут работать над одним проектом:
- вносить изменения;
- разрешать конфликты;
- откатываться до предыдущей версии;
- отслеживать историю изменений и так далее.
Репозиторий может храниться на GitVerse, GitHub, Bitbucket, GitLab.
Претендующим на вакансию нужно понимать git и git-flow (pull, push, merge).
Системы управления проектами и баг-трекинга
На крупных проектах могут использоваться системы управления тестированием — Test Management System (TMS). Они упрощают процессы фиксирования, отслеживания, приоритизации ошибок
На смену баг-трекингам Atlassian JIRA & Adaptavist Test Management в России пришли Trac, YouTrack, EvaProject, TeamStorm и другие. Среди известных TMS-систем — ALM Octane, Test IT, Testuff, TestRail, Zephyr.
Чем QA-инженер отличается от тестировщика
Тестировщик работает над конкретной задачей или куском кода. Должность QA-инженера подразумевает более глубокое погружение, способность видеть проект в целом, участвовать на всех этапах жизненного цикла ПО. Хороший тестер со временем может стать инженером по качеству продукта.
Критерий сравнения | Вакансия QA-инженера | Вакансия тестировщика |
Разработка функциональных и нефункциональных требований на этапе создания ТЗ на разработку | + | – |
Разработка плана тестирования, декомпозиция | + | +/–, чаще всего на уровне Middle, Senior, Lead |
Взаимодействие с заказчиком, менеджером по продукту, системными или бизнес-аналитиками, техническими писателями и смежными отделами | + | – |
Ручное, автоматизированное, полуавтоматизированное тестирование | + | + |
Создание плана устранения багов с приоритезацией и контролем | + | – |
Методы и инструменты тестирования ПО
Список инструментов, которыми должен владеть engineer, зависит от вакансии. Например, если планируется разработка мобильного приложения, целесообразно знать Appium, XCUITest, Android Debug Bridge (adb), Minimal ADB.
Если основной продукт — веб-приложение, претендентам на вакансию у нанимателя пригодится знание инструментов отладки в браузере: DevTools, Web Console, Device Toolbar. Упростят работу полезные расширения:
- JSON Formatter — форматирование файлов JSON;
- Violentmonkey, Tampermonkey — создание пользовательских скриптов;
- WAVE Evaluation Tool — оценка доступности веб-страниц;
- Responsive Viewer — проверка адаптивности дизайна и другие.
Среди инструментов, которые используют менеджеры по качеству ПО, можно отметить следующие:
- фреймворки для автоматизации — UI Automator, XCUITest, Kaspresso или Selenide/Selenium;
- анализ сетевого трафика — Fiddler, Wireshark, Charles Proxy;
- проверка API — Postman, Insomnia и SoapUI;
- выявление уязвимостей — OWASP ZAP (Zed Attack Proxy), Burp Suite, Metasploit;
- эмуляция устройств — Android studio emulator, Xcode simulator, Genymobile/scrcpy;
- проверка производительности — Apache JMeter, BlazeMeter, Gatling, LoadRunner, LoadNinja, WebLOAD, IBM Performance Tester;
- логирование — Splunk, Graylog, Kibana.
Могут пригодиться и другие инструменты. Например, при создании bug report нужно сделать скриншот ошибки. Помогут «Ножницы» в Windows, утилита на macOS, скриншотеры ShareX, Screenpic, Joxi. Для записи видео с трансляцией экрана и детальным описанием проблемы могут использовать SberJazz, OBS Studio, Movavi Screen Recorder. На крупных проектах внедрены системы непрерывной интеграции и непрерывной поставки (CI/CD). Чтобы работать с ними, инженеру нужны понимание процессов CI/CD, а также опыт настройки с помощью TeamCity, Jenkins, GitLab.
Оптимизировать код, генерировать тесты или документацию помогают AI-ассистенты. К примеру, уже сегодня можно использовать GigaCode.
Кандидату на вакансию зачастую достаточно владеть всего несколькими нужными инструментами: разбираться в каждом требуется редко.
Карьерные возможности QA-инженера
Профессия инженера по тестированию предусматривает возможности для горизонтального и вертикального карьерного роста. В рамках позиции «Менеджер по качеству» могут быть предусмотрены грейды:
- trainee;
- junior;
- middle;
- senior QA.
В рамках компании можно дорасти до тимлида (руководителя отдела качества, lead) или занять вакансию технического директора. Можно и сменить карьерный трек — перейти в бэкенд-разработку, стать техническим писателем, попробовать позицию бизнес-аналитика.
Сколько зарабатывают QA-инженеры
Заработок может отличаться в зависимости от ряда факторов:
- опыт, навыки;
- регион вакансии;
- проект и сложность задач.
По результатам одного из исследований, в первом квартале 2024 года средняя заработная плата по вакансиям в области тестирования составляла 127 000 рублей в месяц. Больше всего наниматели готовы были предложить менеджерам по обеспечению качества: их средняя месячная зарплата была на уровне 240 000 рублей. Меньше всего готовы были предложить на вакансиях специалистов по ручному тестированию — около 100 000 рублей в месяц.
По данным другого сервиса, в 2024 году средняя зарплата находилась на уровне около 117 000 рублей, медианная по вакансиям составляла 70 000.
За рубежом можно найти позиции с уровнем заработной платы до 160 000 долларов в год (или около 13 000 долларов в месяц). Такую зарплату готовы платить в Западной Европе и Северной Америке экспертам уровня Senior с опытом более 10 лет. Мидлы и джуниоры получают меньше.
По данным одного из сервисов, в 2024 году количество вакансий увеличилось: спрос на представителей профессии вырос на 41% по сравнению с 2023. Значит, профессию можно считать перспективной.
Как стать QA-инженером
Способов получить новую профессию достаточно много. Конкретика зависит от того, сколько времени вы готовы выделить на обучение, есть ли опыт в смежных областях).
Основные способы войти в QA (roadmap):
- Обучение самостоятельно. Помогут платные и бесплатные курсы, видеоуроки, книги.
- Онлайн-курсы, например, GitVerse Education — образовательная экосистема для обучения с погружением в реальные IT-проекты. Пользователям доступны практические лаборатории Bootcamp Labs от экспертов в области IT, методические материалы и совместная разработка на SmartClass. Благодаря студенческому пакету Student Pack можно бесплатно получить часть инструментов для обучения и создания первых проектов.
- Обучение у ментора. Персональные курсы от практикующего специалиста — формат взаимодействия один на один. Программа строится индивидуально под ваш запрос: освоить специальность с нуля, подтянуть знания в определенной области, натренировать навык прохождения собеседований и т.д.
На этапе обучения стоит искать вакансии уровня trainee. Стажировка в компании — вариант получить первую практику на реальных проектах и применить теоретические знания.
GitVerse — платформа для создания первых проектов, обучения и вдохновения. Стройте карьеру с нами!