Профессия: тестировщик

Тестировщик: Это баг или фича?
Разработчик: Пока что это фича.
bash.im

Инженер по тестированию — моя первая специальность в ИТ-сфере в далёких уже 2010-х, как, пожалуй, и у многих. Это было классическое «войти в айти»: на тот момент имелось только экономическое образование и 4 года опыта аналитической работы в телекоме. Из скиллов: горящие глаза, большое желание, среднее знание администрирования UNIX и выученная наизусть модель OSI (без особого понимания, что с ней делать дальше). 87 вопросов на собеседовании (от «что такое chmod 777» и «как работает ssh» до «расскажите о принципах работы TCP и поясните на примерах») — и должность инженера по тестированию у меня в руках. Чуть позже за 2 года было всё: гордость, отчаяние, разочарование, отличная работа, быстрый рост, крутой проект и т.д. Если бы я тогда знал о профессии тестировщика чуть больше, не было бы многих неприятных минут и часов. Ну, пусть тогда их не будет у тех, кто только выбирает свой путь или меняет его направление — эта статья для вас. 

24e5629f5a9ac0df99cfe96fdc21e483.png


Кто это?


Тестировщик (буду называть именно так, чуть позже объясню, в чём причина оговорки), он же QA-инженер (Quality Assurance) — это специалист, который проверяет качество программного обеспечения и уровень его соответствия заранее определённым потребностям и ожидаемым результатам. В своей работе он использует различные инструменты, стратегии тестирования, включается в SCRUM-команды и т.д. 

Иногда выделяют два основных «вида» тестировщиков.

  1. Тестер — начинающий тестировщик, который проводит, в основном, ручное тестирование по заранее описанным тест-планам. Плохое название, на которое ребята часто обижаются.
    35343fa181c243c85ab6afeaffb5f306.png

    Вот это тестер, а парни и девчонки всё же тестировщики! (минута айтишного шовинизма)
  2. Инженер по тестированию — специалист уровня от junior до lead, который осуществляет разнообразные виды тестирования, в том числе автоматизированное, самостоятельно пишет тест-планы, в некоторых случаях даже даёт рекомендации по исправлению багов или исправляет их самостоятельно (в небольших компаниях).


Это очень укрупнённая и не совсем серьёзная классификация. На самом деле тестировщики бывают разные: специалисты автоматизированного тестирования, тестировщики СУБД, аналитики тестирования, разработчики-тестировщики, тестировщики-DevOPs и проч. Всё зависит от того, какие скиллы соединяет в себе каждый конкретный специалист. 

В общем и целом работу инженера по тестированию можно свести к такому порядку: получил ПО → определил необходимый набор тестов → сопоставил реальное положение косяков, костылей, велосипедов и багов с ожидаемым результатом работы программы (аппаратно-программного комплекса) → завёл баги → работаешь с ними, пока они не закроются. Всё это, конечно, в цикле.

Скажу сразу: первые несколько месяцев работы в тестировании напоминают день сурка, ты делаешь одно и то же, прогоняешь одни и те же тесты по нескольку раз, ставишь passed или failed, заводишь баги и, кажется, что это работа точно не для тебя, а скорее для школьника или мартышки. И это вот самоощущение чудовищно угнетает и столь же чудовищно неверно. Всё меняется, когда приходит опыт. 

Вот какие этапы вы, скорее всего, пройдёте на работе тестировщиком «с нуля».

Первые 2–3 месяца — обучение. Если компания хорошая и продвинутая, вам дадут наставника, который поможет освоить все принятые в компании методологии тестирования, покажет оборудование, расскажет о ПО, задачах этого ПО и обязательно о клиентах. Иногда по итогам такого вот обучения с наставником вам даже придётся сдать небольшой экзамен (мини-собеседование). Это совершенно нормально, т.к. именно QA является важным подразделением на пути к клиенту и его хорошая работа — залог того, что ваш продукт в чьём-то бизнесе начнёт работать, а не лажать. Если компания не особо заботится о развитии сотрудников, вам придётся достигать всего самому, но я не скажу, что это очень плохо: при самостоятельном обучении погружение в ПО происходит гораздо глубже и вы понимаете значительно больше того, что расскажет опытный «ментор» о продукте, который ему отлично знаком. 

Новичков в тестировании любят — иногда они находят самые интересные и неожиданные баги, на которые у давно работающих сотрудников «глаз замылился».

