Как стать тестировщиком с нуля: дорожная карта 2023
Расскажем, что и в какой последовательности нужно изучить, чтобы стать тестировщиком и найти первую работу. Про профессию тестировщика и тестирование в целом сейчас можно услышать из каждого утюга. Даже самый далекий от IT человек хоть раз задумывался о том, чтобы перейти на эту стезю. Каких только синонимов не придумали для нас: «ловец багов», «контролер качества». Нагуглить официальную версию тоже весьма просто. Например, Википедия дает такое определение: Тестировщик – специалист, принимающий участие в тестировании компонента или системы. В его обязанность входит поиск вероятных ошибок и сбоев в функционировании объекта тестирования (продукта, программы). Тестировщик моделирует различные ситуации, которые могут возникнуть в процессе использования предмета тестирования, чтобы разработчики смогли исправить обнаруженные ошибки. Но отражает ли все это полноту картины работы специалиста? Ответ на этот вопрос зависит от опыта каждого конкретного человека. Для меня скорее нет, чем да. Если бы на собеседовании меня попросили дать такое определение своими словами, то я бы ответила следующее: Тестировщик – это такой человек на проекте, который чаще всего становится хранителем знаний, он должен не только искать ошибки, но и служить помощником в общении аналитиков, разработчиков и других членов команды, знать как бизнес-ценность каждой задачи, так и технические тонкости продукта, а также уметь развернуть и настроить всю систему, помочь службе эксплуатации в обработке инцидентов, а команде разработки в локализации сложных багов. Стать таким специалистом достаточно сложно, но вполне возможно. Нужно все время учиться новому, пробовать разные техники и технологии и не бояться ошибаться. Ведь ошибки можно исправлять не только в программах. Развиться до эксперта в тестировании можно в куче направлений: Список можно продолжать бесконечно. Для того чтобы не запутаться и составляются «Дорожные карты»: краткий перечень технологий и навыков, который может понадобиться для освоения той или иной специализации. В статье я не буду полностью расписывать все возможные варианты, потому что это займет очень много времени, которое не всегда есть как у читателя, так и у автора. А просто покажу начало движения от новичка к специалисту. Особо крупные направления, которые, безусловно, могут быть интересны, но сейчас не войдут в статью, я обозначу словами «Здесь водятся львы», как в древности люди отмечали на картах еще неисследованные территории. Также для упрощения понимания будет выделено всего два уровня: Эти уровни очень условны, потому что можно быть ручным тестировщиком и не уступать в экспертизе и архитектору. Также приобретать навыки можно на разных стадиях работы, например начать учиться нагрузочному тестированию, когда стал экспертом или осваивать для работы снифферы WireShark, являясь новичком. Все зависит от проекта и поставленных перед человеком задач. Дорожная карта тестировщика. Уровень «Новичок» Принято считать, что ручное тестирование – это простой способ «войти в IT», не требующий особых навыков, а иногда даже и умения думать. Не знаю, можно ли было так сказать условные десять-двадцать лет назад, но сейчас точно нет. На собеседованиях обязательно спрашивают не только теорию основ тестирования, но и умеете ли вы работать с нужными инструментами и понимаете ли жизненный цикл продукта в целом. Поэтому давайте рассмотрим первый уровень, который требуется среднестатистическому джуну в среднестатистической компании: Фундаментальные навыки тестирования К ним относятся общие знания по тестированию. То есть, если на собеседовании спрашивают о том, чем отличаются методы черного и белого ящика или что такое таблица переходов, то значит работодатель хочет понять уровень общих знаний, которые можно получить прочитав, например, книгу «Тестирование Дот Ком» Романа Савина. Конечно, знание теории мало дает без практики, но это уже что-то. Но рассмотрим подробнее каждый подпункт. В любой предметной области люди привыкли создавать методики. Тестирование не исключение. На первых порах это помогает быстрее учиться, а в дальнейшей работе экономит время. На данный момент выделяют следующие методики тестирования: Обычно эти методы применяются в таком порядке, но можно и по отдельности. Для начала определим, чем стратегии отличаются от методик. Стратегия – это план организации процесса, в данном случае тестирования, в условиях ограниченных ресурсов. То есть, как мы будем тестировать на протяжении всего проекта, какую документацию писать, как расставлять задачи по приоритетам. Конечно, никто не будет просить новичка составить стратегию, если он не единственный тестировщик в новом проекте. Но понимать ее должен каждый человек в команде. Единственный минус стратегий – на бумаге они выглядят гораздо привлекательнее, чем в жизни, но это уже лирика. Еще одно полезное, почти сакральное знание – это чем отличаются функциональное и нефункциональное тестирования. Функциональное тестирование проверяет функции, компоненты и взаимодействие системы со сторонней системой, а нефункциональное – нужно для определения характеристик системы, которые могут быть измерены различными величинами (производительность) или оценены на глаз (удобство использования). Естественно, в первую очередь проводится функциональное тестирование, а следом идет нефункциональное. Никакой продукт не может обойтись без документации, хотя бы в минимальном объеме. Например, оформленный баг, по которому написали баг-репорт, уже является тестовой документацией. В классическом случае в документацию по тестированию входит: В любом проекте в той или иной степени пишется вся эта документация. От новичка требуется знать, зачем она нужна и правила ее оформления. На мой взгляд, это один из самых важных и недооцененных навыков тестировщика. После нахождения любого бага о нем нужно сообщить или посредством написания баг-репорта или просто в чат, а потом оформить его. Но перед этим нужно определить его приоритет. Если баг имеет высокий приоритет и сильно влияет на сборку, то разработчик обычно все бросает и идет его чинить, а если низкий, то баг может даже пропасть в беклоге, так и не дождавшись своего исправления. А теперь смоделируем ситуацию, когда тестировщик ошибся и багу с низким приоритетом дал высокий: в таком случае на исправление какой-то мелочи уйдет время, которое могло бы пригодиться для написания основной функциональности. Ошибка в обратную сторону выглядит еще страшнее: в продуктовую среду (к пользователям) может попасть критичный баг, который крашит систему. Поэтому, выставляя приоритет, нужно десять раз подумать. К сожалению, этому навыку можно научиться, только оценивая баги и получая по этой оценке обратную связь. На этом с перечислением фундаментальных навыков тестирования – все. Уверена, что этот список можно пополнить другими пунктами, но а пока я пойду дальше. Базы Данных Время, когда данные хранились в текстовом файле на сервере прошли. Сейчас чаще используют реляционные или нереляционные базы данных. На собеседовании я задаю вопрос: «Как проверить, что предмета по поисковому запросу реально не существует, а не то что поиск отработал неверно?» Если кандидат вспоминает о базах данных, то следующим шагом я проверяю, какие простые запросы он может составить. Для их составления могут понадобиться следующие навыки. За этими словами скрываются самые часто используемые команды Без логических операторов сложно сделать точную выборку, особенно когда строк в таблице больше ста. К логическим операторам относятся: С этими операторами все знакомы еще со школы, только использовали их не для таблиц базы данных, а на уроках математики. Эти операторы пригодятся для проверки, например, отчетов. Да и в целом гораздо удобнее искать строки в таблице, когда можешь уменьшить их количество знаками больше, меньше или даже равно. Этот скорее подходит для следующих уровней, но я включила их, потому что, делая выборку из нескольких таблиц, лучше понимаешь, какую связь они имеют. Всего различают три вида: Если рассмотреть на простых примерах, то: Эти связи обычно моделируются архитектором и аналитиками. Увидеть их можно на схеме базы данных или уточнить у человека, который проектировал данную часть. Конечно же, это малый кусочек знания о БД, в дальнейшем, читая и изучая эту тему, можно узнать гораздо больше полезного о работе тестировщика. Основы REST API При первых шагах в тестировании – обучение или работа – тестировщик с большой вероятностью столкнется с REST API. Сейчас этот архитектурный стиль применяется везде, где есть необходимость передачи данных с сервера пользователю веб-приложения или сайта. Поэтому знание основ может значительно облегчить жизнь и понимание работы всей команды. В основе REST API используется протокол HTTP (HyperText Transfer Protocol) или протокол передачи гипертекста. В дальнейшем, когда в интернете понятие безопасности стало более значимым, появился и HTTPS, где последняя буква расшифровывается как «безопасный». Т. е. если суметь «переловить» сообщение, то, понимая данный протокол, можно понять, что произошло между сервером и приложением. Первое и самое простое, с чего можно начать изучение, – это код ответов. Всего выделяется пять больших групп: Разбираясь в этих кодах вполне можно оформить хороший баг-репорт и назначить его на правильного разработчика. Кроме кода сообщения нужно суметь понять, что же в этом самом сообщении передавалось. Сейчас есть множество форматов, но основные, которые используются это: Зная структуры этих форматов, вполне можно понять сообщение. Основные инструменты тестировщика Выполняя каждый день свою работу, человек подбирает для себя удобный набор инструментов. Иногда эти инструменты меняются от проекта к проекту, но какой-то постоянный список можно выделить: Багтрекеры – это программы для отслеживания ошибок и их жизненного цикла. Конечно, ими пользуются не только тестировщики, но и все участники проекта. Представить работу команды без них сейчас невозможно. Не обязательный, но удобный инструмент. Во многих ОС есть встроенные утилиты, но когда быстро нужно добавить рамку, стрелочку или подпись, то какой-нибудь FlameShot способен сильно упростить жизнь. Для некоторых багов может не хватать скриншотов, поэтому иметь под рукой программу для записи экрана может оказаться хорошей идеей. В тестировании, как и везде, есть скучные и монотонные задачи. Например, нагенерить множество карточек для поиска или построения отчета. Чтобы не потратить на это весь день, были придуманы утилиты и сайты для генерации данных. Самые известные из них – это Mockaroo.com и Bugmagnet. Несомненно есть и другие. Часто тестирование удобства использования программы отодвигается на последнее место, потому что хотят в первую очередь протестировать функциональную часть. Не могу сказать, что это здоровая практика, но сама часто этим грешу. Для упрощения такого тестирования тоже придумали инструменты: Хотя использования этих инструментов уже на любителя. Про REST API было рассказано выше, поэтому расписывать, почему нужны инструменты для тестирования этого архитектурного стиля объяснять не буду. Скажу, что сейчас самыми популярными являются Postman и SoapUI. Postman лично мне нравится гораздо больше, потому что у него очень много удобных фишек: Хотя использования curl (служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL) никто не отменял, особенно когда работаешь на сервере без графического интерфейса. Самый любимый мой инструмент. Не представляю, как без него можно жить. Зная основные команды, можно значительно упростить себе жизнь. Приведу всего один пример: сравнение документов и списков. Просмотр глазами может занять пару часов, а Git – это система для управления версиями. В нашей команде, например, аналитики используют svn. Таких программ много. Считается, что он нужен, когда начинаешь работать с кодом и писать автотесты. Но на самом деле он может понадобиться раньше. Особенно если тестировщик хочет развиться из ручного тестировщика в автоматизатора, его попросят исправлять простые падения тестов или скачивать и анализировать отчеты, а этого не сделать без знания Git. Естественно, этот список можно продолжить, но тогда это перечисление можно было бы никогда не закончить. Soft skills тестировщика Последнее время стало модно возводить софт-скилы на пьедестал. Сложно сказать, насколько это верное решение. Часто технарь скажет, что это излишне, но минимальный набор, на мой взгляд, должен присутствовать для успешной работы в команде. А проекты давно не пишутся в одиночку. Тут все понятно. Без умения долго, скрупулезно и внимательно просматривать программы много багов не найти. Обычно тестирование завершает рабочий цикл (спринт) в большинстве продуктовых команд. Как известно, чем ближе конец, тем сильнее горят сроки. И вот тут приходится принимать решение о выводе продукта в продуктивную среду. В этот момент умение и пригодится. Это умение является продолжением предыдущего, только тут добавляются коммуникативные навыки, так как, чтобы принимать решения нужно суметь донести их до других. Пропущенный в продакшен баг не является концом света. Но привычка регулярно забивать на проверку и регресс противоречит самим целям тестирования. Спорный вопрос, является ли этот признак человека софт-скилом или нет. Но обладать им точно нужно: он пригодится для написания тест-кейсов и для поиска причин крушения системы. С первым уровнем все. Выше перечислен примерный набор того, что может понадобиться в первые месяцы работы и то, что могут спросить на собеседовании на тестировщика-джуна, как ручного так и автоматизатора. Дорожная карта тестировщика. Уровень «Уже что-то знает» Выучив основы, можно начинать развиваться в понравившемся направлении. Этих направлений очень много, поэтому кратко перечислим каждое из них. Некоторые навыки будут рассмотрены чуть более подробно ввиду любви автора к ним. Тестирование приложений на мобильных и планшетах. Для погружения в этот мир будет полезно узнать, что такое ферма устройств, эмулятор приложения и локализация с глобализацией. Также отдельный вид тестирования, который не будет рассмотрен в этой статье. Нужен для проверки работоспособности при выходе в продакшен, т. е. помогает понять, сколько пользователей одновременно смогут работать на вашем сайте или в приложении, найти узкие места и выявить пиковую нагрузку, хотя это уже ближе к стресс-тестированию. Для дальнейшего развития желательно знания языка программирования. Не обязательно для того, чтобы писать автотесты, а просто для лучшего понимания работы программ или возможности написать простой вспомогательный скрипт. Язык можно выбрать на свой вкус. Сейчас среди тестировщиков особенно распространены: Базы Данных. Следующий уровень Остановившись на первом уровне развития в БД, можно сильно просесть по hard-скилам, да и просто многое упустить. Поэтому расскажу, что еще можно выучить: Транзакциями является группа последовательных операций с базой данных, которая представляет собой логическую единицу работы с данными. Т. е. в одну транзакцию можно запихнуть сразу несколько действий, и тогда, если в одном из них будет ошибка, то все предыдущие шаги не будут выполнены. Как и в любом языке, в sql есть функции и процедуры и их заведомая подготовка для работы с БД может значительно упростить жизнь. Например, у меня есть хранимая процедура для удаления пользователей. Нужна она мне потому, что данные пользователей хранятся в множестве таблиц. Оконная функция – это функция, которая работает с выделенным набором строк (окном, партицией) и выполняет вычисление для этого набора строк в отдельном столбце. Используются они редко, но иногда без них не обойтись. Сами Базы Данных являются сложными программами и внутри них хранится множество полезной информации о работе. Для того чтобы в ней разобраться нужно читать документацию и знать, что и где искать и какими возможностями обладает та или иная база. На более высоких уровнях тестирования нужно знать основы проектирования, чтобы понимать, где могут быть тонкие места, суметь заранее предположить места ошибок и рассчитать узкие горлышки для нагрузочного тестирования. Естественно, это не все, что можно изучить в базах данных. Но для уверенной работы этого должно хватить. UI-тесты Вид автоматизированного тестирования, когда имитируются действия пользователя в браузере. То есть при запуске этих тестов можно прямо увидеть, как открывается браузер, нажимаются кнопки, заполняются поля. Эффектный, но тяжело поддерживаемый и медленный вид автотестов. Автотесты, которые имитируют обращение браузера к серверу или сторонней системы к нему же. Этот вид тестов быстрее, чем UI-тесты, но выглядят не столь красиво и покрывают только backend-часть, не затрагивая frontend. Писать их можно как самостоятельно, так и используя инструменты, такие как Postman. Дебаггингом называется поиск и дальнейшие исправления ошибок в коде. Навык скорее относящийся к разработке, но при сложных плавающих багах очень нужный любому тестировщику. Второй навык из смежной области, который может пригодиться. Под CI/CD понимается обеспечение последовательного и автоматизированного способа сборки, упаковки и тестирования приложений. Особенно здесь интересна автоматизация запуска автотестов на продукт. Soft skills тестировщика. Управление Чем выше уровень, тем больше ответственности и обязанностей возлагается на человека. Проблемы становятся все труднее, появляются новые задачи, такие как: обучение новичков, управление командой и т. д. Для этого требуется дальнейшее развитие soft skills, в которые входит: Обучать кого-то чему-то очень кропотливый труд, требующий больших затрат времени и сил. Даже если человек не умеет объяснять, этому можно научиться. Главное – не опускать руки. Рано или поздно наступает время, когда у человека появляются ученики, которых нужно обучить, мотивировать на продуктивную работу и отдать им часть задач. Для этого нужно быть готовым отдавать задачи и иметь навык распределения работы, чтобы первые задачи новичка не оказались ни слишком легкими, ни слишком тяжелыми. Если на первом уровне был навык оценки задач, то на втором нужно уметь целиком оценить проект, примерно написать план работ, выбрать стратегию тестирования и распределить работы по времени. *** Идти на курсы с гарантией трудоустройства. Да, бывает. Например, в договоре школы Kata Academy зафиксированы все гарантии и без всяких звездочек прописано, что если их выпускник не найдет работу по специальности, то студент ничего не платит за обучение. Таким образом, Kata наравне со студентом берет на себя риски и заинтересована не только в том, чтобы довести обучение до конца, но и успешно трудоустроить выпускника, ведь доход школы напрямую зависит от зарплаты студента, так как он платит Kata определенный процент от своего заработка. Мы не будем рассказывать про программу курса QA-инженера школы Kata Academy, ведь по факту она была описана выше в роадмапе, но сам учебный процесс основан на трех подводных камнях: четкое следование плану, практика и наставник. Уже 6 лет Kata на рынке образования, из которых 4.5 года работает по формату оплата после трудоустройства. За это время школа выпустила более 1500 человек, и все они смогли получить свой оффер. При этом и мы, и Kata считаем, что никакие курсы и наставники не сделают из вас специалиста, если вы сами этого не захотите. Курс – это инструмент, который поможет быстрее выполнить поставленную задачу, но без вас он работать не будет. Удачи в обучении, и помните, что все возможно – главное, не опускать руки. Интересно, хочу попробовать🧪 Кто такой тестировщик и зачем ему дорожная карта
🛣️ Что такое дорожная карта
👶 Уровень 1: новичок
Фундаментальные навыки тестирования
Знание уровней тестирования
Знание стратегий тестирования
Знание функционального/нефункционального тестирования
Умение писать тестовую документацию
Навык приоритизации багов
Базы Данных
Операторы для манипуляции данными
SELECT
, INSERT
, UPDATE
, DELETE
. Со знанием этих команд первое время можно прекрасно справляться с обычными задачами на создание, обновление, удаление или чтение данных из базы. Изучая в дальнейшем JOIN
, подзапросы и группировку с сортировкой можно значительно облегчить себе жизнь.Логические операторы
AND
, OR
, BETWEEN
, EXISTS
, LIKE
, NOT
и т. д. Без этих и арифметических операторов можно просматривать результаты выданные SELECT
часами. Согласитесь, не самое рациональное использование времени.Арифметические операторы
Знание видов связей таблиц (один ко многим, один к одному и т. д.)
Основы REST API
Протоколы взаимодействия HTTP/HTTPS
Знание кодов ответов REST API
Формат обмена сообщениями.
Использование основных инструментов
Багтрекеры (Jira, Bugzilla)
Программы для скриншотов
Программы генерации данных
Инструменты для тестирования удобства использования
Инструменты для тестирования REST API
Командная строка
diff
и немного python решат проблему за 15 минут. И перечислять такие ситуации можно бесконечно.Git
Soft skills
Внимательность
Умение принимать решение под давлением
Умение отстоять свою точку зрения
Ответственность
Аналитический склад ума
🧑🎓 Уровень 2: уже что-то знает
Мобильное тестирование
Нагрузочное тестирование
Основы языка программирования
Базы Данных. Следующий уровень
Транзакции
Функции и процедуры
Оконные функции
Знание специальных таблиц
Основы проектирования
UI-тесты
REST-тесты
Дебаггинг
CI/CD
Soft skills
Умение обучать
Умение распределять работу в команде
Умение оценить проект целиком
Пробовал найти работу тестировщиком, но никуда не берут. Что делать?
Гарантированное трудоустройство? А такое бывает?
- 0 views
- 0 Comment