🤺 Кто такой QA-инженер и как начать свой путь в тестировании?

Без тестировщиков не обходится ни одна уважающая себя организация. Поговорим о задачах, которые выполняет QA-инженер, какими навыками должен обладать тестировщик и какие ресурсы помогут освоить эту профессию.

Кто такой QA-инженер?

Тестировщик, он же QA-инженер – это специалист, который отвечает за то, что выпускаемая программа может пережить все, даже если пользователь пытается применить ее не по назначению. В этом материале, подготовленном при поддержке факультета Тестирования GeekBrains, мы попробуем разобраться, чем занимаются QA-инженеры.

Представим ситуацию. Владельцу интернет-магазина нужна программа для отправки чеков на email. Он обращается в стартап, который готов написать такую программу. Через неделю гордые разработчики проводят демонстрацию: покупаем товар, вводим email, получаем чек. Заказчик счастлив, все расходятся, довольные друг другом. Спустя неделю в компанию звонит разъяренный бизнесмен: софт не работает, верните деньги. Что пошло не так?

  1. Разработчик не учел, что email может быть длиннее 30 символов, и пользователь obozhayu_zvezdniye_vojny@r2d2.com остался без чека.
  2. Semen_Igorevich@всемпива.рф – патриот и пользуется русскоязычным доменом, который программа не умеет обрабатывать.
  3. Кнопка «Получить чек» всегда активна. Несколько человек решили поле email не заполнять, а сразу ткнуть по кнопке. Вместо чека они увидели сообщение «Хьюстон, у нас проблемы».

Это исключения, которые никто не предвидел. Но клиент не обязан разбираться в технических деталях, а разработчики написали программу, которая выполняет поставленную задачу. Думать об условиях, при которых софт не будет работать – не их задача. Чтобы избежать подобных накладок, надо нанять тестировщика.

Чем полезен QA-инженер?

Ищет баги

Источник: xkcd

Багами мы называем ошибки в программе. Скажем, мы пытаемся ввести никнейм в поле, но ничего ввести не получается: ни буквы, ни цифры. Умение находить такие ошибки в неожиданных местах – самое ценное качество тестировщика.

Пишет код на Python, Java или JavaScript

Например, нужно зарегистрировать тысячу аккаунтов. Заходить на платформу и регистрировать каждый аккаунт вручную – не вариант. Скучную работу лучше автоматизировать. Чем больше задач автоматизирует тестировщик, тем ценнее он для компании и тем больше времени может выделить на решение творческих задач.

Анализирует требования

Перед тем как приступить к разработке ПО, в специальном документе – требованиях – фиксируются все договоренности о том, как программа должна реагировать на каждое действие пользователя, насколько она должна быть быстрой и безопасной.

Нередко в требованиях встречаются логические несоответствия. Например, в приложении по доставке еды есть меню для вегетарианцев. Приходит задача: добавить в приложение новый продукт – тофу с хештегом #сыр и #веган. Но как быть с тем, что при выборе хештега #сыр вегетарианцы увидят не только тофу, но еще и бри, и рокфор? Тестировщик ищет подобные нестыковки и указывает на них заказчикам, аналитикам и разработчикам.

Участвует в обсуждении задач

Источник: xkcd

У компаний со здоровым жизненным циклом разработки принято сначала обсуждать задачу, а уже потом приступать к ее реализации. На такие встречи приходит вся команда, каждый член высказывает видение задачи. Тестировщик указывает на потенциальные проблемные места:

  • что будет, если я введу email в 1000 символов?
  • что будет, если вместо картинки я загружу pdf?
  • что будет, если я нажму на эту красную кнопку?

Таким образом, еще на этапе обсуждения разработчик понимает, какое поведение продукта нужно запрограммировать.

Пишет тестовую документацию

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

Внедряет новые технологии

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

Общается с заказчиком

Источник: xkcd

Как правило, тестировщик знает все особенности программы и может ответить на любые вопросы, связанные с ее поведением. Не взять такого человека на встречу с клиентом было бы большой ошибкой – тестировщик может дать дельный совет.

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

Составляет метрики

Метрики – это что-то вроде сигнальных маячков для IT-команды. Если количество багов растет, это повод проверить квалификацию разработчика и посмотреть на сам модуль. Может быть, его нужно полностью переписать.

Какими навыками должен обладать тестировщик

Судя по порталу HeadHunter, практически в каждой вакансии требуется:

  • знать теорию тестирования;
  • уметь использовать техники тест-дизайна;
  • работать с базами данных;
  • иметь навыки в программировании;
  • знать фреймворки для автотестов;
  • разбираться в видах архитектуры приложений;
  • уметь настраивать и поддерживать рабочую среду (развернуть базу данных, поднять сервер);
  • уметь работать по Scrum или Kanban;
  • настраивать системы непрерывной интеграции.

Желательно, чтобы у кандидата были на руках сертификаты о прохождении специализированных курсов или сдаче международных экзаменов (ISTQB).

На первый взгляд, этот список выглядит пугающе. На деле все эти знания можно приобрести за год упорной учебы.

Набор скилов для начинающего специалиста будет существенно отличаться от требований, предъявляемых к ведущему тестировщику, как и зарплатная вилка. Junior-специалисту могут предложить заработную плату в 50-80 тыс. руб., Middle претендует на 120-150 тыс., зарплата Senior начинается от 180 тыс.

С чего начать путь QA-инженера

В кругах тестировщиков этот совет прозвучит банально, но начать можно с культовой книги «Тестирование Дот Ком » Романа Савина. Читается легко, отлично описывает специфику работы. Вы поймете, в чем заключается суть тестирования и как выглядят будни тестировщика.

Если интерес к тестированию не угас, пора идти на сайт software-testing.ru. Здесь можно почитать о модных технологиях, пообщаться с коллегами, узнать о предстоящих конференциях.

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

  • Технострим Mail.Ru Group – лекции по тестированию для начинающих. Помогут узнать не только о теории тестирования, но и багтрекинговых системах. А также познакомиться с инструментами, которые помогают тестировщикам.
  • ITDVN – здесь можно изучить особенности тестирования клиент-серверной архитектуры. Узнать, как и чем тестировать API.

Чтобы сделать первые шаги по направлению к базам данных, достаточно установить на телефон приложение «SQL Fundamentals» от Sololearn. Интерфейс симпатичный, примеры понятные. Уровень знаний после прохождения этого приложения достаточен для начинающего специалиста.

Ресурсы интернета, в отличие от времени, безграничны. Если хочется получить максимум полезной информации в сжатые сроки, стоит выбрать курсы. На курсах есть домашние задания и преподаватели, которые контролируют выполнение этих заданий. Преподаватели на IT-курсах – действующие специалисты, а значит, они будут давать только те знания, которые востребованы на рынке. Но самое ценное, что дают курсы – это возможность пройти практику на реальном проекте. Для потенциального работодателя это большой плюс в резюме, так как никакая теория не сравнится с железными нервами человека, который протестировал задачу за час до релиза.

***

Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?

Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:

  • Основы программирования на Python.
  • Профессия Python-разработчик.
  • Алгоритмы и структуры данных.
  • Математика для Data Science.
  • Профессия Data Science.
  • Frontend Basic: принцип работы современного веба.
  • Профессия Фронтенд-разработчик.
  • Обработка естественного языка. Полный курс.

На подходе еще больше 10 курсов для взрослых и детей.

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