Небольшой обзор вариантов развития твоей карьеры в сфере контроля и обеспечения качества.
С чего начать?
Итак, предположим, что вы планируете карьеру в IT и впервые услышали о QA. Теперь вы хотите разобраться, что же это такое.
QA — это процесс обеспечения качества программного продукта на всех этапах разработки, но на просторах СНГ часто этот термин применяется относительно тестирования ПО.
Что же потребуется начинающему специалисту чтобы ступить на путь борца за качество? Сейчас разберемся.
Для большинства компаний и проектов будет достаточно:
- Представление о процессе разработки ПО (плюсом будет техническое образование, близкое к IT-сфере, но как показывает опыт многих коллег- это не обязательное условие);
- Знание основных принципов работы программных продуктов (мобильных или standalone приложений, сайтов в зависимости от профиля компании);
- Знакомство с теорией тестирования, базовое представление о тест-дизайне, какая бывает тестовая документация и откуда она берется (это очень легко гуглится при желании);
- Способность быстро разобраться с TMS-системой;
habr.com/ru/post/461205 - Желание учиться новому, быстро разбираться в деталях, как работает ПО сейчас и как оно должно работать.
Если пункты выше выполнимы, то мы можем отправляться в путь.
Хорошо, а куда мы идем?
Дальше поговорим о том, в каких направлениях прокачиваться и каких результатов можно достичь, начав свой путь в IT с обеспечения качества.
Роли в QA
Можно выбрать направление, не меняя сферу деятельности и развиваться, как более узкий специалист. Или объединить в себе несколько ролей. Нужно осваивать стратегии и типы тестирования в разных методологиях разработки, учиться пользоваться инструментами управления тестированием (TestLink, TestRail, Test IT и т.д.) и системами баг-трекинга (Jira, Redmine) – эти знания и навыки являются фундаментальными для всех QA инженеров. Самыми востребованными вариантами специализации являются автоматизированное и нагрузочное тестирования.
Ручное тестирование
Когда ресурсов на разработку автотестов нужно потратить больше, чем на сам продукт — проще/дешевле/быстрее проверить новый функционал руками.
Многие считают, что ручное тестирование это что-то простое и с этим может справиться каждый. На самом деле ручное тестирование требует очень много навыков. Ручные тестировщики решают те задачи, с которыми другие справиться не в силах.
Для ручного тестирования потребуются:
- Высокие аналитические навыки. От вас будут ожидать не только указания на ошибки, но и предложений как сделать лучше. Ведь только вручную можно проверить такие вещи как, например, удобство использования;
- Креативность. В современных реалиях разработки требования не всегда полные и тестировщики сталкиваются с тем, что им нужно продумывать множество вариантов использования систем, которые они тестируют;
- Ведение тестовой документации. Хороший тестировщик всегда имеет четкий план действий и активностей по тестированию, основанный на требованиях и сроках;
- Знание и опыт работы с системой управления тестированием;
- Владение инструментами работы с HTTP-запросами (Postman, curl);
- Знания баз данных, умение писать SQL-запросы.
И многое другое что зависит от отрасли и сферы, для которой ведется разработка. Это может быть работа с узкоспециализированными программами и железом.
Автоматизация тестирования
Автоматизированные тесты помогают быстрее выпускать новые функциональности, быстрее проводить тестирование, уменьшить количество ручных тестов.
Так что же может понадобиться чтобы начать автоматизировать тесты?
- Нужно будет писать код, например, на Java или Python;
- Овладеть инструментами автоматизации (Selenium, Katalon);
- Базовые знания HTML, CSS, XPath;
- Умение работать с системами контроля версий и репозиториями кода;
- Навыки работы с API;
- Знания систем CI/CD (Jenkins, TeamCity и т.д.).
Если думаете, что уже готовы, то можете взять самый простой тестовый сценарий, который повторяли тысячу раз и попробовать его автоматизировать – вам наверняка понравится
Нагрузочное тестирование
Смысл нагрузочного тестирования в измерении качества системы, которая работает при определенной нагрузке. Выполнив тестирование производительности, можно определить масштабируемость, отказоустойчивость и стабильность программного продукта.
В работу специалистов этого профиля входит сбор данных о производительности приложения, времени отклика и локализацией ошибок при нагрузке, превышающей нормальные сценарии использования системы.
Самые важные навыки для тех, кто хочет заниматься нагрузочным тестированием:
- Знание архитектуры тестируемой системы. Погружение в тестирование производительности потребует от вас изучения языков разработки и фреймворков которые используются при создании продукта;
- Умение разработать и анализировать профили нагрузки;
- Опять же программирование. Для скриптов нагрузочного тестирования могут пригодиться такие языки как Java, Python, JavaScript, C++, C#, C# и специальные фреймворки, например, Gatling;
- Знание аппаратной и сетевой архитектуры. Часто причиной снижения производительности приложения может стать железо, нужно ориентироваться в таких понятиях как пропускная способность памяти, процессора, сети и уметь анализировать данные о них.
Тест-аналитик
Тест-аналитик- человек, работа которого заключается в создании артефактов тестирования на основании требований. В маленьких командах эти задачи решает рядовой тестировщик, в крупных же функции тестирования и тест-дизайна, зачастую, четко разделены между людьми.
Идеальная цепь взаимодействий выглядела бы так:
- аналитик расставляет приоритеты тестирования и составляет логическую карту проекта;
- тест-аналитик на основании этой информации приступает к разработке тестов;
- тестировщик тестирует по описанным тест-кейсам (да, вот такое предложение).
Альтернативные пути развития карьеры. Есть ли жизнь после QA?
Системный аналитик
Всю свою карьеру ты боролся с некачественно описанными требованиями? У тебя есть шанс все исправить. Ты будешь общаться с пользователями системы, собирать и анализировать требования, а затем фиксировать их в документации. Плотное взаимодействие с разработчиками и опыт инженера по обеспечению качества помогут в том чтобы требования были полными и проработанными. Помимо этого, возможно участие во внедрении, обучение пользователей и сбор обратной связи об эффективности системы.
Бизнес-аналитик
Основное преимущество, которое тестировщики имеют перед разработчиками, заключается в том, что они получают знания в предметной области, в области бизнеса. Частый вариант продвижения тестировщика по карьерному пути – переход в бизнес аналитики. Как бизнес-аналитик вы будете участвовать в формировании требований к продукту со стороны бизнеса.
Менеджер
Допустим, с людьми вам общаться легче, чем с базами данных — тогда можно примерить на себя роль менеджера. Специалисты по обеспечению качества имеют глубокое понимание того, как сделать программное обеспечение лучше. Если готов принимать сложные решения и нести за них полную ответственность — проблем не будет. Здесь тоже есть свое ветвление, например: проектный менеджер, ресурсный менеджер, тест-менеджер и т.д. Всё зависит от процессов, построенных в компании.
Разработчик
Часто тестировщики уходят с головой в разработку, т.к. находясь бок о бок с программистами, познать их ремесло гораздо проще, чем получать специальное образование. Причем, вам расскажут, подскажут и помогут. Это неплохой способ начать карьеру, познакомиться с процессом разработки изнутри. Особенно, если вы уже знаете языки программирования и занимались автоматизацией тестирования. Главное – желание.
Если что упустил — рад обсудить в комментариях!
Автор: qa_meister