Баланс между
качеством и дедлайном

Что такое баг

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

Баги веселятся

Определение бага

Баг (англ. bug) - это ошибка, дефект или непредвиденное поведение программы, из-за которого она работает не так, как ожидалось. Это может быть сбой, неправильный результат или даже критическая уязвимость.

Простыми словами, баг - это несоответствие реального поведения программы её требованиям или ожиданиям пользователей.

Примеры багов:

  • Кнопка «Добавить в корзину» на сайте не работает.
  • Калькулятор вместо 2 + 2 = 4 выдаёт 5.
  • Приложение вылетает при попытке открыть файл.
  • Пароль отображается в открытом виде, а не скрывается символами ****.
  • Оплата проходит дважды при одном нажатии.

Почему возникают баги?

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

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

Классификация багов

Баги можно разделить на несколько категорий в зависимости от их природы и влияния на систему.

По степени критичности:

  • Блокирующий (blocker) - делает невозможным дальнейшую работу с программой (например, приложение не запускается).
  • Критический (critical) - вызывает серьёзные сбои или потерю данных (например, оплата проходит, но деньги не зачисляются).
  • Высокий (high) - влияет на основные функции приложения, но не делает его полностью неработоспособным (например, поиск на сайте не выдаёт результаты).
  • Средний (medium) - вызывает неудобства, но не мешает работать (например, кнопка расположена некорректно).
  • Низкий (low) - косметические дефекты, не влияющие на функциональность (например, опечатка в тексте).

По типу ошибки:

  • Функциональные - программа не выполняет то, что должна.
  • UI-баги - ошибки в интерфейсе (неправильный шрифт, съехавшие кнопки и т. д.).
  • Логические - ошибки в алгоритмах (например, скидка на товар рассчитывается неверно).
  • Производительность - программа работает слишком медленно или не выдерживает нагрузку.
  • Безопасность - уязвимости, которые могут привести к утечке данных или взлому.
  • Локализация - ошибки перевода или отображения текста.

Баг или фича?

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

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

Жизненный цикл бага

Каждый найденный баг проходит через несколько этапов:

  • Обнаружение - тестировщик находит ошибку.
  • Формирование отчёта - записывает баг в систему (например Jira).
  • Анализ - разработчик изучает причину ошибки.
  • Исправление - баг устраняется в коде.
  • Повторное тестирование - тестировщик проверяет, действительно ли баг исправлен.
  • Закрытие - если ошибка больше не воспроизводится, баг помечается как закрытый.

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