Специалист по тестированию: подробный обзор профессии

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

Делать любой продукт совершенным с каждым днем – очень важная задача любой организации. От продуктов, которыми мы пользуемся, мы всегда ожидаем, что они будут вести себя нужным образом и не станут ломаться. Если это не так — мы выбираем другие, более качественные продукты.

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

Все про тестировщиков

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

Главное в профессии — смотреть на продукт шире,
чем программист или дизайнер.

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

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

Для выявления более сложных дефектов существуют специальные методы тестирования, такие как автоматическое, функциональное, модульное и нагрузочное тестирование. Для овладения этими методами требуется серьезная техническая подготовка: хорошие навыки программирования, опыт работы со специальными инструментами, а также хорошее техническое Специалист по тестированию обязательно должен уметь аргументировать свою точку зрения. Тестировщик, который начал задумываться о том, как возник дефект и как избежать этого в будущем, перерождается и начинает действовать проактивно: предлагает проводить code-review, внедрять тесты, спецификации, стандарты качества и т.п.

Как работает тестировщик.

Тестирование охватывает весь цикл разработки и включает в себя планирование, проектирование, создание и выполнение тест-кейсов.

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

Специалисты QA создают и реализуют различные тактики для повышения качества на всех стадиях производства: подготовка и установка стандартов, анализ качества, выбор инструментов, предотвращение ошибок и постоянное усовершенствование процесса.

QC (англ. Quality Control) — контроль качества продукта — это часть комплекса QA, которая отвечает за анализ результатов тестирования, поиск ошибок и их устранение. QC ориентирован на проверку конкретного продукта, в него входят различные процессы, такие как анализ кода, технические обзоры, анализ дизайна, тестирование и прочее.

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

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

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

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

Еще одна задача тестировщика — автоматизация. Объем тестирования постоянно растет, а инструменты автоматической проверки для разных направлений тестирования помогают экономить время. Специалист по тестированию постоянно работает над тем, чтобы контроль качества продукта становился еще надежнее и быстрее.

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

Этапы тестирования

Первый этап. Сбор информации

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

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

Второй этап. Анализ

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

Тестировщик разбивает все глобальные процессы в продукте на самые маленькие блоки. Чтобы проверить, как работает приложение, он будет отдельно тестировать каждую страницу, кнопку и действие.

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

Третий этап. Разработка тестовых сценариев

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

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

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

Цель этого этапа — решить, как проводить тесты, выбрать инструменты и методику.

Четвертый этап. Тестирование

Следующий шаг — автоматическое или ручное тестирование. Специалист проходит все этапы, которые описаны в тест-кейсе и проверяет работу продукта. Например, если нужно найти ошибки в верстке, тестировщик использует валидаторы HTML/CSS. Достаточно указать путь к приложению или сайту, и сервис покажет все обнаруженные ошибки.

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

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

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

Пятый этап. Подготовка отчета

Ошибки нужно описать и показать. Кроме текста тестировщик готовит скриншоты или видео, где можно увидеть ошибку. Всё, что удалось обнаружить, нужно зафиксировать в специальных программах. Для этого используют Bugzilla, Redmine, Mantis, HP ALM. Если процессы в компании еще не настроены, работают с Word и Excel.

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

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

Шестой этап. Проверка исправленного продукта

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

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

Личные и профессиональные компетенции специалиста по тестированию (по ссылке доступен Профиль роли):

Для профессии тестировщик утвержден Профессиональный стандарт “Специалист по тестированию в области информационных технологий” (Приказ Министерство труда Российской Федерации от 11.04.2014 N 225н)

