Manual Testing

БЛОК 1. Основы тестирования — 1. Введение в тестирование

📚 21 вопросовПройти тест →
Лекция

БЛОК 1. Основы тестирования — 1. Введение в тестирование

Manual Testing

1. Введение в тестирование

🧭 Введение: почему тестирование это не «покликать кнопки»

Когда человек впервые слышит про QA, часто кажется, что задача простая: открыть экран, нажать пару кнопок и сказать «работает» или «не работает». На практике тестирование устроено иначе. Это способ управлять рисками продукта до релиза, чтобы команда понимала, где система уязвима и что нужно исправить в первую очередь.
Тестирование не доказывает, что продукт идеален. Оно помогает команде принимать решения на фактах: что уже достаточно стабильно, что рискованно, и что выпускать нельзя.
💡 Совет: Смотрите на тестирование как на инструмент принятия решений по качеству, а не как на поиск «всех багов на свете».
Вывод: Тестирование нужно, чтобы снижать риски релиза и делать поведение продукта предсказуемым для пользователей и бизнеса.

⚠️ Проблема -> решение

Без системного тестирования команда часто живет в режиме «исправляем уже в проде». Пользователь находит дефект первым, поддержка получает жалобы, разработка уходит в срочные фиксы, а доверие к продукту падает.
Решение — встроить тестирование в обычный рабочий поток: от требования до релиза. Тогда дефекты находят раньше, стоимость исправления ниже, а релизы выходят стабильнее.
🟢 Если совсем просто: Тестирование уменьшает количество неприятных сюрпризов после релиза.
🎯 Как понять, что этап прошёл успешно: Перед релизом у команды есть понятная картина рисков и список проверок с прозрачным результатом.

🛠️ Чем помогает и как работает

Тестирование помогает не только найти дефект, но и понять, насколько продукт готов к выпуску. QA превращает «ощущения» в проверяемые факты.
Как это работает:
  • Шаг 1: QA получает задачу и проверяет, что требования понятны.
  • Шаг 2: QA выделяет ключевые сценарии: основной поток, негативные проверки, границы.
  • Шаг 3: Выполняет проверки и фиксирует фактический результат.
  • Шаг 4: Если найдено отклонение, оформляет баг так, чтобы его можно было воспроизвести.
  • Шаг 5: После фикса повторяет проверку и делает короткий regression рядом с изменением.
  • Шаг 6: Перед релизом команда смотрит на суммарные риски и принимает решение.
Вывод: Тестирование — это цикл проверки и обратной связи, который защищает релиз от предсказуемых проблем.

📚 Ключевые термины (простыми словами)

  • Тестирование (testing) — проверка продукта на соответствие ожиданиям и требованиям.
  • Ошибка (error) — неправильное действие человека (например, аналитика, разработчика, тестировщика).
  • Дефект (defect) — технический изъян в артефакте (требование, код, конфиг, дизайн).
  • Баг (bug) — дефект, который проявился в работе системы.
  • Ожидаемый результат (expected result) — поведение, которое должно быть по требованию.
  • Фактический результат (actual result) — поведение, которое получилось в реальности.
  • Риск (risk) — вероятность и цена проблемы для пользователя или бизнеса.

1. Цель тестирования — управление рисками, а не поиск идеала

Главная мысль, которую важно зафиксировать в самом начале: тестирование не может доказать «полную безошибочность». Но оно может показать, насколько текущая версия безопасна для релиза.
🟢 Если совсем просто: Цель тестирования — не «поймать всё», а вовремя найти самое критичное.
🎯 Как понять, что этап прошёл успешно: Команда понимает, какие риски закрыты, а какие осознанно оставлены до следующего релиза.
Назначение: Помочь команде принимать обоснованное решение о готовности фичи к выпуску.
Простыми словами: QA показывает, где продукт может «сломаться» для пользователя и насколько это критично.
Для новичка: Если вы проверили только красивый happy path и не проверили ошибки пользователя, вы не выполнили цель тестирования.
Аналогия: Перед полетом самолет проходит проверку не для того, чтобы гарантировать «идеальный мир», а чтобы снизить риск аварийных сценариев до приемлемого уровня.
Пример:
Фича: регистрация пользователяПроверено: успешная регистрация, пустые поля, невалидный email, повторный emailРиск: средний, если SMS-подтверждение временно недоступноРешение: релиз возможен, но с ограничением и мониторингом
🔎 Как это происходит на практике: QA не просто говорит «есть баг» или «нет багов». Он формирует картину: какие сценарии проверены, где найдены дефекты, и чем это грозит бизнесу после релиза.
Характеристики:
  • ✅ Фокус на рисках, а не на количестве найденных багов.
  • ✅ Приоритизация: критичное проверяется первым.
  • ✅ Результат тестирования связывается с решением о релизе.
