Является ли любая ошибка в программе багом?

«Является ли любая ошибка в программе багом?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, не любая ошибка считается багом. Критерием является соответствие поведения системы зафиксированным ожиданиям (требованиям, спецификациям, договорённостям).

Когда ошибка — это баг:

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

Когда ошибка может не быть багом:

  • Опечатка в UI (typo): Не влияет на функциональность, может быть классифицирована как косметическая проблема низкого приоритета.
  • Проблема внешней зависимости: Сбой сети или стороннего API, если наша система корректно логирует ошибку и восстанавливается.
  • Изменение требований: Поведение, которое считалось ошибочным, стало корректным после обновления спецификации.
  • Ошибка в тестовых данных или окружении: Проблема не в коде продакшена.

Вывод: Баг — это отклонение от ожидаемого поведения. Если чётких ожиданий нет, сначала необходимо их формализовать.