Разница между ошибкой (багом) и дефектом (тоже багом)

Автор: | 12.01.2009

Очередной сайт «Software Quality Assurance Interview Questions and Answers» подкинул то, над чем я когда-то искренне смеялся:

20. What is Bug?

A fault in a program which causes the program to perform in an unintended or unanticipated manner.

20. What is Defect?

If software misses some feature or function from what is there in requirement it is called as defect.

Причина смеха: это же взаимозаменяемые понятия.

Но, с точки зрения грамматики, разница есть.

Толковый словарь говорит, что разница в терминах есть:

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

По этим выкладкам, наиболее близкий перевод для ‘bug’ > ‘ошибка’.

Дефект = ошибка?

Нет. Сам по себе дефект не ошибка. Дефект возникает как следствие ошибки. Но они сопутствуют друг другу, поэтому могут быть восприняты совместно.

В чем же их синонимность?

Ошибка:

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

Недостаток:

изъян, недосмотр, недочет, неисправность, неправильность, несовершенство, грех, порок, порча, повреждение, пробел, прореха, пятно, аномалия, дефект, слабость, слабое (больное) место, ахиллесова пята.

Следовательно,

> Ошибка

> > Недостаток

> > > Дефект.

Рассматривать эти термины совместно — можно. Подменять — нет.

Баг = ошибка = дефект — в зависимости от контекста.

Добавим перцу

и поговорим как английские лорды с милордами о той же пошаговой стратегии определения терминов:

Mistake

Ошибка. Человеческое деяние, которое в конечном итоге привело к получению неверного результата.

Сказал бы  «неожиданного», но это уводит нас в другой контекст.

В широком смысле — непреднамеренное отклонение от истины или правил.

Оригинал: A human action that produces an incorrect result.

Fault

Дефект, изъян. Неверный шаг (или процесс, или определение данных) в компутерной программе. Первая причина для появления ошибки, потенциальная причина неисправности.

Оригинал: An incorrect step, process, or data definition in a computer program. The outgrowth of the mistake, potentially leads to failure.

Failure

Неисправность. Неправильный результат. Собственно, результат дефекта.

Оригинал: An incorrect result. The result of the fault (e.g. a crash).

Error

Невозможность выполнить задачу (или получить верный результат) вследствие того, что где-то случилась ошибка, которая привела к дефекту, который вызвал неисправность, которая привела к невозможности сделать то, чего мы тут намеревались (евангелие от Антивируса, стих 256, строка 00).

Оригинал: A failure to complete a task, usually involving a premature termination.

Есть еще один распространенный вариант» The amount by which the result is incorrect, но внятно перевести это на русский я не могу. Что-то вроде «насколько неправилен результат»…