Когда использовать: Всегда, особенно перед релизом, hotfix и крупными изменениями в бизнес-логике.
Вывод: Хорошее тестирование помогает принимать решения, а не просто собирать список ошибок.

2. Ошибка, дефект, баг — это цепочка, а не одинаковые слова

Новички часто используют эти термины как синонимы. Это мешает анализу причин и ухудшает коммуникацию в команде. В реальной работе важно отделять источник проблемы от её проявления.
🟢 Если совсем просто: Сначала человек ошибся, потом в системе появился дефект, и уже потом пользователь увидел баг.
🎯 Как понять, что этап прошёл успешно: В баг-репорте и обсуждении команда использует термины осознанно и понимает корневую причину.
Назначение: Сделать разбор проблем точнее и ускорить исправление.
Простыми словами: Когда мы различаем error/defect/bug, нам проще понять, что именно исправлять: процесс, требование или код.
Для новичка: Если в задаче написано «баг», спросите себя: это баг в интерфейсе, дефект в коде или ошибка в самом требовании?
Аналогия: Ошибка повара в рецепте, дефект в блюде, жалоба гостя — баг, который заметили снаружи.
Пример:
Error: в требовании не указали ограничение на длину поля.Defect: разработчик не добавил валидацию длины в API.Bug: пользователь отправил 500 символов и получил 500 Internal Server Error.
🔎 Как это происходит на практике: После обнаружения бага QA вместе с командой разбирает источник. Если причина в неясном требовании, команда добавляет проверки в процесс анализа, а не только чинит конкретный экран.
Характеристики:
  • ✅ Помогает найти корневую причину, а не лечить симптом.
  • ✅ Улучшает качество ретро и postmortem.
  • ✅ Делает коммуникацию QA/Dev/BA точнее.
Когда использовать: При triage багов, на ретроспективе и при анализе повторяющихся дефектов.
Вывод: Разделение терминов экономит время команды и снижает повторяемость одних и тех же проблем.

3. Тестирование начинается до кода

Многие приходят в QA с мыслью: «вот когда разработчик сделал фичу, тогда и начну тестировать». На практике сильный QA включается раньше: на уровне требований.
🟢 Если совсем просто: Чем раньше нашли проблему, тем дешевле её исправить.
🎯 Как понять, что этап прошёл успешно: До начала разработки у задачи уже есть понятные критерии приёмки и закрытые неоднозначности.
Назначение: Снизить количество дефектов, которые рождаются не в коде, а в неясных требованиях.
Простыми словами: QA помогает сделать задачу тестопригодной ещё до того, как написана первая строка кода.
Для новичка: Если требование нельзя проверить однозначно, тестировать будет больно и долго. Сначала уточните условие.
Аналогия: Если строить дом по расплывчатому чертежу, брак почти гарантирован.
Пример:
Неплохо: "Кнопка должна работать быстро."Хорошо: "После клика кнопка отправляет форму не дольше 2 секунд при 95% запросов."
🔎 Как это происходит на практике: QA задаёт уточняющие вопросы до разработки, фиксирует acceptance criteria и только потом собирает проверки. Это уменьшает количество «спорных» багов после готовности задачи.
Характеристики:
  • ✅ Shift-left подход: проверка начинается раньше.
  • ✅ Меньше ложных багов и переделок.
  • ✅ Быстрее цикл delivery.
Когда использовать: На grooming/refinement, before-start и во время согласования acceptance criteria.
Вывод: Самые дешевые дефекты — те, которые нашли до написания кода.

🗺️ Карта тестирования: Functional / UI / API

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

1) Functional testing (функциональное тестирование)

Фокус:
Бизнес-правила и поведение фичи относительно требований.
Пример:
Регистрация создаёт пользователя с валидными данными и возвращает ошибки валидации для невалидных данных.

2) UI testing (интерфейсное тестирование)

Фокус:
Визуальные элементы, состояния полей, поведение кнопок, подсказки и пользовательский поток на экране.
Пример:
Кнопка Зарегистрироваться остаётся неактивной, пока не заполнены обязательные поля.

3) API testing (тестирование API)

Фокус:
Контракт запрос/ответ, HTTP-статусы, ошибки валидации и структура payload.
Пример:
POST /api/register возвращает 201 для валидного payload и 400 для невалидного email.
Кратко:
Functional = корректная логика, UI = корректное поведение интерфейса, API = корректный обмен данными между сервисами.

🔁 Сравнение: ошибка vs дефект vs баг

ПонятиеГде возникаетКто чаще замечаетЧто делать
Ошибка (error)В мышлении или действии человекаКоманда при анализеУлучшать процесс и уточнять требования
Дефект (defect)В артефакте: код, требование, конфигQA/Dev/Code ReviewИсправлять источник дефекта
Баг (bug)В поведении продуктаQA или пользовательВоспроизводить, фиксировать, чинить, ретестить

