Ошибка, дефект и отказ: в чём разница

Разбираем цепочку «человек ошибся → в коде дефект → система отказала» и учимся не называть багом всё подряд.

В команде нужно говорить на одном языке — иначе обсуждение превращается в «у меня всё работает» против «а у меня нет». Международный словарь тестирования (ISTQB) даёт три разных слова там, где новичок обычно использует одно — «баг».

Цепочка: ошибка → дефект → отказ

ТерминЧто этоПример
Ошибка (error, mistake)Действие человека, приведшее к неверному результатуРазработчик неверно понял требование «скидка от 5 000 ₽»
Дефект (defect, bug, fault)След ошибки в артефакте: коде, требовании, макете, тест-кейсеВ коде написано total > 5000 вместо total >= 5000
Отказ (failure)Внешне наблюдаемое неправильное поведение системыЗаказ ровно на 5 000 ₽ оформляется без скидки

Важное следствие: дефект может существовать и не приводить к отказу. Пока никто не оформит заказ ровно на 5 000 ₽, никто ничего не заметит. Именно поэтому тестировщик целится в граничные значения, а не в «обычные» данные — там дефекты и живут.

🎯 Что это даёт на практике

Когда вы пишете баг-репорт, вы описываете отказ (что видно) и условия его появления. Искать дефект в коде — работа разработчика. Не пытайтесь угадать причину в заголовке репорта: «не работает валидация на бекенде» может оказаться неправдой и уведёт починку не туда.

Дефект бывает не только в коде

Самые дорогие дефекты живут в требованиях. Примеры из реальной жизни:

Дефект, улучшение и вопрос

Три разных типа задач, которые новички валят в одну кучу:

⚠️ «Не воспроизводится» — не приговор

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

Отдельно: severity и priority — не одно и то же

Забегая вперёд (подробно — во втором модуле): серьёзность отвечает на вопрос «насколько сломано», приоритет — «когда чинить». Опечатка на главной странице — Trivial по серьёзности, но чинится сегодня, потому что её видят все. Падение при экспорте отчёта в редком формате — Critical по серьёзности, но подождёт до следующего спринта, если этим пользуются два клиента.

Мини-практика

Прочитайте три ситуации и мысленно разложите их по полочкам «ошибка / дефект / отказ»:

  1. Аналитик забыл описать поведение при отмене уже оплаченного заказа → в коде нет ветки на этот случай → пользователь нажимает «Отменить» и получает белый экран.
  2. Дизайнер нарисовал кнопку 44 px, разработчик сделал 32 px → на телефоне в кнопку тяжело попасть пальцем.
  3. Тестировщик неверно понял требование и завёл баг на корректное поведение → разработчик потратил день на разбирательство.

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

Это урок из курса «Ручной тестировщик»

В курсе 47 уроков и 36 тренажёров: тест-дизайн, вёрстка и UX, DevTools, API, SQL, Git и работа со стендом. Несколько уроков открыты бесплатно после регистрации.

Открыть бесплатные уроки Программа курса