Разница между ошибкой (багом) и дефектом (тоже багом): 20 комментариев

  1. Alexei Barantsev

    Алексей, а ты не рассматриваешь возможность того, что в этом “Software Quality Assurance Interview Questions and Answers” лажа написана?
    Толковый словарь, который ты процитировал (не знаю, какой именно) даёт весьма неплохое трактование терминам «дефект» и «ошибка».
    А вот этот самый «bug», что по-русски, что по-английски — ну фигня фигнёй, чес-слово.

  2. Алексей Лупан

    Сначала рассмотрел.
    Потом слегка заколебался (от «колебаться при выборе»).
    В русском языке термины «ошибка» и «дефект» подразумеваются как отдельные, хотя используются совместно и даже взаимоподменяются.
    Попытался найти системность и источник разночтений между «ошибка» и «дефект». Если судить по моим шагам, то, вроде бы, причина разночтений этих терминов и момент, в котором они «сходятся», раскрыт.
    Словарь: Explanatory (Ru-Ru) (for ABBYY Lingvo 12)
    The Comprehensive Dictionary of the Contemporary Russian Language. © 2006, T.F. Yefremova. 180,000 entries.

  3. Алексей Лупан

    То есть, я склоняюсь к тому, что под «багом» подразумевается, в первую очередь, наличие ошибки, которое привело к дефекту.

  4. Алексей

    Приведу цитату из «Certified tester / Foundation Level Sylabus» version 2007, ISTQB
    1.1.2 Couses of software defects
    A human being can make an error (mistake), which produces a defect (fault, bug) in the code, in software or a system, or in a document. If a defect in code is executed, the system will fail to do what it should do (or do something it souldn’t), causing a failure. Defects in software, systems or documents may result in failures, but not all defects do so.

  5. Алексей Лупан

    Что-то меня переводы слова fault не вдохновляют.
    I.
    Computers (En-Ru) (for ABBYY Lingvo 12)
    The English-Russian Dictionary of Computers, Internet, and Programming. © E.M. Proydakov, L.A. Teplitsky, 1998-2006. 13,800 entries.
    fault — неисправность, отказ, ошибка, сбой; дефект, повреждение; выход из строя любое условие, вызывающее частичную или полную неработоспособность или неправильное функционирование аппаратных средств
    См. также: bug , error , failure , fault avoidance , fault detection , fault isolation , fault management , fault masking , fault resiliency , fault tolerance , malfunction , MTBF
    II.
    Engineering (En-Ru) (for ABBYY Lingvo 12)
    The English-Russian Dictionary of Mechanical Engineering and Industrial Automation. © RUSSO, 2003, B.S. Voskoboinikov, V.L. Mitrovich. 110,000 words and expressions.
    fault
    1) неисправность; повреждение
    2) дефект; порок; изъян
    3) ошибка; погрешность
    4) сбой; отказ
    И тут, и там, fault — и дефект, и ошибка…

  6. Alexei Barantsev

    Не смотри на переводы, читай английский толковый словарь. Объяснение в ISTQB хорошее.
    Ошибка (error или mistake) — это акт программиста (человека, human being), который приводит к появлению дефекта (defect) в программе. И этот дефект там живёт, может быть долго, и всё хорошо, но в какой-то момент случается сбой (fault или failure).
    Сбой — это видимое проявление дефекта. А дефект — это результат ошибки, совершённой программистом.
    То, что иногда термины взаимозаменяются, определяется тем, что человеческий язык гибок, неформален, и понимание смысла слова определяется не только им самим, но также контекстом. Так что можно говорить, что «программист сделал ошибку», «в программе есть ошибка (в смысле дефект)» и «при работе программы случилась ошибка (в смысле сбой)» — из контекста ясно, что имеется в виду.

  7. brezenix

    Я классифицирую так:
    Ошибка — баг, который проявляется и в текущей (тестируемой) версии, и в предыдущей.
    Дефект — баг, который проявляется только в тестируемой.

  8. Alexei Barantsev

    brezenix — такое употребление терминов запросто может привести к непониманию, если специально не объяснить слушателям или читателям, что имеется в виду.
    Не лучше ли просто говорить, например, «старый дефект» и «новый дефект», ну или как-то примерно так?
    (Кстати, а если дефект проявляется в текущей версии, в предыдущей не проявляется, а две версии тому назад проявлялся — тогда как его назвать? 🙂 )

  9. brezenix

    Это дает возможность определить качество тестирование. Большее количество ошибок говорит о том, что тестировщики их пропустили. Вообщем, для отчетности и статистики.
    |Кстати, а если дефект проявляется в текущей версии, в |предыдущей не проявляется, а две версии тому назад |проявлялся — тогда как его назвать?
    Эт глюк 🙂
    Если серьезно, то тут нужно смотреть в каком именно функционале он проявляется и делались ли в этом участке изменения в коде, и уже в зависимости от этого классифицировать.

  10. Nicky

    Приветствую.
    Для меня эти два бага различаются примерно так (если очень грубо описать):
    если не работает или работает плохо = дефект.
    а если работает, но не правильно = ошибка.

  11. Alexei Barantsev

    Ну раз уж это для статистики, то нет большого смысла разделять только на два класса, лучше ввести числовую метрику — срок жизни дефекта, единица измерения количество билдов/релизов/версий, которые этот дефект пережил, и построить график.
    Что касается употребления терминов, у меня всегда стандартный ответ — в своей команде можно договориться называть что угодно как угодно, потому что все «в теме». Главное — не нарваться на проблемы при общении с внешними людьми, которые не знают о ваших договорённостях.

  12. oldyew

    и еще немного перца для афтора:)
    а где же в финальной классификации место для термина BUG?

  13. oldyew

    если исходить из природы багов (история про бабочку в схеме), то она бабочка, будет являться чем?
    идея — правильная
    воплощение (схема) — работает
    !в схеме залипает бабочка
    ->возникает неисправность->и невозможность выполнить задачу
    и мы приходим к тому, что в системе не была предусмотрена валидация на бабочку… таки-да!
    и что самое забавное, баг — это не то, что стало следствием, а то что было причиной:) незапланированный вариант использования системы…
    что скажете?

  14. Алексей Лупан

    Баг — очень общий термин, культурный вариант ответа на «Wtf?»
    Пример:
    — It doesn’t work! Nothing works! Wtf?
    — It’s a bug.
    А дальше уже можно разбираться, что это конкретно — ошибка, дефект, неисправность.
    Бо «Nothing works!» может иметь очень много причин 🙂

  15. oldyew

    тогда тема поста, на основе заголовка не раскрыта 🙁
    вывода нет…

  16. Алексей Лупан

    Как так — вывода нет?
    Ошибка
    > > Недостаток
    > > > Дефект.
    Рассматривать эти термины совместно — можно. Подменять — нет.
    Баг = ошибка = дефект — в зависимости от контекста.

  17. oldyew

    т.е. все проблемы — это баги (насекомые), но в зависимости от места в системе, это или бабочки, или жуки, или стрекозы, так?
    или по другому —
    customer view — it’s a bug aka defect
    solution architect view — it’s a mistake
    manager view — it’s a failure
    developer view — it’s a fault
    tester view — it’s an error

Добавить комментарий