История. В одну компанию пришла новенькая девочка, которая никак себя не проявляла, тихо изучала софт и принципы его работы с разным оборудованием. Когда она только-только приступила к тестированию, от большого и злого федерального клиента прилетел critical (самый злой баг, хуже только блокирующий) — ПО отказывалось закрываться. Перелопатили весь код, орали друг на друга, проверили все соединения и т.д. Через три часа метаний девочка пропищала:
— А тут крестик неактивный.
Действительно, просто не работала одна-единственная и весьма очевидная функция. Но профессионалы забурились в дебри, а увлечённый дилетант сразу заметил ненормальное поведение.

Далее — от нескольких месяцев до 2 лет — ручное тестирование. Вы будете выполнять большинство видов тестов в ручном режиме, начнёте составлять свои тест-планы и взаимодействовать с разработчиками. На этом этапе наступает тот самый день сурка, когда кажется, что кони бегают по кругу и дальше — рутина и скука. Это не так. В этот промежуток времени инженер по тестированию наращивает интегральное понимание тестирования, учится работать с программистами, видеть не только сам баг, но и анализировать его возможные причины. Главное, что приходит за это время — осознание того, что ручное тестирование должно остаться в прошлом веке и… настаёт время перехода к автоматизации тестирования, когда вы начинаете осваивать язык программирования (или использовать ранее освоенный) и пишете свои скрипты — те, которые считаете нужными для работы с ПО. Наступает реально крутая часть работы. (Впрочем, многие тестировщики, особенно девушки, предпочитают остановиться на ручном тестировании и стать реальными асами именно в нём — кстати, весьма полезные сотрудники и, как показывает опыт, лучшие наставники для новичков).

От 2 лет и далее — квалифицированный специалист, готовый работать в офисе и на стороне клиента, тестировать крупные проекты, а не только фрагменты и модули, глубоко знающий свою специализацию и не очень глубоко все остальные, способный работать не только с профильным ПО, но и тестировать взаимодействия внутри различных конфигураций оборудования, ПО и интеграций. Такие ребята классно и доходчиво выступают на конференциях и митапах, делятся профессиональными секретами, обучают и… думают о своём дальнейшем карьерном пути. Об этом чуть ниже.

Работа тестировщика программного обеспечения хороша тем, что можно выбрать компанию, связанную с тем, что вам интересно в какой-то перспективе: можно тестировать телефонию, софт, бизнес ПО, игры, мобильные приложения, системы безопасности и т.д. Тестируя тот или иной продукт, вы глубоко в него погружаетесь, узнаёте изнутри и в дальнейшем сможете стать разработчиком или менеджером проекта/продукта с доскональным знанием предмета.

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

Плюсы и минусы работы тестировщиком


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

▍Плюсы


  1. До определённого момента работа тестировщика проще остальных технических специальностей и доступна многим, кому интересна ИТ-сфера. Переходить ли рубеж к тому интервалу, где работа становится максимально сложной, решение каждого. Если дальше не пойдёте, вас из тестирования не выгонят, вы всё равно будете востребованы.
  2. Потребность в тестировщиках не исчезнет до тех пор, пока есть информационные технологии, связь, интернет, роботы, автопилоты и т.д.
    772f6e6b183e7256db6b33b98f1cd4a9.png
  3. Тестирование — не столь изученная область, как программирование. Если у вас есть талант и трудолюбие, вы сможете сказать своё слово миру (написать книгу, создать методологию, преподавать и т.д.).
  4. Карьера тестировщика довольно свободная: можно сидеть в офисе с гибким графиком, можно работать удалённо, а можно стать фрилансером, набрать проектов и тестировать их по сдельной оплате.
  5. Тестировщику легче вернуться на работу после долгого перерыва, например, из опыта создания своего стартапа, фриланса, декрета, иных обстоятельств.
  6. Работу в тестировании можно сочетать с учебой без вреда для обоих видов деятельности.
  7. Вы научитесь «видеть продукт» со всех сторон, узнаете все функциональные возможности, посмотрите на софт глазами инженера и глазами потребителя. Это прямой путь в менеджеры продукта. Общая картина продукта поможет вам в любом случае — например, если вы решитесь уйти в разработку.


