Ответ
Нет, не любая ошибка считается багом. Критерием является соответствие поведения системы зафиксированным ожиданиям (требованиям, спецификациям, договорённостям).
Когда ошибка — это баг:
- Функциональность работает не так, как описано в требованиях.
- Нарушены соглашения или стандарты (например, спецификация API, стандарты UI).
- Система не обрабатывает корректно ошибочные или граничные сценарии, которые должны были быть учтены.
# БАГ: Функция не обрабатывает случай деления на ноль, # хотя в требованиях была указана необходимость возврата None. def calculate_ratio(a, b): return a / b # Упадёт с ZeroDivisionError при b=0
Когда ошибка может не быть багом:
- Опечатка в UI (typo): Не влияет на функциональность, может быть классифицирована как косметическая проблема низкого приоритета.
- Проблема внешней зависимости: Сбой сети или стороннего API, если наша система корректно логирует ошибку и восстанавливается.
- Изменение требований: Поведение, которое считалось ошибочным, стало корректным после обновления спецификации.
- Ошибка в тестовых данных или окружении: Проблема не в коде продакшена.
Вывод: Баг — это отклонение от ожидаемого поведения. Если чётких ожиданий нет, сначала необходимо их формализовать.