Rusau LearnВойти

Теория тестирования

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

Ошибку (error, mistake) совершает человек, и из-за неё в требованиях или коде появляется дефект (defect, bug, fault). Когда код с дефектом выполняется, система может дать отказ (failure), то есть повести себя не так, как ожидалось, а сбой – это кратковременный отказ, который проходит сам или после небольшого вмешательства. Улучшения (improvement, enhancement) и запросы на изменение (change request) к дефектам не относятся: они описывают, как сделать лучше то, что работает правильно, или добавить то, чего пока нет.

Мой видеоурок: Ошибки, сбои, отказы, улучшения в тестированииОткрыть на YouTube
Ошибка → дефект → отказ
цепочка из программы ISTQB Foundation Level
Сбой
отказ, который проходит сам или после небольшого вмешательства
Бесплатно
урок с заданиями в моём базовом курсе

Ошибка, дефект и отказ по ISTQB

В программе ISTQB Foundation Level эти понятия связаны в цепочку. Человек совершает ошибку, ошибка вносит дефект в код или в другой рабочий продукт, например в требования, а выполнение кода с дефектом может привести к отказу. Отказ при этом случается не всегда: некоторым дефектам нужны особые входные данные или редкие условия, и проявляются они редко или никогда.

В русском переводе программы 2018 года понятия называются так: ошибка (просчёт), дефект (недочёт, помеха) и отказ. В английском у первых двух есть синонимы, error и mistake, defect, bug и fault, а отказ по-английски failure. В программе 2023 года цепочка осталась прежней.

  • Ошибка (error, mistake)

    Действие человека, которое даёт неверный результат. Пример: с заказчиком договорились, что кнопка будет красной, а аналитик написал в требованиях, что она зелёная.

  • Дефект (defect, bug, fault)

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

  • Отказ (failure)

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

Откуда берутся ошибки и отказы

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

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

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

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

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

Сбой и отказ: в чём разница

Отдельного термина "сбой" в ISTQB нет. В глоссарии есть только failure, и русский перевод программы передаёт его словом "отказ", хотя местами пишет и "сбой". Определения, которые я привожу, совпадают с ГОСТ 27.002-89 "Надёжность в технике". Отказ там назван событием, при котором объект перестаёт быть работоспособным. Сбой – это самоустраняющийся отказ или однократный отказ, который устраняется незначительным вмешательством оператора.

Сбой не так страшен. Пример: в системе перестала открываться страница, разработчик быстро это заметил и поправил. Или пропал свет, после включения система сбоила, но заработала, как только вернули настройки.

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

В баг-трекере вроде Jira из всех этих понятий заводят только дефекты. Ошибки, сбои и отказы отдельными записями не оформляют: тестировщик видит отказ, находит за ним дефект и пишет баг-репорт.

Improvement, enhancement, feature и change request

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

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

  • Improvement (улучшение)

    Функция уже есть, но её можно сделать удобнее. Например, на странице слишком много элементов и часть стоит убрать, кнопку лучше перенести или поменять цвета. Цель в том, чтобы пользователю было удобнее (UX).

  • Enhancement (новая возможность)

    Функции пока нет, но с ней система станет лучше. В этом главное отличие от improvement, которое улучшает уже существующее.

  • Feature (фича)

    Запрос на новую функцию или на расширение существующей. По нему пишут новое требование, пользовательскую историю или раздел спецификации и делят работу на задачи. Обычная иерархия такая: эпик, например аутентификация и авторизация пользователя, делится на фичи, фичи на пользовательские истории (user story), истории на задачи (task) для тестировщика, разработчика, аналитика или дизайнера.

  • Change request (запрос на изменение)

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

Как оформить улучшение

Improvement и enhancement оформляют как баг-репорт с теми же полями, только заголовок нейтральный, без слов о том, что что-то сломано, например "Было бы неплохо улучшить такую-то функцию". В шагах показывают, где находится функция. В фактическом результате описывают, как она работает сейчас, а в ожидаемом – как могла бы работать. Если можете набросать прототип будущего дизайна, хотя бы от руки, приложите его.

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

Запись назначают на тех, кто решает: менеджера проекта или продукта, владельца продукта, аналитика. Её можно и просто добавить в бэклог, чтобы обсудить на груминге (backlog refinement). Улучшение могут взять в спринт, а могут отклонить. У других людей бывает своё видение продукта, а функцию могут скоро убрать, и тогда усилия команды пропадут зря.

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

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

Видеоурок, шпаргалки и задания

Я разбираю ошибки, сбои, отказы и улучшения в уроке курса "Тестировщик с нуля" на YouTube. В бесплатном базовом курсе по тестированию тема идёт уроком "Ошибки, сбои, отказы, улучшения", и после теории в нём есть задания. Для самостоятельной практики советую написать несколько improvement и enhancement для любого сайта.

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

Курсы по теме

Вопросы и ответы

Чем ошибка отличается от дефекта?

Ошибку совершает человек, например аналитик неверно записал требование. Дефект появляется как результат ошибки в коде, требованиях или другом рабочем продукте. Ошибка предшествует дефекту.

Чем дефект отличается от отказа?

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

Чем сбой отличается от отказа?

Сбой – это кратковременный отказ, который проходит сам или после небольшого вмешательства, например перезапуска или возврата настроек. При отказе работоспособность системы нарушена, и её приходится восстанавливать. В ISTQB отдельного термина для сбоя нет, есть только отказ (failure).

Bug, defect и fault – это одно и то же?

Да, в глоссарии ISTQB bug и fault указаны синонимами defect. Error и mistake тоже синонимы и означают ошибку человека, а failure переводится как отказ.

Чем improvement отличается от enhancement?

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

Что такое change request?

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

Посмотреть программы курсов

Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.

Все курсы

Здесь используются cookies: без них сайт не работает, и по ним видно, откуда о платформе узнают.Cookies нужны для входа и учёта переходов. Подробнее