▍Минусы


  1. Команда недолюбливает тестировщиков :-) Нет, ну вы вот сами прикиньте: вы делаете продукт, пишете код, документацию, а потом на него нападает кучка коллег и заводит баг за багом на каждую мелочь. Ну как это вынести в адекватном состоянии?! Хуже только быть единственным тестировщиком в команде — тогда всё, ты конченая сволочь. Шутки шутками, но нередко команда считает, что именно тестировщики задерживают выпуск релизов и клиентских сборок. В общем, не любят люди, когда находят ошибки в их работе. 
    03328edb4424130afd55d9f88b369bb8.png
  2. На первом этапе вы работаете с повторяющимися задачами, иногда работать становится невыносимо скучно.
    9225ebce72ff9a3f7a19186ffc39969f.png
  3. Тестировщики ищут ошибки разработчиков, искать ошибки тестировщиков некому. Поэтому вы будете крайними в некоторых неприятных ситуациях.
  4. Работа тестировщиков часто бывает незаметна руководству — придётся привыкнуть быть серым кардиналом, невидимым героем.
  5. Сверхурочная работа — бич тестировщиков. Рано или поздно вам будет нужно срочно оттестировать релиз или сборку, которую нужно выкатить завтра или «вот прям щас» или же остаться и проверить внесённые программистами исправления. И вы останетесь, а вот оплачивается такой героизм далеко не всегда (я вообще не встречал).
  6. На тестировщиках лежит огромный груз ответственности за полноту и охват тест-планов — если что-то упустить, отвечать уже придётся за пропущенные баги.


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

Где нужен?


В отличие от разработчиков, тестировщик нужен не во всех компаниях, где выпускается хоть какое-то средство автоматизации или приложение (а зря! Но это решение самих компаний). Однако абсолютно точно тестировщики всех уровней нужны в ряде компаний.

  • Любые компании-разработчики, а также поставщики программно-аппаратных комплексов (от процессоров до касс и терминалов).
  • Разработчики игр и развлекательных мобильных приложений.
  • Финтех компании: банки, брокеры, финансовые учреждения и проч. 
  • Системные интеграторы, которые поставляют корпоративному сегменту сложные многослойные технические решения.
  • Нередко тестировщики ПО требуются в штат заводов, автомобильных компаний, онлайн СМИ, ритейлеров, онлайн-курсов и т.д.


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

7f713ce2e93f699751ea0ec24b2e7802.png


Средняя заработная плата


Заработную плату будем смотреть на «Хабр Карьере». Возьмём данные за второе полугодие 2019 года, вне зависимости от владения тем или иным стеком. 

Для специалистов ручного тестирования:


Для специалистов автоматизированного тестирования:
Как видите, есть все основания для того, чтобы развиваться и переходить на новый уровень тестирования.

Базовые требования к профессионалу


В этот раз таблиц с наиболее часто упомянутыми технологиями не будет, потому что методологии и инструменты тестирования от компании к компании могут здорово отличаться. Рассмотрим те навыки, без которых карьера ну совсем не получится (обратите внимание — вы их можете приобрести в ходе работы, иметь их на старте круто, но совсем не обязательно).

  • Опыт технической поддержки — это плотное изучение технологий в сжатые сроки, умение понимать проблемы и быстро сопоставлять их с причинами и путями решения + навыки документирования заявок. Отличная почва для старта карьеры тестировщика.
  • Основы программирования — желательно Java, SQL, Python, но сойдёт буквально всё.
  • Знание методологии Agile, умение встроиться в микро-команды. 
  • Основы Linux.
  • Основы архитектуры ПК.
  • Модель OSI и сети (базовое понимание, знание структуры заголовков пакетов и проч.). Практически сразу потребуется свободная работа с утилитой Wireshark.
  • Инструменты управления тестированием — Bugzilla, Jira или любой другой багтрекер.
  • Selenium — инструмент для автоматизации действий веб-браузера. Очень популярный инструмент тестирования. 
  • Желательно — понимание стратегий тестирований чёрного, белого, серого ящиков и осознание того, где вы наиболее хорошо применимы как специалист.


Это самая база, с опытом вы увидите, куда и насколько глубоко нужно погружаться. 

