Карьера в IT: должность QA engineer
Представляем пятую статью серии «Карьера в IT». В данном выпуске мы расскажем о QA-инженерах. Профессия этих специалистов молода и всё еще находится на стадии формирования (особенно в Украине). Предыдущие материалы цикла были посвящены должностям Team Lead, Software Architect, Project Manager и CTO.
Quality Assurance engineer — это специалист по обеспечению качества, деятельность которого направлена на улучшение процесса разработки ПО, предотвращение дефектов и выявление ошибок в работе продукта.
По данным ДОУ, среднему украинскому QA-инженеру 26 лет. Он имеет опыт работы от полугода (джуниор) до 5 лет (сеньор) и получает зарплату $600-2700.
Задачи и обязанности
Основная задача QA — обеспечение качества. QA-инженер фокусирует внимание на процессах разработки ПО, улучшает их, предотвращает появление дефектов и проблем (Makes sure you are doing the right things, the right way).
Процесс обеспечения качества состоит из таких этапов:
— проверка требований к продукту;
— оценка рисков;
— планирование идей по улучшению качества продукта;
— планирование тестирования;
— анализ результатов тестирования;
Внутри процесса QA выделяют процесс Quality Control — контроль качества продукта. QC-специалисты анализируют результаты тестирования и отвечают за выявление и уничтожение дефектов в продукте (Makes sure the results of what you have done is what you expected).
Еще более узкая специальность в рамках QA/QC — тестировщик ПО, который проверяет готовый продукт на наличие ошибок (багов) и несоответствие требованиям, и затем документирует найденные дефекты и пути их воспроизведения. Тестирование — это один из этапов обеспечения и контроля качества.
Есть 4 основные роли:
- Test Analyst — занимается статическим тестированием требований: проверяет, насколько они полны, однозначны, непротиворечивы etc;
- Test Designer — создает набор тестов на базе требований, планирует конфигурации, необходимые для тестирования;
- Test Executor — выполняет заранее подготовленные тесты, документирует найденные ошибки и шаги их воспроизведения;
- Test Manager — скорее управленец, чем инженер. Планирует и контролирует работы, связанные с тестированием: оценки сроков, работу над планом-графиком, контроль покрытия требований тестами, постановку задач членам команды, коммуникацию со стейкхолдерами).
«QA должен точно понимать, в какой момент за дело возьмется тестировщик, и успеть подготовить к этому времени план тестирования, тестовую документацию, тестовое окружение».
«Тестировщик знает, как система работает, где она не работает, и где работает не так, как задумано. Он умеет определить, чем вызвана ошибка, или хотя бы знает, где это искать. Чем тестировщик опытней, тем более тяжелой и интересной ему кажется работа».
В Украине различия между должностями QA и тестировщика смазаны, и на практике это одно и то же. Хотя теоретически тестировщик тестирует продукт как результат, а QA работает над обеспечением процессов, которые могут повысить качество ПО в целом.
«Если бы мы говорили о медицине, то QA занимались бы профилактикой, а тестировщики — диагностикой. Но так сложилось, что эти две разные профессии стали синонимами. Даже в тест-планах для иностранных заказчиков тестировщиков записывают как QA Engineers».
В круг обязанностей QA-инженера входит:
— Анализ и уточнение требований с заказчиком или бизнес-аналитиками;
— Планирование процесса тестирования;
— Написание тест-кейсов (сценариев тестирования);
— Тестирование функционала;
— Идентификация проблемных мест, внесение их в трэкинговую систему;
— Обсуждение фиксов с разработчиками;
— Отслеживание жизненного цикла ошибок;
— Ре-тест починенных дефектов;
— Анализ тестирования;
— Оптимизация процесса тестирования;
— Анализ процессов работы в команде;
— Улучшение процессов;
— Ведение тестовой документации.
«Хороший инженер по качеству понимает логику продукта и досконально знает проект: требования, текущее состояние дел. Возможно, ему придется отвечать на уточняющие вопросы девелоперов, которые знают только свой кусок задачи и смежные области».
Типичный рабочий день QA-специалиста включает в себя:
— Написание тест-кейсов, тестирование, документирование ошибок (в зависимости от фазы проекта);
— Проверка баг-трекинговой системы на предмет появления исправленных ошибок;
— Стенд-ап митинги;
— Изучение требований, их уточнение у заказчика;
— Активное общение с разработчиками;
— Оформление тестовой документации.
«Утро — ревизия тасков, что за ночь упало или собралось. День — подготовка и запуск компиляций, анализ результатов автоматических тестов, оформление тикетов и т.п. Вечер — перезапуск компиляций и обновление статусов тасков в баг-трекере».
Достоинства и недостатки
Привлекает QA-инженеров возможность улучшать качество продукта и при этом осваивать разные технологии и вникать в детали продукта.
«Нравится возможность реализовать свой перфекционизм без ущерба для социальной жизни».
Некоторые опрошенные отмечают, что интерес к работе усиливается со временем: сначала не понятно, что делается и для чего, а потом приходит понимание и желание брать на себя сложные задачи.
«Эта профессия требует наличия и постоянного применения аналитических способностей. Она не дает расслабиться и умственно деградировать, а заставляет постоянно изучать новые технологии и области знаний».
Не последнее место занимает и возможность приобщиться к миру высоких технологий и больших зарплат. Некоторые инженеры по качеству пришли к своей профессии, потому что хотели в IT, а порог входа на QA ниже, чем на программиста. Некоторые считает работу QA более интересной и разнообразной, чем работу разработчика.
«Пошел в QA, потому что интересуюсь IT, но не хочу быть программистом. Мне больше нравится разбираться в чем то, искать ошибки, особенно в логике, которые BA и девы могли пропустить».
«Тестировщик должен быть умнее программиста... Ну, по крайней мере, хитрее!».
«Мышление программистов и тестировщиков „заточено“ по-разному. Программист ищет короткий путь решения, достигает цели — и после этого стремится уже к новым задачам. А тестировщик обстоятельно выверяет неучтенные моменты, проверяет разные комбинации».
Главный минус — монотонная составляющая работы, особенно в начале карьеры. Сюда относят прохождение тест-кейсов при ручном тестировании и работу с документацией.
«Недостатками, скорее всего, можно назвать большую часть рутинной работы, которою нужно делать обязательно».
Как стать QA-специалистом и куда идти дальше?
Инженеров по качеству не обучают в университетах (исключение: на нескольких факультетах КПИ читают посвященный тестированию полугодовой курс). Будущие QA приобретают знания на курсах или же самостоятельно.
«Если программисты со школьного возраста или начальных курсов института интересуются какой-то отраслью технологий и начинают развиваться в этом направлении (писать первые боты для игр, взломщики аккаунтов, сайты), то про тестирование я никогда такого не слышал. В стиле — „Вот я с11-го класса тестирую приложения и получаю от этого кайф“. Достаточно иметь аналитические способности, немного внимательности и смекалки. Ну, и, конечно, разбираться в компьютерных технологиях, и прочесть хотя бы пару книг по тестированию».
Чтобы стать QA, нужно понимать цикл разработки ПО, изучить теорию и основные инструменты тестирования, иметь хороший уровень английского.
«Подавляющее большинство вакансий требуют знания English. Часто крупные компании берут джуниоров со знанием английского, отказывая кандидатам с большим опытом, но без знания языка».
Базовые знания теории тестирования — это умение ответить на вопросы:
— что такое тестирование и для чего оно нужно;
— какие бывают виды тестирования;
— что такое баг, и каков его жизненный цикл;
— какая документация используется при тестировании.
«Прочитать несколько книг и много статей, форумов на эту тему. Желательно изучить какой-то язык программирования, а также HTML, SQL, CSS etc. Это позволит качественней делать свою работу и быстрее двигаться по карьерной лестнице».
QA ответственен за улучшение качества процесса разработки, а потому должен обладать некоторыми навыками и других членов команды:
- От девелопера — понимание технических ограничений для реализации того или иного функционала и хотя бы поверхностное понимание кода;
- От бизнес-аналитика — понимание рынка и целевой аудитории;
- От PM’а — понимание целостности всех частей проекта.
Также необходимо умение смотреть на продукт с точки зрения конечного пользователя.
«Профессия QA обязывает понимать все технические аспекты и цели бизнеса, а также уметь правильно общаться с заказчиками/менеджерами/девелоперами. Не бойтесь задавать вопросы, начиная с „А что, если?“. Очень часто это спасает часы, а то и дни разработки для всей команды».
Если говорить о личностных качествах, то необходимо:
— Иметь широкий IT-кругозор и тягу к изучению нового;
— Уметь общаться — качество коммуникации в команде разработки напрямую влияет на качество создаваемого ПО;
— Быть внимательным к деталям, усидчивым, ответственным и настойчивым;
— Обладать аналитическими способностями, уметь моделировать и работать с абстракциями;
— Иметь критический или даже «деструктивный» склад ума, направленный на нахождение ошибок;
— Отличать муху от слона.
«Из навыков — удачливость: если спотыкаетесь на ровном месте, то вам в тестировщики».
Среди перспектив профессионального развития можно выделить 3 направления:
- Изучать новые области и расти как QA: junior QA —> middle QA —> senior QA —> QA team lead —> QA-manager —> Head of QA department.
- Освоить автоматизированное тестирование и двигаться уже по этой ветке (требует более глубоких технических знаний).
- Переквалифицироваться в бизнес-аналитики или программисты.
Получив достаточное количество опыта, можно дорасти до менеджера проекта и затем развиваться как управленец (senior project manager —> CTO). Также сейчас открыто множество курсов по обучению QA, так что основную работу можно совмещать с преподаванием или консультированием.
«А был случай, когда девушка-QA ушла работать в театр актрисой».
P.S. Спасибо за помощь в написании статьи 46 украинским QA- и Test-инженерам, которые поделились с DOU таинствами своей профессии. Приведенные в статье цитаты взяты из их рассказов.