✅ Must-Know

  • Тестирование не доказывает отсутствие всех дефектов.
  • QA отвечает не за «идеальный продукт», а за прозрачную картину рисков.
  • Ожидаемый и фактический результат всегда фиксируются явно.
  • «Ошибка», «дефект», «баг» — разные сущности и их нельзя смешивать.
  • Хороший результат тестирования — воспроизводим и полезен для решения о релизе.
  • Чем раньше QA включается в задачу, тем дешевле исправления.
  • Проверки без связи с требованиями дают слабую ценность.

❌ Частые мифы

Миф: Тестирование — это только финальная проверка перед релизом.
Как правильно: Тестирование начинается на этапе требований и продолжается до релиза.
📎 Почему это важно: Именно ранний этап даёт максимальную экономию времени и снижает риск дорогих переделок.
Миф: Если багов не нашли, значит продукт идеален.
Как правильно: Отсутствие найденных багов означает только, что в рамках текущего покрытия критичных проблем не обнаружено.
📎 Почему это важно: Тестирование всегда ограничено временем, данными и выбранными сценариями.
Миф: QA и Tester — это всегда одно и то же.
Как правильно: Tester чаще фокусируется на проверках, QA шире смотрит на процесс обеспечения качества.
📎 Почему это важно: Такой взгляд помогает не только ловить баги, но и уменьшать их появление в будущем.
Миф: Главная метрика QA — количество найденных багов.
Как правильно: Главная ценность QA — качество обратной связи и снижение релизных рисков.
📎 Почему это важно: Можно найти много мелких багов и пропустить один критичный, который сломает бизнес-сценарий.

❓ Часто спрашивают на собеседованиях

Вопрос: Чем тестирование отличается от отладки? ✅ Ответ: Тестирование находит и фиксирует проявление проблемы, а отладка ищет и устраняет причину в коде.
Вопрос: Можно ли доказать тестированием, что багов нет? ✅ Ответ: Нет, можно только снизить неопределённость и показать уровень риска на основе выполненных проверок.
Вопрос: Что важнее: найти много багов или закрыть критичные риски? ✅ Ответ: Закрыть критичные риски, потому что они напрямую влияют на пользователей и бизнес.
Вопрос: Почему QA должен участвовать в анализе требований? ✅ Ответ: Потому что часть будущих дефектов рождается из неясных требований, и их дешевле убрать до разработки.
Вопрос: Что такое expected result в тест-кейсе? ✅ Ответ: Это заранее зафиксированное поведение системы, с которым сравнивают фактический результат.
Вопрос: Что делать, если требование двусмысленное? ✅ Ответ: Зафиксировать вопрос, уточнить ожидание у BA/PO и только потом запускать проверки.

⚠️ Типичные ошибки

Ошибка 1: проверять только happy path

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

Ошибка 2: не фиксировать preconditions

Неправильно: Писать «не работает», не указывая в каких условиях запускался тест.
Правильно: Фиксировать окружение, роль пользователя, входные данные и шаги.
Почему: Без контекста баг сложно воспроизвести и исправить.

Ошибка 3: путать дефект в требовании с дефектом в коде

Неправильно: Сразу назначать баг на разработчика без анализа источника.
Правильно: Сначала определить, где причина: в требовании, реализации или данных.
Почему: Это сокращает лишние циклы «перекидывания» задачи между ролями.

Ошибка 4: считать тестирование «проверкой ради проверки»

Неправильно: Выполнять шаги без связи с рисками релиза.
Правильно: Понимать бизнес-критичность сценариев и приоритизировать проверки.
Почему: Так QA влияет на реальное качество релиза, а не только на отчёт.

Ошибка 5: писать баг-репорт без ожидаемого результата

Неправильно: Описывать только «что сломалось».
Правильно: Всегда указывать expected и actual result.
Почему: Это убирает двусмысленность и ускоряет исправление.

🧩 Best Practices

  • Начинайте анализ задачи с цели пользователя и бизнес-риска.
  • Уточняйте критерии приёмки до старта разработки.
  • Держите проверки воспроизводимыми: шаги, данные, окружение.
  • Разделяйте severity и priority в обсуждении дефектов.
  • Проверяйте не только «работает», но и «что будет при ошибке».
  • После фикса делайте короткий targeted regression.
  • Храните QA-артефакты так, чтобы их могла использовать вся команда.
  • Формулируйте вывод тестирования языком решений, а не эмоций.

🧭 Заключение

Введение в тестирование — это фундамент всей QA-практики. Если на этом уровне понять цель тестирования, терминологию и связь с рисками, дальше будут легче и тест-дизайн, и баг-репорты, и работа с релизами.
Вывод: Сильный QA — это человек, который не просто «ищет баги», а помогает команде выпускать стабильный продукт осознанно и предсказуемо.
🎯

Проверьте знания

Закрепите материал — пройдите тест по теме «БЛОК 1. Основы тестирования — 1. Введение в тестирование»

Пройти тест →