Кстати, если у вас совсем нет опыта, но есть немного времени, чтобы параллельно с учёбой подготовиться к будущей работе тестировщиком, у меня для вас есть три лайфхака.

  1. Станьте QA-фрилансером, чтобы выполнять небольшие проекты по ручному тестированию. Платят мало, но вы научитесь мыслить как тестировщик, писать контрольные примеры и сообщать о результатах. 
  2. Если цель — тестирование веба (а это чаще всего), создайте свой кривой-косой, но полноценный сайт без шаблонов и готовых CMS. Так вы поймёте, как среда работает изнутри и будете знать места обитания всех типичных багов.
  3. Найдите программу любого курса по тестированию, ищите по ней материалы и накапливайте теоретическую базу, чтобы успешно пройти первое собеседование.


Важные личные качества


В принципе, тестировщик может быть интровертом или экстравертом, геймером или ролевиком, добрым или не очень. Коммуникативные навыки играют в команде определённую роль, но в целом хватит общей адекватности и умения выражать свои мысли. В тестировании нужны другие, более тонкие настройки личности.

  • Аналитические навыки, чтобы понимать взаимосвязи, анализировать огромные массивы данных, результаты тестов и т.д.
  • Управление временем и скиллы планирования — только с ними можно обеспечить высокую производительность на фоне серьёзной рабочей нагрузки.
    f84b703f3e144f068a6fbc6d4236502c.png
  • Особая интуиция, которая приходит с опытом — тестировщик должен заранее предвидеть, где может поджидать потенциальная ошибка.
  • Высокий порог терпения и стрессоустойчивости — важно внимательно протестировать продукт, спокойно подискутировать с разработчиками, неоднократно воспроизвести баг, отработать одни и те же тест-кейсы и т.д.
    572bf30f3167b384f72d26941535302d.png
  • Умение надолго концентрироваться и сохранять внимание. К слову, иногда именно тестирование позволяет наработать это навык и сохранить его для дальнейшей карьеры.


Необходимость знания иностранных языков


Пожалуй, инженер по тестированию — редкий вид специализации в ИТ, где можно знать язык исключительно на уровне команд инструментов. Это связано с двумя важными особенностями:

  • очень много статей и методик переведено на русский язык;
  • часто объём знаний языка обусловлен именно особенностями продукта и компании — соответственно, если компания работает на англоязычный рынок, уровень нужен (например, чтобы тестировать документацию или общаться с интернациональной командой и клиентами), а если на российский рынок, то требования к языку практически нулевые.


Но опять же, если вы хотите расти в серьёзную автоматизацию или уходить в разработку, язык вам будет нужен всё больше и больше, поэтому лучше не тратить время и подтянуться хотя бы до Intermediate. 

У меня был пример, когда понадобился тестировщик со знанием японского и отдельно — со знанием немецкого в том числе для работы с клиентами (удалённо). Так вот, нашли, обучили и дали зарплату выше разработчиков в компании. Потому что специалисты уникальные. Они и сейчас не пропали :)

Где учиться


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

Принципиального обучения на инженера по тестированию в России не существует.

Пожалуй, именно для обучения тестированию я впервые из нашей серии «Профессия» выделю онлайн-курсы: они действительно могут ввести в курс дела, обучить принципам тестирования, научить находить, видеть и фиксировать баги и т.д. Для новичка можно найти приемлемый вариант и пройти его — это вам даст уверенность на собеседовании и задел знаний в первое время работы.

Лучшее обучение в этой сфере — пройти путь от стажёра до миддла или сеньора в компаниях. На фоне усилий по самообразованию — вообще идеально. Как правило, после первого полученного опыта в компании устроиться тестировщиком в другие довольно легко. Главное найти заветную первую практику :)

Лучшие книги и средства обучения


▍Книги


  • Арбон Джейсон, Каролло Джефф, Уиттакер Джеймс «Как тестируют в Google» — познавательная книга, которую лучше читать уже с каким-то опытом, как минимум junior. А, впрочем, о чём я! Читайте и наслаждайтесь на любом уровне, очень полезно и неплохо написано.
  • Борис Бейзер «Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем» — классика литературы для тестировщиков. Это скорее академический учебник о тестировании, весьма толковый.
  • Гленфорд Майерс, Том Баджетт, Кори Сандлер «Искусство тестирования программ» — библия тестирования (на мой субъективный взгляд).
  • Роман Савин «Тестирование Дот Ком, или Пособие по жестокому обращению с багами в интернет-стартапах» — реально добрая, немножко смешная и в то же время умная книга для начинающих и постарше. Мне бы она зашла как настольная книга тестировщика.


▍Онлайн-обучение


▍Полезные статьи на Хабре о самой профессии


