Тестировщик ПО (инженер по тестированию, QA-инженер) — это специалист, который проверяет, соответствует ли программа требованиям и ожиданиям пользователя, находит и описывает дефекты и дает команде объективную картину качества перед релизом. Важная граница: тестирование снижает риск, но не доказывает, что ошибок нет — проверить все комбинации входных данных почти никогда невозможно.
Содержание
- Три термина, которые часто смешивают
- Чем занимается тестировщик: путь одной задачи
- Как выглядит обычный день
- Артефакты: что тестировщик производит
- Пример: от требования к багу
- Виды тестирования: уровни и типы
- Инструменты по направлениям
- Как войти: дорожная карта до портфолио
- Выводы
- Где применяется / связь с практикой
- FAQ
Ниже — что тестировщик делает с задачей от требований до релиза, как выглядит обычный рабочий день, какие документы он производит, какие бывают виды тестирования и с чего начать, если хочется в профессию.
Три термина, которые часто смешивают
| Термин | Что это | Вопрос, на который отвечает |
|---|---|---|
| Тестирование (testing) | Проверка продукта: запуск, сравнение фактического поведения с ожидаемым | «Работает ли это так, как описано?» |
| Контроль качества (QC) | Оценка готового результата по критериям: сколько дефектов, критичны ли они, можно ли выпускать | «Готов ли этот релиз?» |
| Обеспечение качества (QA) | Настройка процесса, чтобы дефектов появлялось меньше: ревью требований, критерии готовности, раннее вовлечение тестирования | «Как не допускать таких ошибок снова?» |
В вакансиях «тестировщик» и «QA-инженер» чаще всего означают одну и ту же роль, и на практике она включает все три уровня в разной пропорции: джун больше тестирует, опытный инженер больше влияет на процесс.
Чем занимается тестировщик: путь одной задачи
Удобнее всего понять работу на одной задаче из спринта, например «добавить выбор количества товара в корзине». Порядок ниже типичный, но не жесткий: в зрелых командах тестировщик подключается уже на обсуждении требований, а часть шагов идет параллельно с разработкой.
- Анализ требований. Читает описание задачи и макеты, ищет пробелы и противоречия: что будет при 0 штук, есть ли верхний предел, что показать при ошибке. Вопросы задает аналитику или владельцу продукта до того, как код написан, — это самый дешевый момент для поиска ошибки.
- Тест-дизайн. Решает, что и как проверять: классы эквивалентности, граничные значения, позитивные и негативные сценарии. Результат — чек-лист или тест-кейсы.
- Подготовка окружения и данных. Нужный стенд, тестовые пользователи, товары с разными остатками, иногда локально поднятые сервисы.
- Выполнение проверок. Проходит сценарии в браузере или на устройстве, смотрит запросы в DevTools, проверяет ответы API и записи в базе данных.
- Баг-репорты. Каждое расхождение с требованием оформляет так, чтобы разработчик воспроизвел его без уточнений.
- Ретест и регрессия. После исправления проверяет сам дефект и соседнюю функциональность, которую правка могла задеть.
- Отчет о состоянии. Сообщает, что проверено, что нет и какие дефекты остались. Решение о выпуске обычно принимает команда или владелец продукта, тестировщик дает ему данные для решения.
Как выглядит обычный день
Расписание сильно зависит от компании, продукта и фазы спринта, поэтому таблица — пример, а не норма.
| Время | Что происходит |
|---|---|
| Утро | Стендап: что проверено вчера, какие блокеры, что ждет тестирования |
| Первая половина дня | Тестирование готовых задач, заведение и уточнение дефектов |
| После обеда | Тест-дизайн для задач следующего спринта, ревью требований с аналитиком |
| Вечер | Ретест исправленных багов, обновление тест-кейсов, статус в трекере |
| Перед релизом | Смоук новой сборки, регрессионный прогон, отчет о рисках |
Артефакты: что тестировщик производит
| Артефакт | Что внутри | Кто читает |
|---|---|---|
| Чек-лист | Короткий список того, что проверить, без шагов | Сам тестировщик, коллеги по команде |
| Тест-кейс | Предусловия, шаги, тестовые данные, ожидаемый результат | Тестировщики, в том числе новые в проекте |
| Баг-репорт | Заголовок, шаги воспроизведения, фактический и ожидаемый результат, окружение, серьезность, вложения | Разработчики, менеджер |
| Тест-план | Что тестируем и что нет, подходы, окружения, критерии начала и окончания | Команда, руководитель |
| Отчет о тестировании | Что пройдено, открытые дефекты, риски релиза | Менеджер, владелец продукта |
Чек-лист и тест-кейс — не конкуренты: чек-лист быстрее писать, тест-кейс надежнее передавать другому человеку. Во многих командах основной формат — чек-листы, а подробные тест-кейсы пишут для критичных сценариев и регрессии.
Пример: от требования к багу
Требование: «В корзину можно положить от 1 до 99 штук одного товара включительно». Тест-дизайн дает три класса эквивалентности (меньше 1, от 1 до 99, больше 99) и граничные значения 0, 1, 2, 98, 99, 100. Ту же проверку тестировщик может пройти руками в интерфейсе, а может записать как небольшой автотест. Код ниже проверен на Python 3.14 и запускается без сторонних библиотек.
# Требование: в корзину можно положить от 1 до 99 штук одного товара включительно.
def is_valid_qty(qty: int) -> bool:
return 1 <= qty < 99 # реализация разработчика
# Граничные значения и по одному представителю классов эквивалентности
cases = [
(0, False), # ниже нижней границы
(1, True), # нижняя граница
(2, True), # сразу над нижней
(50, True), # середина допустимого класса
(98, True), # сразу под верхней
(99, True), # верхняя граница
(100, False), # выше верхней границы
]
failed = 0
for qty, expected in cases:
actual = is_valid_qty(qty)
status = "OK " if actual == expected else "FAIL"
if actual != expected:
failed += 1
print(f"{status} qty={qty:<3} ожидали {expected}, получили {actual}")
print(f"Провалено: {failed} из {len(cases)}")
Фактический вывод: проверка «из середины» (50) проходит, а верхняя граница падает.
OK qty=0 ожидали False, получили False
OK qty=1 ожидали True, получили True
OK qty=2 ожидали True, получили True
OK qty=50 ожидали True, получили True
OK qty=98 ожидали True, получили True
FAIL qty=99 ожидали True, получили False
OK qty=100 ожидали False, получили False
Провалено: 1 из 7
Причина — строгое сравнение < 99 вместо <= 99. Если бы проверяли только «типичное» значение, дефект ушел бы в релиз. Тестировщик оформляет баг-репорт:
Заголовок: Корзина: нельзя добавить 99 шт. товара, хотя по требованию это допустимо
Окружение: тестовый стенд, сборка 1.8.3, Chrome
Шаги:
1. Открыть карточку любого товара с остатком больше 99
2. Ввести количество 99 и нажать «В корзину»
Фактический результат: ошибка «Недопустимое количество»
Ожидаемый результат: в корзине 99 шт.
Серьезность: средняя (граничный сценарий, обходится двумя заказами)
После исправления на 1 <= qty <= 99 тот же прогон печатает «Провалено: 0 из 7». Граница примера: он проверяет только целые числа. Отдельные классы для ручной проверки — пустое поле, текст, дробное число, отрицательное число, вставка из буфера обмена. Их тестировщик добавит в чек-лист, даже если в коде функции проверки типа нет.
Виды тестирования: уровни и типы
Путаница обычно возникает, потому что в одном списке смешивают два разных разреза. Уровень отвечает на вопрос «какой кусок системы проверяем», тип — «какое свойство проверяем». Любой тип можно применить на разных уровнях.
| Уровень | Что проверяется | Кто обычно делает |
|---|---|---|
| Модульное (unit) | Отдельная функция или класс в изоляции | Разработчики |
| Интеграционное | Взаимодействие модулей и сервисов, в том числе через API | Разработчики и тестировщики |
| Системное | Вся система целиком против требований | Тестировщики |
| Приемочное (в том числе пользовательское, UAT) | Решает ли продукт задачу заказчика и выполнены ли критерии приемки | Заказчик, пользователи, владелец продукта; часть проверок — тестировщики |
| Тип | Цель | Когда |
|---|---|---|
| Функциональное | Делает ли система то, что описано | Каждая задача |
| Смоук (дымовое) | Быстро убедиться, что сборка вообще пригодна для тестирования | Каждая новая сборка |
| Регрессионное | Не сломали ли изменения то, что работало | Перед релизом, после крупных правок |
| Нагрузочное и производительности | Время ответа и поведение под нагрузкой | Перед запуском, при росте аудитории |
| Юзабилити | Удобно ли пользователю дойти до цели | Новые сценарии, редизайн |
| Безопасности | Устойчивость к атакам и утечкам | Обычно отдельные специалисты или отдельный этап |
Нагрузочное тестирование и проверки безопасности выполняют только на своих стендах или с письменного разрешения владельца системы: на чужом рабочем сервисе это выглядит как атака.
Инструменты по направлениям
| Направление | Чем пользуется тестировщик |
|---|---|
| Веб | DevTools браузера (сеть, консоль, хранилище), прокси для HTTP(S)-трафика вроде Charles или Fiddler, базовые HTML и HTTP |
| Мобильные приложения | Реальные устройства разных моделей и версий ОС, эмуляторы из Android Studio, симулятор iOS в Xcode |
| API | Postman или аналоги, curl, понимание REST, JSON, кодов ответа HTTP |
| Данные | SQL-запросы, чтобы проверить, что записалось в базу |
| Процесс | Трекер задач (Jira, YouTrack, Яндекс Трекер и подобные), система управления тест-кейсами |
Ручное тестирование — основа профессии, а следующий шаг во многих командах — автоматизация повторяющихся проверок. Подробнее о ручной ветке — в статье QA manual: что это и какие перспективы, а о профессии в целом — в обзоре специальности тестировщика.
Как войти: дорожная карта до портфолио
Цель — не «понять теорию», а собрать папку работ, которую можно показать на собеседовании. Срок зависит от стартовой базы и часов в неделю; ориентир в днях давать бессмысленно.
- Разобраться в базовых понятиях: жизненный цикл дефекта, серьезность и приоритет, классы эквивалентности и граничные значения, уровни и типы тестирования.
- Выбрать учебное приложение или демо-стенд, созданный для практики тестирования, и написать к одной его функции чек-лист на 20-30 пунктов.
- Превратить 8-10 пунктов чек-листа в полноценные тест-кейсы с предусловиями и ожидаемым результатом.
- Найти и оформить 3-5 баг-репортов по шаблону выше, со скриншотами и логами из DevTools.
- Собрать коллекцию запросов к открытому учебному API и проверить коды ответов и поля.
- Написать 5-10 SQL-запросов к учебной базе: выборки с условиями, JOIN, проверка дублей.
- Сложить все в репозиторий или документ с кратким описанием, что и как тестировалось.
Если не получилось
| Симптом | Что сделать |
|---|---|
| Не находится ни одного бага | Идти от границ и негативных сценариев: пустые поля, максимальная длина, двойной клик, потеря сети, назад в браузере |
| Разработчик не может воспроизвести дефект | Добавить окружение, версию сборки, точные данные и видео; проверить, воспроизводится ли на чистом профиле |
| Тест-кейсы получаются огромными | Один кейс — одна проверка; общие шаги вынести в предусловия |
| Непонятно, что проверять в API | Начать с кода ответа, затем схема полей, затем бизнес-значения, затем ошибки при неверном вводе |
Выводы
- Тестировщик ПО сравнивает фактическое поведение программы с требованиями, описывает расхождения и дает команде данные для решения о релизе.
- Работа с задачей идет от анализа требований через тест-дизайн, проверки и баг-репорты к ретесту и регрессии.
- Основные артефакты — чек-листы, тест-кейсы, баг-репорты, тест-план и отчет; хороший баг-репорт воспроизводится без уточнений.
- Виды тестирования удобно делить на уровни (что проверяем) и типы (какое свойство проверяем).
- Для входа в профессию нужен не конспект, а портфолио: чек-лист, тест-кейсы, баг-репорты, запросы к API и SQL.
Где применяется / связь с практикой
Освойте тему на практике
Все, что описано выше, — ежедневная работа тестировщика в продуктовой команде: от вопросов к требованиям до баг-репорта, который разработчик исправляет с первого раза. Системно пройти этот путь с практикой на реальных проектах можно на курсе «Инженер по тестированию», а примерить отдельные темы бесплатно — на открытых уроках Otus.
FAQ
Нужно ли тестировщику уметь программировать?
Для ручного тестирования на старте достаточно понимать HTTP, SQL и логику программ. Программирование становится обязательным при переходе в автоматизацию.
Чем серьезность дефекта отличается от приоритета?
Серьезность описывает влияние на систему, приоритет — очередность исправления. Опечатка на главной странице может быть низкой серьезности, но высокого приоритета.
Можно ли протестировать программу полностью?
Нет: число комбинаций данных, окружений и последовательностей действий почти всегда слишком велико. Поэтому тестировщик выбирает проверки по риску и техникам тест-дизайна.



