Термин · Глоссарий B2B-ПО

ошибка (Bug)

Ошибка (Bug) в программном обеспечении – дефект кода, конфигурации или документации, приводящий к некорректному поведению системы: неверным результатам, неожиданному завершению работы или нарушению требований. Термин восходит к 1947 году, когда настоящий жук (мотылёк) вызвал сбой в компьютере Harvard Mark II.

Буква «О» В категориях: 5 Платформ: 6+

Введение

Bug (программная ошибка, дефект) – любое несоответствие между фактическим поведением программной системы и ожидаемым, определённым в спецификации или разумных пользовательских ожиданиях. Это может быть синтаксическая ошибка, предотвращающая компиляцию; логический дефект, дающий неверные результаты; утечка памяти, постепенно деградирующая производительность; или race condition в многопоточном коде.

Историческая этимология: 9 сентября 1947 года инженеры Harvard University зафиксировали в журнале компьютера Harvard Mark II буквально «bug» – мотылька, застрявшего в реле и вызвавшего сбой. Грейс Хоппер прикрепила насекомое в журнал с пометкой «First actual case of bug being found». Однако в переносном смысле «bug» для обозначения неисправности использовался ещё Томасом Эдисоном в 1878 году.

История и контекст

С развитием промышленной разработки ПО управление дефектами превратилось в самостоятельную дисциплину. Первые баг-трекеры (GNATS, Bugzilla, 1998) стандартизировали жизненный цикл дефекта. Bugzilla, созданный Mozilla, долгое время был стандартом индустрии. В 2000-х на смену пришли интегрированные ALM-платформы: JIRA, Redmine, Azure DevOps.

Метрики качества ПО – плотность дефектов (defect density), MTTR (Mean Time To Repair), escape rate – стали обязательными в CMMI и ISO/IEC 25010 процессах качества.

Как это работает

Классификация дефектов:

  • Синтаксические – нарушения грамматики языка, обнаруживаемые на этапе компиляции.
  • Логические – алгоритм работает, но даёт неверный результат.
  • Рантайм – ошибки, проявляющиеся только при выполнении (NullPointerException, деление на ноль).
  • Ошибки многопоточности – race condition, deadlock, livelock.
  • Ошибки производительности – утечки памяти, N+1 запросы к БД.
  • Ошибки безопасности – XSS, SQL injection, buffer overflow.

Жизненный цикл дефекта: New → Open → Assigned → In Progress → Fixed → Verified → Closed (или Reopened).

Где применяется

  • Разработка ПО – баг-трекинг в Jira, Redmine, YouTrack, GitLab Issues.
  • QA/тестирование – регистрация, приоритизация и верификация исправлений.
  • SRE/DevOps – production bug через incident management (PagerDuty, OpsGenie).
  • Безопасность – CVE (Common Vulnerabilities and Exposures) как стандартная система учёта уязвимостей-дефектов безопасности.

Преимущества и ограничения

Систематический подход к управлению дефектами (баг-трекинг, метрики, SLA на исправление) повышает качество ПО и предсказуемость выпусков. Root Cause Analysis позволяет устранять системные причины, а не симптомы. Ограничения: невозможно гарантировать отсутствие дефектов в нетривиальном ПО; стоимость исправления экспоненциально растёт с продвижением дефекта по жизненному циклу (дефект в продакшене стоит в 100 раз дороже, чем найденный на этапе code review).

Связь с другими понятиями

Bug тесно связан с automated testing (автоматизированное тестирование), code review и практиками CI/CD. Инструменты статического анализа (SAST) и динамического анализа (DAST) специализированы на обнаружении определённых классов дефектов. В области безопасности дефекты классифицируются по CWE (Common Weakness Enumeration) и CVE.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «ошибка».

Платформы класса «ошибка»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

MO

Moon

Разработка ПО
Moon - platforma avtomatizirovannogo testirovaniya veb-prilozheniy v nastol'nykh i mobil'nykh brauzerakh po pr...
Цена по запросу
★ 4.2
Подробнее →
PV

Platform V Works::TestCulture

Тест-менеджмент
Platform V Works::TestCulture — многофункциональный инструмент от СберТех для управления тестовыми сценариями,...
Цена по запросу
Подробнее →
Подсистема тестирования
Цена по запросу
Подробнее →
Онколинк

Онколинк

Разработка ПО
Платформа для управления онкологическими пациентами и координации медицинского обслуживания. Входит в Единый р...
Цена по запросу
Подробнее →
Модуль обмена C3D Converter

Модуль обмена C3D Converter

Разработка ПО
Модуль обмена C3D Converter отвечает за чтение и запись 3D-моделей в файлах нейтральных форматов и в собственн...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «ошибка».

Где применяется

Отрасли, в которых «ошибка» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про ошибка

Откуда произошло слово 'bug' в программировании?

9 сентября 1947 года в компьютере Harvard Mark II обнаружили буквального жука – мотылька в реле. Грейс Хоппер зафиксировала его в журнале как первый реальный 'bug'. В переносном смысле термин использовался ещё Эдисоном в 1878 году.

Чем bug отличается от error и defect?

Defect – общий термин для любого несоответствия требованиям. Bug – неформальный синоним defect в коде. Error – ошибка человека (разработчика), приводящая к дефекту. Fault – проявление дефекта в системе.

Что такое race condition?

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

Как приоритизируются дефекты?

По двум измерениям: Severity (серьёзность последствий: Critical/Major/Minor/Trivial) и Priority (срочность исправления). Критический дефект в продакшене имеет и высокую серьёзность, и высокий приоритет.

Что такое regression bug?

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