Промах, допущенный человеком при создании кода, называется Error. Ошибка, найденная на этапе тестирования, называется дефектом (Defect). Дефект, который должен быть устранен разработчиком, называется багом (Bug). Если функция не работает, это называется сбоем (Fault). Failure — полный отказ системы.
Понятия Error, Defect, Fault, Bug и Failure
Bug (баг)
Баг — это ситуация, возникающая, когда продукт (приложение) не соответствует утвержденным ранее требованиям. Если где-то в коде допущена ошибка, она провоцирует «поломку» кода, и приложение работает некорректно. Такую ситуацию тестировщики называют багом. Найденный баг может быть воспроизведен, то есть воссозданы условия, при которых он возникает.
Defect (дефект)
Дефект — это ситуация, при которой приложение не работает соответственно требованиям, то есть отличается ожидаемое и действительное поведение продукта.
Error (ошибка)
Error — это ситуация, которая происходит когда разработчики неправильно понимают требования к продукту, и это приводит к багам.
Fault (сбой)
Ситуация, когда приложение не может правильно функционировать. Например, из-за недостатка свободной памяти или места на диске, или невыполнения каких-то нужных действий.
Failure (отказ)
Сочетание дефектов, которые приводят к полному отказу приложения, обычно с потерей данных, в том числе критически важных; система не реагирует на действия пользователя. Обычно такие ситуации происходят редко — перед релизом продукта тестируются возможные сценарии.
Таблица: Bug — Defect — Error — Fault — Failure
Bug (баг) | Defect (дефект) | Fault (сбой) | Error (ошибка) | Failure (отказ) | |
---|---|---|---|---|---|
Описание проблемы | Продукт не работает как должен работать соответственно требованиям | Несоответствие полученного и ожидаемого результата | Состояние приложения, при котором оно не выполняет свою функцию | Ошибка, допущенная в коде, при компиляции или выполнении, из-за которой происходит Fault | Серьезный дефект или их сочетание, приводящее к полному отказу приложения, потере данных и потере управления приложением |
Кто сталкивается | Тестировщики | Находят тестировщики и устраняют разработчики | Пользователи | Тестировщики и разработчики | Тестировщики и пользователи |
Какие типы бывают | Много типов, чаще всего: — Логические баги — Алгоритмические баги — Баги распределения системных ресурсов | — Высокий, средний и низкий приоритет — Критическая, большая, малая и очень низкая серьезность | — Бизнес-логики — Функциональные — Интерфейса — Производительности — Аппаратные | — Синтаксические ошибки — Ошибки в интерфейсе — Ошибки рантайма — Ошибки вычислений — Аппаратные ошибки | Неработоспособность приложения, по разным причинам |
Причины возникновения | — Ошибки в логике приложения — Дефектный код | — Получение и передача некорректных данных, из-за некорректной логики/архитектуры/другие причины | — Неправильная архитектура приложения — Неправильная логика приложения | — Ошибки в коде — Ошибки в логике — Неспособность приложения к компиляции и выполнению — Неправильно понятые требования — Неправильная архитектура приложения | — Некорректные переменные окружения — Системные ошибки — Человеческие ошибки |
Как предотвратить | — Разработка через тестирование (TDD) — И другие современные практики разработки и тестирования, стимулирующие «чистоту кода» | — Внедрение современных практик разработки — Правильное применение существующих практик | — Проверка кода и требований другими участниками команды — Тщательная верификация архитектуры и кода | — Проверка кода другими участниками команды — Валидация багфиксов | — Повторное тестирование — Тщательное сквозное тестирование — Проверка требований/спецификаций — Категоризация ошибок и проблем |