кто такой Тестировщик ПО (QA инженер)?

Тестировщик ПО (QA инженер), он же тестер, занимается комплексной проверкой системы и поиском багов, сбоев и обходных приёмов. Также проверяет работу ПО на соответствие требованиям от заказчика. Это профессия одновременно и креативная, и требующая усидчивости и внимательности вплоть до скрупулёзности. С одной стороны, тестировщику поможет изобретательность и фантазия, чтобы смоделировать все возможные сценарии поведения пользователя и попробовать предугадать ошибки, с которыми пользователь может столкнуться. С другой стороны, нужно тщательно фиксировать все негативные реакции, писать пошаговые инструкции для тестирования программ и приложений, формировать тест планы.
Как это часто бывает в ИТ, профессия тестировщика функционально и инструментально соприкасается со смежными специальностями — разработчиками, UX-дизайнерами, продакт-менеджерами. Укрупненно рабочий цикл тестера можно описать так: получение задачи от разработчика — определение набора необходимых тестов — оценка общей критичности и работоспособности программы — методичное прохождение тестов и фиксация ошибок. До тех пор, пока не будет идеального (или приближенного к идеальному) результата.
Обычно в задачи специалиста по информационной безопасности входит:
  • Проведение и контроль тестов, анализ результатов;
  • Фиксирование багов;
  • Составление тестовой документации;
  • Моделирование и анализ ошибок в работе ПО/системы, с которыми столкнулись пользователи — в том числе, и на основании логов (записей событий в работе программы);
  • Имитация различных сценариев поведения пользователя — на разных платформах и в разных конфигурациях;
  • Тестирование веб-сервисов;
  • Тестирование мобильных приложений;
  • Тестирование установщиков программных продуктов;
  • Тестирование взаимодействия системы или приложения с сетевыми сервисами;
  • Эмуляция совместной работы оборудования и ПО;
  • Ведение отчетности по тестированию, составление чек-листов;
  • Написание тест-кейсов;
Разные тестировщики специализируются на тестировании веб-сервисов, мобильных приложений, сложных информационных систем или программно-аппаратных комплексов. При этом есть различие и внутри каждой специализации.
Тестировщик-аналитик

Собирает требования и фиксирует задачи, ведёт документацию по тестированию, составляет ТЗ и инструкции. Также занимается созданием моков, прописывает сценарии использования приложения или ПО. Часто является связующим звеном между бизнесом и командой разработки, так как понимает требования бизнеса и как должен работать программный продукт с точки зрения заказчика или пользователя. Может заниматься ручным поиском багов и реализацией тест-кейсов.

базовый стек
  • Языки: Python, PHP, Java, JavaScript (один-два основных на базовом уровне)
  • Инструменты таск- и баг-трекинга: Jira, Redmine, Asana
  • Понимание работы баз данных SQL
Ручной тестировщик

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

базовый стек
  • Языки: Python, PHP, Java, JavaScript (один-два основных на базовом уровне)
  • Системы управления тестированием: Allure Testops, TestLink, TestRail
  • Инструменты таск- и баг-трекинга: Jira, Redmine, Asana
  • Понимание работы баз данных SQL, знание практик тест дизайна
Тестировщик-автоматизатор

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

базовый стек
  • Языки: Python, C, C++, PHP, Java, JavaScript
  • Знание CI/CD
  • Инструменты автоматического тестирования: Selenium, TestingWhiz, TestComplete, Ranorex и другие
  • Системы управления тестированием: Allure Testops, TestLink, TestRail
  • Инструменты: IBM Rational Robot, Silk performer
  • Принципы разработки продуктов: Agile/Scrum
  • Понимание работы баз данных SQL
Тестировщик производительности

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

базовый стек
  • Языки: С, С++, Java, Kotlin, Scala, JS
  • Инструменты: WEBLoad, Loadrunner, JMeter, Taurus, BenchmarkDotNet
  • Знание REST API, GraphQL, WEB-Socket, Swagger, HTTP/HTTPS, JSON, XML, SOAP
  • Инструменты: JIRA, Confluence, BitBucket
  • Понимание работы баз данных SQL
Юзабилити тестировщик

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

базовый стек
  • Языки: Python, Java, Kotlin, Swift
  • Инструменты: Axure, Intuition HQ, Omnigraffle, VerifyApp

Разница между QA, QC и тестировщиком

Многие считают тестировщика и QA инженера разными вариациями названия специальности, но это не совсем так.

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

QC (Quality Control) специалист проводит конкретные мероприятия по контролю за качеством продукта. Они являются частью общей стратегии, созданной QA специалистом. QC инженер работает с определенным продуктом, выбирает способы и инструменты тестирования для него, анализирует код, интерфейс, ставит задачи тестировщикам.

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

