В этой статье мы расскажем, что и в какой последовательности нужно изучить, чтобы стать тестировщиком и найти первую работу.
? Кто такой тестировщик и зачем ему дорожная карта
Про профессию тестировщика и тестирование в целом сейчас можно услышать буквально отовсюду. Даже самый далекий от IT человек хоть раз задумывался о том, чтобы перейти в эту сферу.
Каких только синонимов не придумали для этой профессии: «ловец багов», «контролер качества». Если погуглить, можно найти официальную версию. Например, Википедия дает такое определение:
Тестировщик – специалист, принимающий участие в тестировании компонента или системы. В его обязанность входит поиск вероятных ошибок и сбоев в функционировании объекта тестирования (продукта, программы). Тестировщик моделирует различные ситуации, которые могут возникнуть в процессе использования предмета тестирования, чтобы разработчики смогли исправить обнаруженные ошибки.
Но отражает ли все это полноту картины работы специалиста?
Ответ на этот вопрос зависит от опыта каждого конкретного человека. Но в целом скорее нет, чем да. К этой профессии больше подходит такое определение:
Тестировщик – это такой человек на проекте, который чаще всего становится хранителем знаний. Он должен не только искать ошибки, но и служить помощником в общении аналитиков, разработчиков и других членов команды, знать как бизнес-ценность каждой задачи, так и технические тонкости продукта, а также уметь развернуть и настроить всю систему, помочь службе эксплуатации в обработке инцидентов, а команде разработки в локализации сложных багов.
Стать таким специалистом достаточно сложно, но вполне возможно. Нужно все время получать новые знания, пробовать разные техники и технологии и не бояться ошибаться. Ведь ошибки можно исправлять не только в программах.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
?️ Что такое дорожная карта
Развиться до эксперта в тестировании можно в множестве различных направлений:
- ручное тестирование;
- мобильное тестирование;
- автоматизация UI- и API-тестов;
- нагрузочное тестирование;
- и т. д.
Этот список можно продолжать бесконечно. Для того чтобы не запутаться и составляются подобные «Дорожные карты»: краткий перечень технологий и навыков, который может понадобиться для освоения той или иной специализации. В статье мы не будем полностью расписывать все возможные варианты, а просто рассмотрим начало пути от стадии новичка к уверенному специалисту.
Также для упрощения понимания в статье будет выделено всего два уровня:
- Первый уровень: новичок.
- Второй уровень: уже что-то знает.
Эти уровни очень условны, потому что можно быть ручным тестировщиком, но не уступать в экспертизе и архитектору. Также приобретать навыки можно на разных стадиях работы, например начать учиться нагрузочному тестированию, когда стал экспертом или осваивать для работы снифферы, пока еще являясь новичком. Все зависит от проекта и поставленных перед конкретным человеком задач.
? Уровень 1: новичок
Принято считать, что ручное тестирование – это простой способ «войти в IT», не требующий особых навыков, а иногда даже и умения думать. Может быть теоретически так можно было сказать условные десять-двадцать лет назад, но сейчас точно нет. На собеседованиях обязательно спрашивают не только теорию основ тестирования, но и проверяют навыки работы с нужными инструментами и понимание жизненного цикла продукта в целом.
Рассмотрим первый уровень, который требуется среднестатистическому джуну в среднестатистической компании:
Фундаментальные навыки тестирования
К ним относятся общие знания по тестированию. Если на собеседовании спрашивают о том, чем отличаются методы черного и белого ящика или что такое таблица переходов, значит работодатель хочет понять уровень общих знаний. Их можно получить, прочитав любую известную книгу по теории тестирования. Конечно, знание теории мало дает без практики, но это уже больше, чем ничего. Рассмотрим подробнее каждый подпункт.
Знание уровней тестирования
В любой предметной области люди привыкли создавать методики. Тестирование не исключение. На первых порах это помогает быстрее учиться, а в дальнейшей работе существенно экономит время. На данный момент выделяют следующие методики тестирования:
Обычно эти методы применяются именно в таком порядке.
Знание стратегий тестирования
Для начала определим, чем стратегии отличаются от методик. Стратегия тестирования – это план организации процесса, в данном случае тестирования, в условиях ограниченных ресурсов. То есть, как будет проходить процесс тестирования на протяжении всего проекта, какую документацию нужно писать, как расставлять задачи по приоритетам. Конечно, никто не будет просить новичка составить стратегию, если он не единственный тестировщик в новом проекте. Но понимать ее должен каждый человек в команде. Единственный минус стратегий – на бумаге они выглядят гораздо привлекательнее, чем в жизни.
Знание функционального/нефункционального тестирования
Еще одно полезное, почти сакральное знание – это отличия между функциональным и нефункциональным тестированием. Функциональное тестирование проверяет функции, компоненты и взаимодействие системы со сторонней системой, а нефункциональное нужно для определения характеристик системы, которые могут быть измерены различными величинами (производительность) или оценены на глаз (удобство использования). Естественно, в первую очередь проводится функциональное тестирование, после чего идет нефункциональное.
Умение писать тестовую документацию
Никакой продукт не может обойтись без документации, хотя бы в минимальном объеме. Например, оформленный баг, по которому написали баг-репорт, уже является примером тестовой документации. В классическом случае в документацию по тестированию входит:
- тест-план;
- чеклист;
- тест-кейс;
- сценарий использования;
- баг-репорт.
В любом проекте в той или иной степени пишется вся эта документация. Новичку важно знать знать, зачем она нужна и правила ее оформления.
Навык приоритизации багов
Это один из самых важных и недооцененных навыков тестировщика. После нахождения любого бага о нем нужно сообщить посредством написания баг-репорта. Но перед этим нужно определить его приоритет. Если баг имеет высокий приоритет и оказывает серьезное влияние на сборку, то разработчик старается исправить его в первую очередь, а если низкий, то баг может быть отправлен в бэклог, так и не дождавшись своего исправления.
А теперь рассмотрим ситуацию, в которой тестировщик ошибся, и багу с низким приоритетом присвоил высокий: в этом случае на исправление какой-то незначительной мелочи уйдет время, которое могло бы пригодиться для написания основной функциональности. Ошибка в обратную сторону выглядит еще страшнее: в продуктовую среду (к пользователям) может попасть критичный баг, который блокирует работу всей системы. Поэтому, выставляя приоритет, нужно тщательно подумать. К сожалению, этому навыку можно научиться, только оценивая баги и получая по этой оценке обратную связь.
Базы Данных
Времена, когда данные хранились в текстовом файле на сервере, прошли. Сейчас чаще используют реляционные или нереляционные базы данных. На собеседовании часто могут задать вопрос: «Как проверить, что предмета по поисковому запросу реально не существует, а не то что поиск отработал неверно?» Если кандидат вспоминает о базах данных, следующим шагом рекрутер проверяет, какие простые запросы он может составить. Для их составления могут понадобиться определенные навыки.
Операторы для манипуляции данными
За этими словами скрываются самые часто используемые команды SELECT
, INSERT
, UPDATE
, DELETE
. Со знанием этих команд первое время можно прекрасно справляться с обычными задачами на создание, обновление, удаление или просмотр данных из базы. Изучая в дальнейшем JOIN
, подзапросы и группировку с сортировкой можно значительно облегчить себе жизнь.
Логические операторы
Без логических операторов сложно сделать точную выборку, особенно когда строк в таблице больше ста. К логическим операторам относятся: AND
, OR
, BETWEEN
, EXISTS
, LIKE
, NOT
и т. д. Без этих и арифметических операторов можно просматривать результаты, выданные SELECT
, часами. Согласитесь, не самое рациональное использование времени.
Арифметические операторы
С этими операторами все знакомы еще со школы, только тогда мы использовали их не для таблиц базы данных, а на уроках математики. Они пригодятся для проверки, например, отчетов. Да и в целом гораздо удобнее искать строки в таблице, когда можешь уменьшить их количество знаками больше, меньше или даже равно.
Знание видов связей таблиц (один ко многим, один к одному и т. д.)
Делая выборку из нескольких таблиц, лучше понимаешь, какую связь они имеют. Всего различают три вида:
- один к одному;
- один ко многим;
- многие ко многим.
Если рассмотреть на простых примерах, то:
- один к одному – это как у одного человека может быть один действующий паспорт;
- один ко многим – у любого человека может быть множество документов (паспорт, права, мед книжка);
- и многие ко многим – когда в один документ может быть вписано много людей и у них может быть множество таких документов (такие связи обычно делаются через дополнительную таблицу).
Эти связи обычно моделируются архитектором и аналитиками. Увидеть их можно на схеме базы данных или уточнить у человека, который проектировал данную часть.
Конечно же, это малый кусочек знания о БД, в дальнейшем, читая и изучая эту тему, можно узнать гораздо больше полезного о работе тестировщика.
Основы REST API
При первых шагах в тестировании – неважно, обучение или работа – тестировщик с большой вероятностью столкнется с REST API. Сейчас этот архитектурный стиль применяется везде, где есть необходимость передачи данных с сервера пользователю веб-приложения или сайта. Поэтому знание основ новичком может значительно облегчить жизнь и понимание работы всей команды.
Протоколы взаимодействия HTTP/HTTPS
В основе REST API используется протокол HTTP (HyperText Transfer Protocol) или протокол передачи гипертекста. В дальнейшем, когда в интернете понятие безопасности стало более значимым, появился и HTTPS, где последняя буква расшифровывается как «безопасный». Т. е. если суметь «перехватить» сообщение, то, понимая данный протокол, можно понять, что произошло между сервером и приложением.
Знание кодов ответов REST API
Первое и самое простое, с чего можно начать изучение, – это коды ответов. Всего выделяется пять основных групп:
- 1xx информационные;
- 2xx успешные;
- 3xx перенаправление;
- 4xx ошибка на клиентской части;
- 5xx ошибка на серверной части.
Если хорошо разбираться в этих кодах, можно оформить качественный баг-репорт и назначить его на правильного разработчика.
Формат обмена сообщениями.
Кроме кода сообщения нужно уметь понимать, что же в этом самом сообщении передавалось. Сейчас есть множество форматов, но основные, которые используются это:
Зная структуры этих форматов, можно понять ответное сообщение с сервера.
Использование основных инструментов
Выполняя каждый день свою работу, любой специалист по тестированию подбирает для себя удобный набор инструментов. Иногда эти инструменты меняются от проекта к проекту, но можно выделить постоянный список:
Багтрекеры
Багтрекеры – это программы для отслеживания ошибок и их жизненного цикла. Конечно, ими пользуются не только тестировщики, но и все участники проекта. Представить работу команды без них сейчас невозможно.
Программы для скриншотов
Не обязательный, но удобный инструмент. Во многих ОС есть встроенные утилиты, но когда быстро нужно добавить рамку, стрелочку или подпись, то специальный инструмент способен сильно упростить жизнь. Для некоторых багов может не хватать скриншотов, поэтому всегда нужно иметь под рукой программу для записи экрана.
Программы генерации данных
В тестировании, как и везде, присутствуют скучные и монотонные задачи. Например, сгенерировать множество карточек для поиска или построения отчета. Чтобы не потратить на это весь день, были придуманы утилиты и сайты для генерации данных. Самые известные из них – это Mockaroo.com и Bugmagnet. Несомненно есть и другие.
Инструменты для тестирования удобства использования
Часто тестирование удобства использования программы отодвигается на последнее место, потому что на первом месте находится проверка функциональной части. Для упрощения такого тестирования тоже придумали инструменты:
- User Zoom;
- Reflector.
Использование этих инструментов – не обязательная практика и зависит от выбора тестировщика.
Инструменты для тестирования REST API
Про REST API было рассказано выше, поэтому мы не будем детально обсуждать, зачем нужны инструменты для тестирования этого архитектурного стиля. Самыми популярными из них являются Postman и SoapUI. У Postman очень много удобных функций:
- написание простых тестов на языке JS;
- моки;
- возможность проксирования;
- удобная система переменных;
- мониторинг;
- удобная рандомизация;
- хорошая документация и обучающие материалы;
- и т. д.
Хотя использования curl (служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL) никто не отменял, особенно когда приходиться работать на сервере без графического интерфейса.
Командная строка
Самый любимый инструмент многих специалистов. Зная основные команды, можно значительно упростить себе жизнь. Приведем пример: сравнение документов и списков. Просмотр глазами может занять пару часов, а diff
и немного python решат проблему за 15 минут. И перечислять такие ситуации можно бесконечно.
Git
Git – это система для управления версиями. Считается, что он нужен, только если специались начинает работать с кодом и писать автотесты. Но на самом деле он может понадобиться раньше. Особенно если тестировщик хочет развиться из ручного тестировщика в автоматизатора, его попросят исправлять простые падения тестов или скачивать и анализировать отчеты, а этого не сделать без знания Git.
Soft skills
В последнее время Soft skills ценятся организациями даже больше, чем Hard skills. Сложно сказать, насколько это верное решение. Часто технарь скажет, что это излишне, но без их минимального набора не обойтись для успешной работы в команде. А все проекты уже давно не пишутся в одиночку.
Внимательность
Тут все очевидно. Без умения долго, скрупулезно и внимательно просматривать программы много багов не найти.
Умение принимать решение под давлением
Обычно тестирование завершает рабочий цикл (спринт) в большинстве продуктовых команд. Как известно, чем ближе конец, тем сильнее горят сроки. И вот тут приходится принимать решение о выводе продукта в продуктивную среду. В этот момент очень важно не растеряться и оперативно завершить работу.
Умение отстоять свою точку зрения
Это умение является продолжением предыдущего, только тут добавляются коммуникативные навыки, так как, чтобы принимать решения нужно суметь донести их до других.
Ответственность
Пропущенный в продакшен баг не является концом света. Но привычка регулярно забивать на проверку и регрессионное тестирование противоречит самим целям тестирования.
Аналитический склад ума
Спорный момент, является ли этот признак человека софт-скилом или нет. Но обладать им точно нужно: он пригодится для написания тест-кейсов и для поиска причин краша системы.
С первым уровнем мы закончили. Выше перечислен примерный набор того, что может понадобиться в первые месяцы работы и то, что могут спросить на собеседовании на тестировщика-джуна, как ручного, так и автоматизатора.
?? Уровень 2: уже что-то знает
Выучив основы, можно начинать развиваться в понравившемся направлении. Этих направлений очень много, поэтому кратко перечислим каждое из них. Некоторые навыки будут рассмотрены чуть более подробно.
Мобильное тестирование
Тестирование приложений на мобильных и планшетах. Для погружения в этот мир будет полезно узнать, что такое ферма устройств, эмулятор приложения и локализация с глобализацией.
Нагрузочное тестирование
Отдельный вид тестирования, который необходим для проверки работоспособности при выходе в продакшен, т. е. помогает понять, сколько пользователей одновременно смогут работать на вашем сайте или в приложении, найти узкие места и выявить пиковую нагрузку.
Основы языка программирования
Для дальнейшего развития желательно знания языка программирования. Не обязательно для того, чтобы писать автотесты, а просто для лучшего понимания работы программ или возможности написать простой вспомогательный скрипт. Язык можно выбрать на свой вкус. Сейчас среди тестировщиков особенно распространены:
- Python;
- Java;
- Go;
- JavaScript.
Базы Данных. Следующий уровень
Остановившись на первом уровне развития в БД, можно сильно просесть по hard skills, да и просто многое упустить. Поэтому рассмотрим, что еще можно выучить:
Транзакции
Транзакциями является группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Т. е. в одну транзакцию можно поместить сразу несколько действий, и тогда, если в одном из них будет ошибка, то все предыдущие шаги не будут выполнены.
Функции и процедуры
Как и в любом языке, в SQL есть функции и процедуры и их заведомая подготовка для работы с БД может значительно упростить жизнь. В качестве примера возьмем хранимую процедуру для удаления пользователей. Она нужно потому, что данные пользователей хранятся в множестве таблиц.
Оконные функции
Оконная функция – это функция, которая работает с выделенным набором строк (окном, партицией) и выполняет вычисление для этого набора строк в отдельном столбце. Используются они редко, но иногда без них не обойтись.
Знание специальных таблиц
Сами базы данных являются сложными программами, и внутри них хранится множество полезной информации о работе. Для того чтобы в ней разобраться нужно читать документацию и знать, что и где искать и какими возможностями обладает та или иная база.
Основы проектирования
На более высоких уровнях тестирования нужно знать основы проектирования, чтобы понимать, где могут быть слабые места, суметь заранее предположить места ошибок и рассчитать узкие горлышки для нагрузочного тестирования.
Естественно, это не все, что можно изучить в базах данных. Но для уверенной работы этого должно хватить.
UI-тесты
Вид автоматизированного тестирования, при котором имитируются действия пользователя в браузере. То есть при запуске этих тестов можно прямо увидеть, как открывается браузер, нажимаются кнопки, заполняются поля. Эффектный, но тяжело поддерживаемый и медленный вид автотестов.
REST-тесты
Автотесты, которые имитируют обращение браузера к серверу или сторонней системы к нему же. Этот вид тестов быстрее, чем UI-тесты, но выглядит не столь красиво и покрывает только backend-часть, не затрагивая frontend. Писать их можно как самостоятельно, так и используя инструменты, такие как Postman.
Дебаггинг
Дебаггингом называется поиск и дальнейшие исправления ошибок в коде. Навык, скорее относящийся к разработке, но при сложных плавающих багах очень нужный любому тестировщику.
CI/CD
Второй навык из смежной области, который может пригодиться. Под CI/CD понимается обеспечение последовательного и автоматизированного способа сборки, упаковки и тестирования приложений. Особенно здесь интересна автоматизация запуска автотестов на продукт.
Soft skills
Чем выше уровень, тем больше ответственности и обязанностей возлагается на человека. Проблемы становятся все труднее, появляются новые задачи, такие как: обучение новичков, управление командой и т. д. Для этого требуется дальнейшее развитие soft skills, в которые входит:
Умение обучать
Обучать кого-то чему-то – очень кропотливый труд, требующий больших затрат времени и сил. Даже если человек не умеет объяснять, этому можно научиться. Главное – не опускать руки.
Умение распределять работу в команде
Рано или поздно наступает момент, когда у тестировщика появляются ученики, которых нужно обучить, мотивировать на продуктивную работу и передать им часть задач. Для этого нужно быть готовым делегировать и иметь навык распределения работы, чтобы первые задачи новичка не оказались ни слишком легкими, ни слишком тяжелыми.
Умение оценить проект целиком
Если на первом уровне был навык оценки задач, то на втором нужно уметь целиком оценить проект, примерно написать план работ, выбрать стратегию тестирования и распределить объем работы по времени.
Источник статьи https://proglib.io/.
Пингбэк: Большой учебник по тестированию