Технические навыки и инструменты, которыми должен владеть тестировщик:

  • Основы программирования и редакторов кода: VScode, Pytest, Gitlab, XML, CSS, JavaScript.
  • Знание ключевых систем управления проектами в разработке — Waterfall, Scrum и Kanban.
  • Представление о том, как создаются пользовательские интерфейсы — в плане разработки, UX UI-дизайна.
  • Работа с системами баг-трекинга (обнаружения ошибок): Redmine, Jira.
  • Знание инструментов мониторинга HTTP/HTTPS-трафика.
  • Навыки работы с базами данных — такими, как MySQL, PostgreSQL, MS SQL.
  • Навыки составления тест-планов и тест-кейсов с помощью TestRail, Zephyr, TestLink и других сервисов.
  • Знание особенностей всех популярных ОС и браузеров — мобильных и десктопных.
  • Представление о клиент-серверной архитектуре.
  • Умение работать с системами контроля версий — например, CVS или Git.
  • Умение работать с системами автоматического тестирования веб-приложений, тестирования нагрузки и функционала — такими, как HP-UFT, Sahi, Selenium.
  • Хороший технический английский.

В профессии тестировщика очень важны софт-скиллы. Вот личные качества, которые играют важную роль для этой профессии:

  • Аналитический склад ума. Вам придется работать с большими объемами информации, разрабатывать четкую последовательность действий и анализировать результаты.
  • Внимание к деталям. Тестировщик должен обращать внимание на малейшее отклонение от того, каким видят продукт разработчики и проверять любые возможные варианты.
  • Усидчивость. Приходится выполнять большой объем рутинных операций и тщательно следить за малейшими ошибками.
  • Критическое мышление. Даже если продукт выглядит идеальным, важно убедиться в этом на практике.
  • Ответственность и системный подход. Важно соблюдать регламенты и сценарии работы, добиваться поставленного результата и предоставлять итог своей работы в виде четких и понятных рекомендаций. Не просто найти ошибку, а подробно описать, при каких обстоятельствах и почему она возникает.
  • Эмпатия и внимание к людям. Это нужно, чтобы абстрагироваться от сугубо технических сценариев и инструкций и понять, как действует обычный человек, удобно ли ему будет работать с продуктом, с какими сложностями он столкнется.
  • Навыки коммуникации. Нужно уметь общаться и убеждать разработчиков и других участников команды в вашей правоте и необходимости внести правки.
  • Стремление к саморазвитию. В профессии тестировщика важно постоянно осваивать новые методы и технические приемы, чтобы хорошо разбираться в продукте, его слабых и сильных сторонах.

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

Обучение специалиста по тестированию.

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

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

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

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

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

Карьерные перспективы специалиста по тестированию

Работа в сфере тестирования дает несколько возможностей для развития карьеры: вертикальный, горизонтальный и смежный.

Как правило, любой тестировщик начинает с позиции Джуниор: специалист по тестированию с минимальным опытом работы или даже без него получает свою первую квалификацию – Junior QA Engineer. На начальных этапах вам нужно будет научиться выполнять ручные тесты, работать с баг-трекинговыми системами, расширять технический кругозор.
Уровень предложений по заработной плате на позицию тестировщика уровня Джуниор составляет от 50 000 до 70000 рублей по г.Москве.

Следующий этап в карьере наступает спустя несколько лет работы в компании, вы получаете квалификацию Middle. Вы должны будете самостоятельно разрабатывать тестовые сценарии и постепенно погружаться в автоматизированное тестирование. Поэтому на данном этапе вам уже нужно будет учиться разбираться в коде программы.
На позиции Middle тестировщику предлагают уровень заработной платы от 70 000 до 130 000 рублей.

По прошествии 4 лет работы вам могут предложить должность Senior. Помимо всех вышеперечисленных задач, в должностные обязанности старшего инженера по тестированию будут входить планирование процесса тестирования и контроль работы молодых сотрудников.
Зарплатные предложения уровня Senior составляет от 150 000 рублей.

Ведущий специалист (Lead) должен не только проявлять глубокие знания всего процесса тестирования, но и демонстрировать навыки управления проектами, руководить тестированием среди малых групп специалистов.
Предложения по заработной плате на позиции Lead – до 300 000 рублей.

Развиваясь как специалист и прокачивая Hard Skills, можно выбрать наиболее интересное направление: автотестирование, тестирование юзабилити, безопасности. При этом есть профессионалы, которые могут совмещать оба варианта.

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

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

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

Заключение:

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

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

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

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

Наталья Карташева,
Эксперт центра