Какие навыки нужны QA-инженеру и как им стать

Расскажем, как начать профессиональный путь в тестировании продукта

В чем разница между QA-инженером и тестировщиком

В строгом значении тестировщик проверяет продукт на соответствие требованиям. QA-инженер имеет более широкий круг обязанностей — он обеспечивает качество IT-продукта на всех этапах разработки.

Но в русской культуре айти, когда говорят о QA-инженерах, зачастуют подразумевают только тестирование. Именно поэтому два названия смежных профессий используются как синонимы.

Чем занимается QA-инженер

Задача QA-инженера — проверять программы и сервисы на ошибки. Он следит за качеством: реальная работа приложения должна соответствовать ожиданиям.

Просто потыкать кнопки и посмотреть, что получается, недостаточно (хотя тыкать всё же придётся). QA-инженер выполняет следующие задачи:

  • Составляет документацию по тестированию.

  • Пишет тест-кейсы — инструкции, что сделать, чтобы проверить работу программы.

  • Составляет тестовую модель — порядок проверки IT-продукта.

  • Пишет баг-репорты по результатам тестирования, при помощи шаблонов описывает проблемы с приложением.

  • Пишет автотесты. В больших сервисах сложно проверить всё вручную — и часть работы доверяют программе.

  • Выстраивает процессы тестирования, разработки, релизов и поддержки продукта на всех этапах жизненного цикла ПО.

Начинающие тестировщики, как правило, выполняют тестирование по инструкции для всех систем. Опытные специалисты часто работают в узкой области. Например, security-тестировщики проверяют безопасность программы; performance — смотрят, как сервис ведёт себя при возрастающей нагрузке; usability — проверяют, насколько с продуктом удобно работать. Об этапах работы тестировщика мы писали в другом материале.

Работа тестировщика интересна своим разнообразием: можно одновременно быть аналитиком, менеджером, разработчиком, а в некоторых случаях — детективом.

Тестировщик первым проверяет новые возможности программы. Иногда он влияет на реализацию и вносит предложения по изменению. Кто-то может назвать тестирование скучным. Но, думаю, степень интереса к профессии зависит от того, как человек сам относится к работе и задачам.
Даниил Скляров, инженер по тестированию в отделе разработки Кинопоиска

Что должен уметь QA-инженер

Чтобы проверять работу программы по тест-кейсам, написанным руководителем, программирование не нужно. Но если есть желание расти в профессии, важно понимать, как устроен процесс разработки и что представляют собой языки программирования. Если тестировщик хочет из мануальщика, то есть проверяющего всё вручную, стать автотестером, ему придётся учиться писать код. Правда, сейчас можно писать автотесты, не зная языка программирования, если использовать подход BDD.

Вот языки и фреймворки, которые будут полезны всем тестировщикам: Python, SQL, React Native, Kotlin Native. При тестировании веб-приложений поможет знание JS, а в связке с ним — HTML и CSS. Android-тестировщикам пригодится Java и Kotlin, а тестировщикам iOS-приложений — swiftUI и Objective-C.

Android

Какими ещё хард-скиллами должен обладать тестировщик:

  1. Разбираться в методологии программирования — что такое Agile и Scrum, каков жизненный цикл ПО и что должен делать тестировщик на каждом этапе. Важно изучить систему контроля версий Git. Без этих основ не получится вписаться в команду разработки продукта.

  2. Знать теорию тестирования. Тестировщику нужно разбираться в классификации тестирования, знать инструменты, уметь создавать тест-кейсы. Понадобятся базовые термины: смоки, регресс, санитарное тестирование, юнит, интеграция, баг-репорт и так далее. Это обязательно спросят на собеседовании.

  3. Уметь пользоваться базами данных и знать SQL. Даже начинающий тестировщик должен уметь делать выборки из базы для проверки записей, а дальше — работать с этими данными: сортировать, группировать. Замечательно, если он знает JOIN-синтаксис и умеет его применять.

  4. Владеть инструментами тестирования. Например, для тестирования веб-приложений подходит Chrome DevTools, для API — Postman. Чтобы вести тестовую документацию, тестировщики используют Allure TestOps, Testlink, Testrail. Баг-трекинговые инструменты — Jira, Trello, Redmine и другие. Независимо от инструмента важно уметь отправлять запросы, структурировать их, читать ответы.

  5. Знать основы клиент-серверного взаимодействия. Тестировщик должен быть знаком с сетевыми протоколами, с помощью которых клиент, сервер и база данных взаимодействуют между собой. Обязательный минимум — изучить IP, стек TCP/IP, HTTP/HTTPS, UDP и DNS. Тестировщику важно понимать, как локализовать элементы страницы и работать с запросами.

  6. Уметь работать в командной строке Linux и Windows. Изучите список самых популярных команд. Его можно найти для любой консоли, в которой вы будете работать. Важно знать, как подключаться к тестовым стендам с помощью командной строки через ssh. Кстати, тестировщики очень часто работают в Linux, потому что на этой операционной системе работают многие серверы, базы данных и веб-сервисы. Так что важно хорошо изучить эту ОС.

На мой взгляд, важные личные качества для тестировщика — любознательность и желание разбираться в сложных вещах, внимание к деталям, ответственность, умение работать в команде, тайм-менеджмент, коммуникабельность. Ещё — терпение и настойчивость, способность к аналитике. Большим плюсом будет знание английского языка: часто документацию и баг-репорты просят составлять именно на нём.

Ещё важно умение искать информацию в интернете. А сейчас становятся востребованными навыки работы с ИИ.
Даниил Скляров, инженер по тестированию в отделе разработки Кинопоиска

Полезные материалы

У тестировщиков отличные перспективы для персонального роста. Можно, например, стать тимлидом команды тестирования, специалистом по автоматизации тестирования или по нагрузочному тестированию. Ещё можно стать техническим менеджером, внешним или внутренним консультантом по тестированию, выступать на конференциях. Можно даже стать директором по качеству.

Для роста надо быть открытым к вызовам, развиваться и искать возможности. Рынок постоянно меняется — надо уметь брать на себя ответственность и решать всё более сложные задачи.
Даниил Скляров, инженер по тестированию в отделе разработки Кинопоиска

Краткий пересказ от YandexGPT