Ну и вообще хаб «Тестирование IT-систем» к вашим услугам. На Хабре очень много полезного по этой теме.

▍Тусовки тестировщиков


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

▍Википедия


Тестирование программного обеспечения — отличная статья в Википедии, которая разом познакомит вас с будущими задачами в профессии. Отдаю ей дань как самому первому источнику моих знаний о тестировании. Кстати, тогда она была гораздо скромнее.

Будущее тестировщика


Кроме стандартного пути внутри тестирования (от стажёра к лиду), есть несколько наиболее вероятных путей развития карьеры тестировщика.

  • Разработка программного обеспечения — логичный и не самый сложный путь для тех, кто увлечётся языками программирования и захочет не только ковырять чужой код и готовый проект, но и создавать что-то внутри команды.
  • Руководитель проекта. Отличное знание проекта в целом, понимание потребностей и требований клиентов — прямой путь к этой точке.
  • Скрам мастер — интересный разворот, который у тестировщиков хорошо удаётся благодаря опять же знаниям проекта в целом и умениям жёстко планировать сроки работ.
  • Бизнес-аналитик, внедренец — денежные, но не столь технические должности для ребят с прокачанными коммуникативными навыками.


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

Мифы профессии


▍Тестировщики — «низшая каста» ИТ-отрасли 


Вот сейчас обидно было. Или это как у ВДВ, но «не кодил — не айтишник»? Отдел тестирования — это по сути настоящий отдел контроля качества, который не позволит компании опозориться перед клиентом (если где-то упадёт навороченный костыль, хе-хе), вовремя определит явные ошибки UI/UX, проверит внутреннюю логику работы приложения или сервиса. Комплексная работа тестировщиков всех ИТ-компаний мира обеспечивает определённый уровень качества и сохраняет миллионы денег компаний, которые могли бы потеряться на жалобах конечных пользователей на бесконечные баги. 

Тестировщики — это полноценные, сильные ИТ-специалисты, которые отличаются комплексным подходом к ПО и АПК, глубоким знанием продукта и умением видеть неочевидные взаимосвязи внутри разработок. 

▍Тестирование — это просто поиск ошибок


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

9252d9da7ffa26dd0673e8485e33d3e7.png


▍Тестировщикам мало платят


На первых порах это действительно не самая оплачиваемая работа. Согласитесь, компании обидно платить сотруднику, который по большей части учится. Но постепенно заработная плата растёт и дальше зависит от компании: когда я работал, я получал всего на 3 тыс. руб. меньше разработчика своего уровня (middle), но я знаю компании, где тестировщики получают и больше, и меньше, чем разработчики. Многое зависит от профиля деятельности компании и скиллов тестировщика. Понятное дело, что автоматизатор будет стоить дороже. Но формулировка «мало платят» точно не про тестирование.

▍Не применяются технические навыки


Я уже выше перечислил примерные действия тестировщиков, и все они строго инженерные. Хоть в тестирование можно попасть и без технического образования, работать без технического бэкграунда не получится: вы либо шустро всему научитесь, либо пойдёте в нетехнические отделы, потому что «голый гуманитарий» — горе в отделе QA. Да, на каком-то этапе от вас не потребуется глубокое владение языками программирования (но вы же запомнили, что тестировщики со знанием разработки выше ценятся?), но инженерные, админские и общетехнические знания вам ох как пригодятся. Вы их будете использовать буквально каждый день.

Главный совет


Здесь не будет совета, их в статье и так хватает. Я расскажу, что самое страшное в профессии тестировщика. Вот такое страшное, что до мурашек и головокружения. Самый первый самостоятельный заход на тестирование. Ты сидишь, проводишь тесты и ставишь passed, passed, passed… И ни одного, даже самого малюсенького, самого глупого и минорного бага! И ты боишься, что в тебе нет этого — видеть ошибки, отвечать за качество, находить что-то, что пошло не так. И какое же это счастье, когда находится он, первый, первая странность в заголовке пакета или первое слово интерфейса с опечаткой.

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


Друзья, а вы прошли через работу в тестировании? Каким он был, ваш первый баг или самый глупый, смешной, может, даже страшный? Время жутких историй!

1ba550d25e8846ce8805de564da6aa63.png

Предыдущие серии «Профессии…»

→ Профессия: бэкенд-разработчик
→ Профессия: фронтенд-разработчик
→ Профессия: системный администратор

© Habrahabr.ru