T-shaped специалист

Тестировщик – пример T-shaped специалиста

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

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

Куда расти

В этой специальности также возможен горизонтальный и вертикальный рост.
вертикальный рост

Здесь можно выделить 5 возможных ступеней. Время перехода зависит от вашего опыта и кадровой политики компании.

Опыт работы: без практического опыта

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

Как идти дальше

После успешной стажировки вы сможете перейти на позицию джуна.

Опыт работы: ≈1 год

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

Пример задачи

Вручную протестировать приложение с помощью веб-браузера — по готовым сценариям.

Как идти дальше

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

Опыт работы: ≈3 года

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

Пример задачи

Покрыть функционал тест-кейсами. Сформировать модель для тестирования релиза.

Как идти дальше

Пробовать себя в работе с разным ПО, прокачивать hard skills и изучать языки программирования.

Опыт работы: 5+ лет

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

Пример задачи

Написать скрипт для теста мобильного приложения.

Опыт работы: 7+ лет

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

Пример задачи

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

А что дальше?

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

Горизонтальный рост
Здесь тоже есть несколько вариантов
Во-первых

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

Во-вторых

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

В-третьих

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

Скиллы

Харды для джуна
  • Языки программирования: Python, Java, JS — не является обязательным, но знание на базовом уровне будет преимуществом при старте
  • Базовое понимание SQL, принципов работы баз данных
  • Основы архитектуры ПК, знакомство с Linux и Windows
  • Знакомство с WireShark, Charles или Fiddler
  • Желательно на верхнем уровне изучить инструменты Bugzilla, Jira, Selenium
  • Знакомство с теорией и принципами тестирования в целом
  • Знание принципов построения и работы веб-приложений и мобильных приложений
  • Базовый+ уровень владения английским языком
Софты для джуна
Софт скилы не связаны с конкретной профессией, но позволяют выстраивать успешную карьеру — эффективно общаться, решать конфликты, работать в команде
Коммуникабельность
Вы будете плотно общаться с разработчиками, составлять документацию и отчёты, которые будут читать другие специалисты
Аналитические способности
Пригодится для понимания взаимосвязей, работы с большим объёмом данных, анализа тестов и понимания продукта и его элементов в целом
Тайм-менеджмент и навыки планирования
Много документации, отчётов, итераций тестирования — без организации и планирования будет сложно. Затем еще подтянете знания по методологиям вроде SCRUM или Agile и практически автоматизируете управление процессами
Критическое мышление
Тестировщик априори уверен, что в ПО есть ошибки. Они не доверяют пользовательскому опыту или своим же коллегам-разработчикам, пока сами не убедятся в том, что все работает нормально
Фантазия и креативность
Да, уметь представить себя в роли пользователи, продумать разные сценарии поведения — это довольно творческие процессы
Терпеливость и стрессоустойчивость
Итераций тестирования может быть много. Не один раз придется воспроизвести один и тот же баг или отработать один и тот же тест-кейс.

Словарик терминов

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

Плюсы и минусы работы

плюсы
  • Довольно легкий старт без опыта в ИТ
  • Востребованность в компаниях разной направленности и величины
  • Перспектива роста и развития
  • Достойная оплата
  • Задачи могут быть увлекательными и интересными
  • Свободная организация рабочего дня (удаленка или гибрид) и занятости — можно работать в штате компании, а можно набрать проектов и фрилансить
  • Анализ продукта глазами разработчика или инженера, с одной стороны, и пользователя, с другой, дадут вам комплексное понимание продукта и сделают вас универсальным специалистом
минусы
  • Работа довольно неприметна на первых этапах, поэтому люди с амбициями могут не чувствовать мотивацию
  • Для разработчиков тестировщик — лишняя головная боль
  • Поначалу будет много однотипных задач
  • Тестировщик — последнее звено в отладке и нахождении ошибок в продукте, поэтому на них лежит большая ответственность и, соответственно, спрос за пропущенный баг или неполное тестирование
Вам здорово подойдёт профессия, если
  • У вас аналитический склад ума
  • Вы усидчивы и не боитесь рутины, хотя при этом готовы искать новые неочевидные решения
  • Вы перфекционист(ка) и добьётесь идеального результата, даже если коллеги уже в стрессе от ваших постоянных рекомендаций
  • Умеете работать в команде
  • Знаете английский язык хотя бы на базовом+ уровне
  • Не боитесь ответственности
workfreshgameyoufirestarcomp
софт
Бесплатный онлайн-курс для студентов любых направлений о том, как начать карьеру в ИТ.
Хочу в #софткомьюнити