Bag ошибка bug или

Баг (bug) – это ошибка в коде или в работе программы. Разработчики описывают этим сленговым словом ситуацию, когда что-то работает неправильно, выдает неверный или непредсказуемый результат.

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

Программу с багами называют забагованной. А отладку кода – дебаггингом, то есть избавлением от багов.

Слово bug в переводе с английского означает «жук». Оно пришло в программирование из сленга инженеров, которые называли багами ошибки при работе электронных схем. А в 1947 году создательница первого компилятора Грейс Хоппер обнаружила в компьютере Mark II бабочку, закоротившую контакты. В журнале происшествий написали: «Первый случай, когда был найден настоящий баг». Так термин закрепился в компьютерной сфере.

Рукописная запись с багом, то есть с жуком
Сейчас записи вместе с бабочкой находятся в Национальном музее американской истории

Где встречаются баги

В разработке и тестировании. Разработчики регулярно сталкиваются с багами: современные программные продукты – сложные, а в языках программирования много неочевидных вещей. Поэтому столкнуться с багами легко. Чаще всего они становятся следствием неверного употребления команд, неправильно реализованных алгоритмов или ошибок в дизайне программы. Часть багов находят еще при разработке, другие – на этапе тестирования или даже после выпуска продукта.

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

В играх. Отдельной категорией можно назвать баги в видеоиграх: ситуации, когда игровые сцены или персонажи работают не как надо. Примеров множество: двери, которые не могут открыться, внезапные вылеты игры при достижении определенного момента, персонажи, застрявшие в текстурах или зависшие на одном месте. Даже некоторые игры, которые считаются культовыми, на этапе выхода были очень забагованными.

Баг в игре, лицо во все небо
Известный смешной баг игры Mount and Blade: из-за сбоя в файлах игры вместо неба отображалось огромное лицо

На сайтах. Современные сайты такие гибкие и функциональные благодаря скриптам, написанным на языках программирования. В браузере работает JavaScript, на сервере языки могут быть разными: PHP, Python, Ruby и другие. Баг может возникнуть и на стороне сервера, и в клиентской части сайта – иногда его замечают только после выпуска в продакшн. Есть даже понятие bug bounty: вознаграждение, которое компания выплачивает пользователю, нашедшему критичный баг в информационной безопасности.

Кто сталкивается с багами

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

Если команда разработки пропустила ошибку, ее ищут на следующем этапе – тестировании. Тестировщики пытаются неочевидными способами воспользоваться программой, чтобы отыскать скрытые ошибки. Найденные баги описываются в специальном отчете – он называется баг-репорт. Отчет тестировщики отправляют разработчикам, чтобы те исправили ошибки.

Из-за чего возникают баги

Мы выяснили, что такое баг. Теперь поговорим о причинах, из-за которых они появляются.

  • Первая и наиболее распространенная причина – ошибка разработчика. В IT-среде есть шутка: «Кто же победит: человек, венец природы… или крохотная забытая скобочка?». Маленькие недочеты могут быть очень критичными. Если поставить плюс вместо минуса в простейшем математическом вычислении, то получится совершенно другой результат.
  • Иногда причиной багов становится незнание. Например, разработчик был не в курсе специфического поведения какой-нибудь конструкции в языке, поэтому воспользовался ею не совсем корректно.
  • Часто баги возникают, если в команде программистов нет слаженности. Один не понимает, что написал другой, правит код по своему усмотрению и получает некорректное поведение программы.
  • Наконец, дизайн программы и архитектурные ошибки тоже могут быть причиной багов. Использование неоптимальных алгоритмов, ведущих к сбоям, неверный выбор инструментов – все это может привести к забагованности.
История одного неочевидного бага
Известный в интернете забавный случай показывает, насколько неочевидными бывают баги

Ворнинги, вылеты, исключения: чем отличаются от багов

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

Предупреждение. Это не совсем ошибка. Это скорее сообщение о риске некорректной работы. Не все предупреждения действительно указывают на что-то опасное. Например, линтеры – программы для написания чистого кода – выдают предупреждения, если человек пишет в «неправильном» стиле. На сленге предупреждения называют ворнингами от английского warning.

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

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

Вылет. Так называют ситуацию, когда программа экстренно завершает работу из-за ошибки. Вылет может сопровождаться сообщением о сбое. Причины разные: начиная от ошибок в коде и заканчивая недостаточной мощностью компьютера, который не справляется с «тяжелой» программой.

Синтаксическая ошибка. Самый простой вариант: разработчик допустил опечатку в синтаксисе и неправильно написал какую-то конструкцию, поэтому программа не собралась. Запись оказалась неизвестна компилятору или интерпретатору. В таком случае среда программирования говорит разработчику о синтаксической ошибке и указывает, где ее искать.

Какими бывают баги

Разработчики классифицируют баги по нескольким категориям. Некоторые – скорее шуточные, другие обсуждаются всерьез. А у некоторых распространенных багов даже есть свои названия.

  • Опечатка – простейший вариант. Разработчик случайно пишет не то, и вся программа работает неправильно.
  • Бесконечный цикл – ситуация, когда условие для выхода из цикла никогда не наступает, и программа виснет.
  • Переполнение буфера – явление, когда программе перестает хватать памяти, и она начинает пользоваться памятью за пределами выделенного ей количества.
  • Состояние гонки – баг многопоточных приложений, когда несколько потоков одновременно обращаются к одному и тому же элементу и как бы «соревнуются» за доступ. Результат непредсказуем.
  • Количественный баг – ошибка при работе с большим количеством действий, когда при многократных повторениях появляются баги. Например, большое количество данных распределяется неравномерно.
  • Демонстрационный эффект – явление, когда программа работала нормально на этапе написания, но сломалась при демонстрации. Зачастую возникает из-за недостаточного тестирования и невнимательности: разработчик не учел какой-то сценарий.

Баги – это очень плохо?

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

Например, баг в медицинском оборудовании может привести к трагедии. Баг в коде сайта – к утечке огромного бюджета: так было, когда блокчейн-компания Compound случайно отправила своим пользователям почти 90 миллионов долларов. А самый дорогой баг в истории – арифметическое переполнение в программной начинке ракеты-носителя «Арион-5», из-за которого ракета взорвалась в полете.

Конечно, критичность багов зависит от сферы. Если отрасль разработки связана с большими финансами или жизненно важным оборудованием, проверка качества кода в этой отрасли очень жесткая. Ведь цена ошибки очень велика.

Баг на табло, вместо 2000 года показывает 1900
Знаменитая «проблема 2000 года» или Y2K: когда наступил 2000 год, многие компьютеры по всему миру восприняли его как 1900

Как избежать багов

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

  • отлаживают программу еще на этапе создания. Хороший разработчик еще при написании кода учитывает возможные нештатные ситуации в его работе, проверяет его и пишет исключения;
  • тестируют для любых ситуаций, в том числе нетривиальных. В свою очередь тестировщики находят неочевидные ситуации, в которых программа может сломаться, и сообщают о них;
  • проводят юнит-тестирование для каждого компонента. Это отдельное тестирование разных частей кода – юнитов. Оно помогает понять, корректно ли работают эти компоненты – это более глубокий уровень. Ведь ошибка в одном компоненте может вызвать баги во всей программе.

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

2011/09/15 12:57:57

В программировании баг (англ. bug — жук) — жаргонное слово, обычно обозначающее ошибку в компьютерной программе или системе, которая выдает неожиданный или неправильный результат. Большинство багов возникают из-за ошибок, допущенных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые баги возникают из-за некорректной работы компилятора, вырабатывающего некорректный код. Программу, которая содержит большое число багов и/или баги, серьёзно ограничивающие её работоспособность, называют нестабильной или, на жаргонном языке, «глючной», «глюкнутой», «забагованной», «бажной», «баг(а)нутой» (англ. unstable, buggy).

Термин «баг» обычно употребляется в отношении ошибок, проявляющих себя на стадии работы программы, в отличие, например, от ошибок проектирования или синтаксических ошибок. Отчет, содержащий информацию о баге также называют отчетом об ошибке или отчетом о проблеме (англ. bug report). Отчет о критической проблеме (англ. crash), вызывающей аварийное завершение программы, называют крэш-репортом (англ. crash report).

«Баги» локализуются и устраняются в процессе тестирования и отладки программы.

Багом также называют определённый вид маркера на индикаторах.

Этимология

Легенда о мотыльке и день тестировщика

Широко распространена легенда, что 9 сентября 1945 года учёные Гарвардского университета, тестировавшие вычислительную машину Mark II Aiken Relay Calculator, нашли мотылька, застрявшего между контактами электромеханического реле, и Грейс Хоппер произнесла этот термин. Извлечённое насекомое было вклеено скотчем в технический дневник, с сопроводительной надписью: «First actual case of bug being found» (англ. «первый реальный случай, когда жук был найден»). Считается, что этот забавный факт положил начало использованию слова «debugging» в значении «отладка программы», однако, скорее всего, фраза является каламбуром.

Запись в тех.журнале

Файл:Баг_-_мотылек.jpg

В действительности этот случай произошёл 9 сентября 1947, а не 1945, года. Знаменитый мотылек был передан в музей вычислительной техники, где он и хранится до сих пор. Под его стендом имеется надпись, которая гласит, что этот мотылек стал первым из обнаруженных багов в истории компьютерной техники. С тех пор это слово стало широко использоваться компьютерщиками во всем мире. А тот день, когда насекомое было обнаружено, решено было сделать профессиональным праздником всех тестировщиков.

Исторические факты

Между тем, слово «bug» в современном значении употреблялось задолго до этого персоналом телеграфных и телефонных компаний в отношении неполадок с электрооборудованием и радиотехникой. В течение Второй мировой войны словом «bugs» назывались проблемы с радарной электроникой. В 1878 году Томас Эдисон писал:

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

It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise—this thing gives out and [it is] then that «Bugs»—as such little faults and difficulties are called—show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached. [1]

Употребление

Популярное выражение «Это не баг, это фича» следует понимать буквально: это не ошибка, это предусмотренная особенность работы программы. Так как к программному обеспечению применяются схожие законы об авторском праве, что и к текстовым публикациям, то ошибка в программе юридически является всего лишь мнением автора.

Поиск и исправление ошибок

Основная статья: Багхантеры (Bughunter) Bug bounty Поиск уязвимостей

Для отладки программы (англ. debugging) разработчиками ПО используются специальные программы-отладчики (англ. debugger). Например, в операционной системе Windows можно использовать программу WinDbg из пакета Microsoft Debugging Tools for Windows. Для GNU/Linux и ряда других UNIX-подобных операционных систем существует отладчик GDB (GNU Debugger).

Отчёты об ошибках

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

Например, в операционную систему Windows встроена утилита Dr. Watson, которая по умолчанию отлавливает ошибки в приложениях пользователя и отправляет отчёт на специальный сервер компании Microsoft. Также в качестве примера можно привести аналогичные библиотеки Breakpad[2] и CrashRpt[3].

Примечания

  1. ↑ Источник: Edison to Puskas, 13 ноября 1878, Edison papers, Edison National Laboratory, U.S. National Park Service, West Orange, N.J., цитируется по книге Томаса П. Хьюджеса (Thomas P. Hughes), American Genesis: A History of the American Genius for Invention, Penguin Books, 1989, стр.
  2. Breakpad. Google. Проверено 11 августа 2009.
  3. CrashRpt.

#статьи

  • 27 апр 2021

  • 13

Краш-курс по происхождению самых известных терминов цифрового мира.

Кирилл Молоков

Филолог, полиглот, IT-гик. В прошлом — преподаватель английского и литературы и рецензент Rolling Stone Russia. Ныне переводит для РБК и пишет о программировании и образовании для Skillbox.

Большинство IT-терминов пришло из английского языка. Но как они появились и почему эти английские слова в переводе означают вещи, которые никак не относятся к программированию и интернету?

Разбираемся, почему информацию хранят в облаке и как японское печенье с предсказаниями стало неотъемлемой частью рациона для большинства интернет-пользователей.

Баг (англ. bug — жук) — ошибка в программе.

Слово «баг» в значении «техническая неисправность» употребляли ещё в 1870-х. Тогда телеграфисты и телефонисты называли так помехи и неисправности в связи. Работники с большим трудом «ловили» и устраняли эти неполадки, которые надоедали, как назойливые жучки.

В значении «программная ошибка» слово впервые употребили в 1947 году. Инженеры, работавшие в Гарварде с компьютером Mark II, обнаружили в повреждённом компоненте машины сгоревшего мотылька, из-за которого и случилось замыкание. Насекомое извлекли и вклеили в журнал с символичной пометкой: «первый реальный случай обнаружения бага».

Тот самый вклеенный мотылёк и запись в журнале. Фото: Harvard University / IBM / National Museum of American History

Патч (англ. patch — накладка, заплата) — обновление или дополнение к программе.

Термин появился в эпоху перфокарт — главных носителей информации 1920–1950-х. Данные на них кодировали с помощью специальных отверстий. Чтобы изменить программу, приходилось накладывать заплатки на уже продырявленные места.

Патч на перфоленте первого программируемого компьютера — Mark I. Фото: ArnoldReinhold / Wikimedia Commons

Облачное хранилище данных, или просто облако (англ. cloud storage — облачное хранилище), — онлайн-хранилище данных.

Слово «облако» в значении «онлайн-хранилище» ещё в 1994 впервые использовали AT&T в рекламе нового сервиса PersonaLink Services. Тогда нужно было быстрее привлечь инвесторов и продвинуть проект в массы, поэтому разработчики использовали метафору, которая доступно объясняла принцип работы инновации: данные хранятся не у вас дома, а где-то там, в облаках. Кстати, рисунок хранилища на патенте тоже напоминает облако.

Патент на облачное хранилище данных. Изображение: US5485455A / Google Patents

Куки (англ. cookie — печенье) — информация, которую браузер сохраняет на компьютер, когда вы посещаете сайты.

Куки появились в IT-жаргоне благодаря печеньям с предсказаниями — кондитерским изделиям, внутри которых запекают записку с афоризмами и вариантами событий в будущем. Вопреки распространённому мнению, печенье в США завезли не китайские, а японские иммигранты. Позднее эти сладости «перекочевали» в сленг программистов: данные, которые сервер передаёт пользователю, стали называть cookies. Это слово очень ёмко и доступно объясняло принцип работы файлов, содержащих готовую, предсказуемую информацию.

Те самые cookies, о которых сайты предупреждают нас всё чаще и чаще. Фото: UngureanuCristi / Shutterstock

Спам (англ. spam — спам) — массовая рассылка сообщений.

История термина начинается в 1937-м. Тогда в США была основана торговая марка консервов SPAM, которая, по одной версии, расшифровывается как SPiced hAM, а по другой — как Shoulders of Pork and hAM. После Второй мировой войны SPAM вела агрессивную рекламную кампанию, чтобы сбыть залежавшуюся продукцию. Название торговой марки очень скоро стало нарицательным — им стали обозначать любую навязчивую рекламу.

В семидесятые слово популяризировали в комедийном скетче «Летающего цирка Монти Пайтона», который так и назвали — «Спам». В эпизоде официантка читает вслух меню — в нём все блюда, кроме одного, содержат консервы торговой марки SPAM. Словом вооружились тогдашние интернет-абьюзеры, чтобы мешать другим людям общаться в чатах. В результате спамом стали называть любые нежелательные письма и сообщения.

Спам, спам, спам, спам… Фото: Eduardo Unda-Sanzana / Wikimedia Commons

Робот (от чеш. robota — барщина, тяжёлая работа) — автоматизированное устройство, которое действует по определённой программе.

Любопытно, но одно из самых популярных слов IT-мира пришло не из английского, а из чешского языка. Термин «робот» ввёл писатель Карел Чапек. В 1920 он написал пьесу «Р.У.Р.» («Россумские универсальные роботы») — действие происходит на фабрике, где производят «искусственных людей». Писатель всё не мог придумать, как попроще назвать этих существ, поэтому обратился к брату, Йозефу Чапеку, который и предложил образовать неологизм от чешского слова robota.

Именно так выглядело первое художественное восстание роботов. Фото: Public Domain / Wikimedia Commons

Читая эту подборку, вы, наверное, заметили, что здесь нет сложных аббревиатур и слов, которые так характерны для технических дисциплин. Почти все представленные выше термины — простые, но яркие метафоры. И хотя некоторые из них возникли спонтанно, кого-то может удивить такая художественность языка в подобной сфере. Ведь на первый взгляд кажется, что в ней нет места образному мышлению.

На самом деле IT-индустрия никогда не противопоставлялась творчеству. Напротив, прокачанное образное мышление помогает стать первоклассным айтишником. Оно напрямую влияет на умение планировать и моделировать — важный навык программистов и инженеров.

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

Сможете ли вы без подглядки в гугл ответить на вопрос — чем отличаются:
— Ошибка.
— Дефект.
— Сбой.

Практика показывает, что нет Smile :)

Три года назад (кошмар, сколько времени прошло!) я была в летней школе тестировщиков. Алексей Баранцев вел тренинг для продвинутых, как искать баги и исследовать приложение. Он задал простой вопрос → «Чем отличаются ошибка, дефект и сбой?». Предположения были самыми разнообразными, но уловить тонкую грань отличий никто не смог.

Алексей мог зачитать умные слова из справочника ISTQB, но предпочел рассказать историю. Три года прошло! Я помню историю до сих пор и могу назвать отличия без подглядывания в гугл :)

Вступление от Алексея — придумал историю не сам. На одном из тренингов я задал этот вопрос. Девочки посовещались между собой и сказали: «Мы не можем объяснить это с точки зрения ПО, но можем на примере шитья». Я удивился и сказал: «Давайте!».

Жил-был мастер. Он шил платья на заказ. Однажды он допустил ошибку — забыл прошить нижний край у кармана платья.



Результатом ошибки стал дефект. Платье висело на вешалке и выглядело абсолютно нормально, но оно было с дефектом.

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


Девочка опустила руку в карман, отпустила ключ… У-у-у-упс, ключ выпал на пол! Произошел сбой в системе — проявился ранее скрытый дефект.

Точно также бывает и в ПО → разработчики допускают ошибки при написании кода и в программе затаивается дефект. И даже если дефект не нашли и о нем никто не знает, он все равно есть! Сидит и ждет своего часа. И когда пользователь натыкается на ошибочный код, происходит сбой.

Такие дела! Smile :)
Надеюсь, эта история поможет вам запомнить разницу так же, как она помогла мне. И помните — не всегда надо зубрить, иногда достаточно придумать знакомую и понятную альтернативу :)

А под конец немножко официоза — версия из ISTQB, которую мне любезно процитировали мои студенты. А ведь ради них я и пишу эти статьи! Smile :)

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.

Человек может допустить ошибку, которая приводит к дефекту (к неисправности, багу) в коде, в софте или системе, или документе. Если дефект в коде исполняется, система не сможет сделать то, что должна (или то, что не должна), что вызовет сбой. Дефекты в программном обеспечении, системах или документах, могут вызвать неисправности, но не все дефекты вызывают их.

Чем же они отличаются? Почитайте веселую историю и вспомнить отличие будет легко без подсматривания в гугл!

В летней школе тестировщиков Алексей Баранцев вел тренинг для продвинутых, как искать баги и исследовать приложение. Он задал простой вопрос → «Чем отличаются ошибка, дефект и сбой?». Предположения были самыми разнообразными, но уловить тонкую грань отличий никто не смог. Алексей мог зачитать умные слова из справочника ISTQB, но предпочел рассказать историю. Три года прошло! Я помню историю до сих пор и могу назвать отличия без подглядывания в гугл :)

Вступление от Алексея — придумал историю не сам. На одном из тренингов я задал этот вопрос. Девочки посовещались между собой и сказали: «Мы не можем объяснить это с точки зрения ПО, но можем на примере шитья». Я удивился и сказал: «Давайте!».

Жил-был мастер. Он шил платья на заказ. Однажды он допустил ошибку — забыл прошить нижний край у кармана платья.

ошибка 1

Результатом ошибки стал дефект. Платье висело на вешалке и выглядело абсолютно нормально, но оно было с дефектом.

ошибка 2

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

Девочка опустила руку в карман, отпустила ключ… У-у-у-упс, ключ выпал на пол! Произошелсбой в системе — проявился ранее скрытый дефект.

ошибка 3 (1)

Точно также бывает и в ПО → разработчики допускают ошибки при написании кода и в программе затаивается дефект. И даже если дефект не нашли и о нем никто не знает, он все равно есть! Сидит и ждет своего часа. И когда пользователь натыкается на ошибочный код, происходит сбой.

Официальное определение

А под конец немножко официоза — версия из ISTQB:

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.

Человек может допустить ошибку, которая приводит к дефекту (к неисправности, багу) в коде, в софте или системе, или документе. Если дефект в коде исполняется, система не сможет сделать то, что должна (или то, что не должна), что вызовет сбой. Дефекты в программном обеспечении, системах или документах, могут вызвать неисправности, но не все дефекты вызывают их.

© Оригинальный блог-пост

ошибка 1ошибка 2ошибка 3 (1)

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Generally, when the system/application does not act as per expectation or abnormally, we call it’s an error or it’s an fault and so on. Many of the newbies in Software Testing industry have confusion in using this, so let’s know what is the difference b/w defect, bug, error and failure. We will see these terms in detail one by one.

    1. Defect:

      The bugs introduced by programmer inside the code is called as Defect.

      Defect is defined as the deviation from the actual and expected result of application or software or in other words, defects are defined as any deviation or irregularity from the specifications mentioned in the product functional specification document. Defect is also solved by the developer in development phase or stage.

      Reasons for Defects:

      • Any deviation from the customer requirements is called as defect.
      • By giving wrong input may lead to defect.
      • Any error in logic code may lead to defect.
    2. Bug:
      Sometimes most people are confused between defect and bug, they say that bug is the informal name of defect. Actually bugs are faults in system or application which impact on software functionality and performance. Usually bugs are found in unit testing by testers.

      There are different types of bugs, some of them are given below.

      • Functional Errors
      • Compilation Errors
      • Missing commands
      • Run time Errors
      • Logical errors
      • Inappropriate error handling

      Above given these errors lead to bug.

    3. Failure:

      When a defect reaches the end customer, it is called as Failure.

      Once the product is completed and it is delivered to the customers and if the customer find any issues in product or software then it is the condition of failure of product.
      In other words, if an end user finds an issue in product then that particular issue is called as failure.

      Causes of Failure:

      • Human errors or mistakes may lead to failure.
      • Environmental conditions
      • The way in which system is used.

    Flow of Bug to Defect:

    Example:
    Let’s see a defect by an example.

    a=7
    b=5
    ans=a*b
    print("Addition of {} and {} = {}.".format(a, b, ans)) 

    When you compile and run this program you see the printed statement as below:

    Addition of 7 and 5=35 

    This is program of adding two numbers but the output is deviated from it’s actual result which is 12. Now we have detected a failure. As the failure has been detected a defect can be raised.

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Generally, when the system/application does not act as per expectation or abnormally, we call it’s an error or it’s an fault and so on. Many of the newbies in Software Testing industry have confusion in using this, so let’s know what is the difference b/w defect, bug, error and failure. We will see these terms in detail one by one.

    1. Defect:

      The bugs introduced by programmer inside the code is called as Defect.

      Defect is defined as the deviation from the actual and expected result of application or software or in other words, defects are defined as any deviation or irregularity from the specifications mentioned in the product functional specification document. Defect is also solved by the developer in development phase or stage.

      Reasons for Defects:

      • Any deviation from the customer requirements is called as defect.
      • By giving wrong input may lead to defect.
      • Any error in logic code may lead to defect.
    2. Bug:
      Sometimes most people are confused between defect and bug, they say that bug is the informal name of defect. Actually bugs are faults in system or application which impact on software functionality and performance. Usually bugs are found in unit testing by testers.

      There are different types of bugs, some of them are given below.

      • Functional Errors
      • Compilation Errors
      • Missing commands
      • Run time Errors
      • Logical errors
      • Inappropriate error handling

      Above given these errors lead to bug.

    3. Failure:

      When a defect reaches the end customer, it is called as Failure.

      Once the product is completed and it is delivered to the customers and if the customer find any issues in product or software then it is the condition of failure of product.
      In other words, if an end user finds an issue in product then that particular issue is called as failure.

      Causes of Failure:

      • Human errors or mistakes may lead to failure.
      • Environmental conditions
      • The way in which system is used.

    Flow of Bug to Defect:

    Example:
    Let’s see a defect by an example.

    a=7
    b=5
    ans=a*b
    print("Addition of {} and {} = {}.".format(a, b, ans)) 

    When you compile and run this program you see the printed statement as below:

    Addition of 7 and 5=35 

    This is program of adding two numbers but the output is deviated from it’s actual result which is 12. Now we have detected a failure. As the failure has been detected a defect can be raised.

    Очередной сайт «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, но внятно перевести это на русский я не могу. Что-то вроде «насколько неправилен результат»…

    В таком случае, как менеджер тестов, что вы будете делать?

    А) Согласиться с командой тестирования, что это дефект
    Б) Менеджер теста берет на себя роль судьи, чтобы решить, является ли проблема дефектом или нет
    В) договориться с командой разработчиков, что не является дефектом

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

    Категории ошибок

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

    Критический – дефект должен быть устранены немедленно, иначе это может привести к большим потерям для продукта
    Например: функция входа на сайт не работает должным образом.
    Вход в систему является одной из основных функций банковского сайта, если эта функция не работает, это серьезные ошибки.

    Высокий – дефект негативно влияет на основные функции продукта
    Например: производительность сайта слишком низкая.

    Средний – дефект вносит минимальные отклонения от требований к к продукту
    Например: не корректно отображается интерфейс на мобильных устройствах.

    Низкий
    – минимальное не функциональное влияние на продукт
    Например: некоторые ссылки не работают.

    Решение

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

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

    Верификация

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

    Закрытие

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

    Составление отчетов

    Далее вы должны сообщить правлению текущую ситуацию с дефектами, чтобы получить от них обратную связь. Они должно видеть и понимать процесс управления дефектами, чтобы поддержать вас в случае необходимости.

    Как измерить и оценить качество выполнения теста?

    Это вопрос, который хочет знать каждый менеджер в тестировании. Есть 2 параметра, которые вы можете рассмотреть следующим образом…

    В приведенном выше сценарии можно рассчитать коэффициент отклонения брака (DRR), равный 20/84 = 0,238 (23,8%).

    Другой пример: предположительно, в продукте всего 64 дефекта, но ваша группа по тестированию обнаружила только 44 дефекта, т.е. они пропустили 20 дефектов. Следовательно, можно рассчитать коэффициент утечки дефектов (DLR), равный 20/64 = 0,312 (31,2%).

    Вывод, качество выполнения теста оценивается по следующим двум параметрам.

    Defect reject ratio (DRR) – 23,8%
    Defect leakage ratio (DLR) – 31,2%

    Чем меньше значение DRR и DLR, тем, соответственно, лучше качество тестирования. Какой диапазон коэффициентов является приемлемым? Этот диапазон может быть определен и принят за основу в проекте исходя из целей, или вы можете ссылаться на показатели аналогичных проектов.

    В рассматриваемом нами проекте рекомендуемое значение показателей качества тестирования должно составлять 5 ~ 10%. Это означает, что качество выполнения теста низкое.

    Чтобы уменьшить эти коэффициенты:

    • Улучшите навыки тестирования участников проекта.
    • Тратьте больше времени на выполнение тестов и на просмотр результатов.

      Дефекты. Ошибки, сбои, отказы

      Дефекты. Ошибки, сбои, отказы

      Дефект — расхождение ожидаемого и фактического результата. Или дефект — отклонение фактического результата от ожиданий наблюдателя, сформированных на основе требований, спецификаций, иной документации или опыта и здравого смысла. Ожидаемый результат — поведение системы, описанное в требованиях. Фактический результат — поведение системы, наблюдаемое в процессе тестирования. Ошибки совершает человек , которые приводят к возникновению дефектов в коде, которые, в свою очередь, приводят к сбоям и отказам приложения (однако сбои и отказы могут возникать и из-за внешних условий, таких как электромагнитное воздействие на оборудование и т.д.). Таким образом, упрощённо можно изобразить следующую схему

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

      Ожидаемый результат — поведение системы, описанное в требованиях.

      Фактический результат — поведение системы, наблюдаемое в процессе тестирования.

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

      Ошибка (error , mistake) — действие человека, приводящее к некорректным результатам. Дефект (defect, bug, problem, fault) — недостаток в компоненте или системе, способный привести к ситуации сбоя или отказа. Дефекты могут быть в документации, настройках, входных данных и т.д. Сбой или отказ — отклонение поведения системы от ожидаемого. В ГОСТ 27.002-89 даны краткие определения сбоя и отказа : Сбой — самоустраняющийся отказ или однократный отказ, устраняемый незначительным вмешательством оператора. Отказ — событие, заключающееся в нарушении работоспособного состояния объекта. Сбои и отказы являются тем, что тестировщик замечает в процессе тестирования и отталкиваясь от чего, проводит исследование с целью выявить дефект и его причины. Отчёт о дефекте и его жизненный цикл При обнаружении дефекта тестировщик создаёт отчёт о дефекте . Отчёт о дефекте — документ, описывающий обнаруженный дефект, а также содействующий его устранению

      Ошибка (error , mistake) — действие человека, приводящее к некорректным результатам.

      Дефект (defect, bug, problem, fault) — недостаток в компоненте или системе, способный привести к ситуации сбоя или отказа.

      Дефекты могут быть в документации, настройках, входных данных и т.д.

      Сбой или отказ — отклонение поведения системы от ожидаемого.

      В ГОСТ 27.002-89 даны краткие определения сбоя и отказа :

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

      Отказ — событие, заключающееся в нарушении работоспособного состояния объекта.

      Сбои и отказы являются тем, что тестировщик замечает в процессе тестирования и отталкиваясь от чего, проводит исследование с целью выявить дефект и его причины.

      Отчёт о дефекте и его жизненный цикл

      При обнаружении дефекта тестировщик создаёт отчёт о дефекте .

      Отчёт о дефекте — документ, описывающий обнаруженный дефект, а также содействующий его устранению

      Отчёт о дефекте пишется со следующими основными целями: предоставить информацию о проблеме — уведомить проектную команду и иных заинтересованных лиц о наличии проблемы, описать суть проблемы; приоритизировать проблему — определить степень опасности проблемы для проекта и желаемые сроки её устранения; содействовать устранению проблемы — качественный отчёт о дефекте не только предоставляет все необходимые подробности для понимания сути случившегося, но также может содержать анализ причин возникновения проблемы и рекомендации по исправлению ситуации. Хорошо написанный отчёт о дефекте — половина решения проблемы для программиста. От полноты, корректности, аккуратности, подробности и логичности отчёта о дефекте зависит очень многое — одна и та же проблема может быть описана так, что программисту останется исправить пару строк кода, а может быть описана и так, что сам автор отчёта на следующий день не сможет понять, что же он имел в виду.

      Отчёт о дефекте пишется со следующими основными целями:

      • предоставить информацию о проблеме — уведомить проектную команду и иных заинтересованных лиц о наличии проблемы, описать суть проблемы; приоритизировать проблему — определить степень опасности проблемы для проекта и желаемые сроки её устранения;
      • содействовать устранению проблемы — качественный отчёт о дефекте не только предоставляет все необходимые подробности для понимания сути случившегося, но также может содержать анализ причин возникновения проблемы и рекомендации по исправлению ситуации.

      Хорошо написанный отчёт о дефекте — половина решения проблемы для программиста. От полноты, корректности, аккуратности, подробности и логичности отчёта о дефекте зависит очень многое — одна и та же проблема может быть описана так, что программисту останется исправить пару строк кода, а может быть описана и так, что сам автор отчёта на следующий день не сможет понять, что же он имел в виду.

      Отчёт о дефекте (и сам дефект вместе с ним) проходит определённые стадии жизненного цикла, которые схематично можно показать так (рисунок 2на следующем слайде):

      • Обнаружен (submitted) — начальное состояние отчёта (иногда называется «Новый» (new)), в котором он находится сразу после создания. Некоторые средства также позволяют сначала создавать черновик (draft) и лишь потом публиковать отчёт.
      • Назначен (assigned) — в это состояние отчёт переходит с момента, когда кто — то из проектной команды назначается ответственным за исправление дефекта. Назначение ответственного производится или решением лидера команды разработки, или коллегиально, или по добровольному принципу, или иным принятым в команде способом или выполняется автоматически на основе определённых правил.
      • Исправлен (fixed) — в это состояние отчёт переводит ответственный за исправление дефекта член команды после выполнения соответствующих действий по исправлению.
      • Проверен (verified) — в это состояние отчёт переводит тестировщик, удостоверившийся, что дефект на самом деле был устранён. Как правило, такую проверку выполняет тестировщик, изначально написавший отчёт о дефекте.

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

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

      Жизненный цикл отчёта о дефекте с наиболее типичными переходами между состояниями

      Набор стадий жизненного цикла, их наименование и принцип перехода от стадии к стадии может различаться в разных инструментальных средствах управления жизненным циклом отчётов о дефектах. Более того — многие такие средства позволяют гибко настраивать эти параметры. Закрыт (closed) — состояние отчёта, означающее, что по данному дефекту не планируется никаких дальнейших действий. Здесь есть некоторые расхождения в жизненном цикле, принятом в разных инструментальных средствах управления отчётами о дефектах: В некоторых средствах существуют оба состояния — « Проверен » и « Закрыт », чтобы подчеркнуть, что в состоянии « Проверен » ещё могут потребоваться какие-то дополнительные действия (обсуждения, дополнительные проверки) в то время как состояние « Закрыт » означает «с дефектом покончено, больше к этому вопросу не возвращаемся». В некоторых средствах одного из состояний нет (оно поглощается другим)

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

      • Закрыт (closed) — состояние отчёта, означающее, что по данному дефекту не планируется никаких дальнейших действий.

      Здесь есть некоторые расхождения в жизненном цикле, принятом в разных инструментальных средствах управления отчётами о дефектах:

      В некоторых средствах существуют оба состояния — « Проверен » и « Закрыт », чтобы подчеркнуть, что в состоянии « Проверен » ещё могут потребоваться какие-то дополнительные действия (обсуждения, дополнительные проверки) в то время как состояние « Закрыт » означает «с дефектом покончено, больше к этому вопросу не возвращаемся».

      • В некоторых средствах одного из состояний нет (оно поглощается другим)

      В некоторых средствах в состояние «Закрыт» или «Отклонён» отчёт о дефекте может быть переведён из множества предшествующих состояний с резолюциями наподобие: «Не является дефектом» — приложение так и должно работать, описанное поведение не является аномальным. «Дубликат» — данный дефект уже описан в другом отчёте. «Не удалось воспроизвести» — разработчикам не удалось воспроизвести проблему на своём оборудовании. «Не будет исправлено» — дефект есть, но по каким-то серьёзным причинам его решено не исправлять. «Невозможно исправить» — непреодолимая причина дефекта находится вне области полномочий команды разработчиков, например существует проблема в операционной системе или аппаратном обеспечении, влияние которой устранить разумными способами невозможно. В подобных случаях будет переведён в состояние «Закрыт», в некоторых — в состояние «Отклонён», в некоторых — часть случаев закреплена за состоянием «Закрыт», часть — за «Отклонён».

      В некоторых средствах в состояние «Закрыт» или «Отклонён» отчёт о дефекте может быть переведён из множества предшествующих состояний с резолюциями наподобие:

      • «Не является дефектом» — приложение так и должно работать, описанное поведение не является аномальным.
      • «Дубликат» — данный дефект уже описан в другом отчёте.
      • «Не удалось воспроизвести» — разработчикам не удалось воспроизвести проблему на своём оборудовании.
      • «Не будет исправлено» — дефект есть, но по каким-то серьёзным причинам его решено не исправлять.
      • «Невозможно исправить» — непреодолимая причина дефекта находится вне области полномочий команды разработчиков, например существует проблема в операционной системе или аппаратном обеспечении, влияние которой устранить разумными способами невозможно. В подобных случаях будет переведён в состояние «Закрыт», в некоторых — в состояние «Отклонён», в некоторых — часть случаев закреплена за состоянием «Закрыт», часть — за «Отклонён».
      • Открыт заново (reopened) — в это состояние (как правило, из состояния «Исправлен») отчёт переводит тестировщик, удостоверившийся, что дефект попрежнему воспроизводится на билде, в котором он уже должен быть исправлен.
      • Рекомендован к отклонению (to be declined) — в это состояние отчёт о дефекте может быть переведён из множества других состояний с целью вынести на рассмотрение вопрос об отклонении отчёта по той или иной причине. Если рекомендация является обоснованной, отчёт переводится в состояние «Отклонён» (см. следующий пункт).
      • Отклонён (declined) — в это состояние отчёт переводится в случаях, подробно описанных в пункте «Закрыт», если средство управления отчётами о дефектах предполагает использование этого состояния вместо состояния «Закрыт» для тех или иных резолюций по отчёту.
      • Отложен (deferred) — в это состояние отчёт переводится в случае, если исправление дефекта в ближайшее время является нерациональным или не представляется возможным, однако есть основания полагать, что скоро ситуация исправится (выйдет новая версия библиотеки, вернётся из отпуска специалист по данной технологии, изменятся требования заказчика и т.д.).

      Атрибуты (поля) отчёта о дефекте Общий вид всей структуры отчёта о дефекте представлен на рисунке

      Атрибуты (поля) отчёта о дефекте

      Общий вид всей структуры отчёта о дефекте представлен на рисунке

      • Идентификатор представляет собой уникальное значение, позволяющее однозначно отличить один отчёт о дефекте от другого и используемое во всевозможных ссылках. В общем случае идентификатор отчёта о дефекте может представлять собой просто уникальный номер, но может быть : включать префиксы, суффиксы и иные осмысленные компоненты, позволяющие быстро определить суть дефекта и часть приложения (или требований), к которой он относится.
      • Краткое описание должно в предельно лаконичной форме давать исчерпывающий ответ на вопросы «Что произошло?» «Где это произошло»? «При каких условиях это произошло?».

      Например: «Отсутствует логотип на странице приветствия, если пользователь

      является администратором»:

      — Что произошло? Отсутствует логотип.

      — Где это произошло? На странице приветствия.

      — При каких условиях это произошло? Если пользователь является

      администратором.

      Заполнение поля « краткое описание », которое одновременно должно:

      — содержать предельно краткую, но в то же время достаточную для

      понимания сути проблемы информацию о дефекте;

      — быть достаточно коротким, чтобы полностью помещаться на экране;

      - при необходимости содержать информацию об окружении, под которым был обнаружен дефект; - по возможности не дублировать краткие описания других дефектов (и даже не быть похожими на них), чтобы дефекты было сложно перепутать или посчитать дубликатами друг друга; - быть законченным предложением русского или английского (или иного) языка, построенным по соответствующим правилам грамматики. Для создания хороших кратких описаний дефектов рекомендуется пользоваться следующим алгоритмом: Полноценно понять суть проблемы. До тех пор, пока у тестировщика нет чёткого понимания того, «что не работает», писать отчёт о дефекте не стоит. Сформулировать подробное описание 3. Убрать из получившегося подробного описания всё лишнее, уточнить важные детали.

      — при необходимости содержать информацию об окружении, под

      которым был обнаружен дефект;

      — по возможности не дублировать краткие описания других

      дефектов (и даже не быть похожими на них), чтобы дефекты

      было сложно перепутать или посчитать дубликатами друг друга;

      — быть законченным предложением русского или английского (или

      иного) языка, построенным по соответствующим правилам

      грамматики.

      Для создания хороших кратких описаний дефектов рекомендуется пользоваться следующим алгоритмом:

      • Полноценно понять суть проблемы. До тех пор, пока у тестировщика нет чёткого понимания того, «что не работает», писать отчёт о дефекте не стоит.
      • Сформулировать подробное описание
      • 3. Убрать из получившегося подробного описания всё лишнее, уточнить важные детали.

      4. Выделить в подробном описании слова (словосочетания, фрагменты фраз), отвечающие на вопросы, «что, где и при каких условиях случилось». 5. Оформить получившееся в пункте 4 в виде законченного грамматически правильного предложения. 6. Если предложение получилось слишком длинным, переформулировать его, сократив длину (за счёт подбора синонимов, использования общепринятых аббревиатур и сокращений). К слову, в английском языке предложение почти всегда будет короче русского аналога. Пример применения этого алгоритма. Тестированию подвергается некое веб-приложение, поле описания товара должно допускать ввод максимум 250 символов; в процессе тестирования оказалось, что этого ограничения нет. Суть проблемы: исследование показало, что ни на клиентской, ни на серверной части нет никаких механизмов, проверяющих и/или ограничивающих длину введённых в поле «О товаре» данных. Исходный вариант подробного описания: в клиентской и серверной части приложения отсутствуют проверка и ограничение длины данных, вводимых в поле «О товаре» на странице http://testapplication/admin/goods/edit.

      4. Выделить в подробном описании слова (словосочетания, фрагменты фраз), отвечающие на вопросы, «что, где и при каких условиях случилось».

      5. Оформить получившееся в пункте 4 в виде законченного грамматически правильного предложения.

      6. Если предложение получилось слишком длинным, переформулировать

      его, сократив длину (за счёт подбора синонимов, использования

      общепринятых аббревиатур и сокращений). К слову, в английском языке

      предложение почти всегда будет короче русского аналога.

      Пример применения этого алгоритма.

      Тестированию подвергается некое веб-приложение, поле описания товара должно допускать ввод максимум 250 символов; в процессе тестирования оказалось, что этого ограничения нет.

      • Суть проблемы: исследование показало, что ни на клиентской, ни на серверной части нет никаких механизмов, проверяющих и/или ограничивающих длину введённых в поле «О товаре» данных.
      • Исходный вариант подробного описания: в клиентской и серверной части приложения отсутствуют проверка и ограничение длины данных, вводимых в поле «О товаре» на странице http://testapplication/admin/goods/edit.

      Конечный вариант подробного описания: - Фактический результат: в описании товара (поле «О товаре», http://testapplication/admin/goods/edit/) отсутствуют проверка и ограничение длины вводимого текста (MAX=250 символов). - Ожидаемый результат: в случае попытки ввода 251+ символов выводится сообщение об ошибке. Определение «что, где и при каких условиях случилось»: - Что: отсутствуют проверка и ограничение длины вводимого текста. - Где: описание товара, поле «О товаре», http://testapplication/admin/goods/edit/. - При каких условиях: – (в данном случае дефект присутствует всегда, вне зависимости от каких бы то ни было особых условий). Первичная формулировка: отсутствуют проверка и ограничение максимальной длины текста, вводимого в поле «О товаре» описания товара. Сокращение (итоговое краткое описание): нет ограничения максимальной длины поля «О товаре». Английский вариант: no check for «О товаре» max length.

      • Конечный вариант подробного описания:

      — Фактический результат: в описании товара (поле «О товаре»,

      http://testapplication/admin/goods/edit/) отсутствуют проверка и

      ограничение длины вводимого текста (MAX=250 символов).

      — Ожидаемый результат: в случае попытки ввода 251+ символов

      выводится сообщение об ошибке.

      • Определение «что, где и при каких условиях случилось»:

      — Что: отсутствуют проверка и ограничение длины вводимого текста.

      — Где: описание товара, поле «О товаре»,

      http://testapplication/admin/goods/edit/.

      — При каких условиях: – (в данном случае дефект присутствует всегда, вне

      зависимости от каких бы то ни было особых условий).

      • Первичная формулировка: отсутствуют проверка и ограничение максимальной длины текста, вводимого в поле «О товаре» описания товара.
      • Сокращение (итоговое краткое описание): нет ограничения максимальной длины поля «О товаре». Английский вариант: no check for «О товаре» max length.

      Подробное описание представляет в развёрнутом виде необходимую информацию о дефекте, а также (обязательно!) описание фактического результата, ожидаемого результата и ссылку на требование (если это возможно). Пример подробного описания : Если в систему входит администратор, на странице приветствия отсутствует логотип. Фактический результат: логотип отсутствует в левом верхнем углу страницы. Ожидаемый результат: логотип отображается в левом верхнем углу страницы. Требование: R245.3.23b. В отличие от краткого описания, которое является одним предложением, здесь нужно давать подробную информацию. Если одна и та же проблема (вызванная одним источником) проявляется в нескольких местах приложения, можно в подробном описании перечислить эти места. Шаги по воспроизведению описывают действия, которые необходимо выполнить для воспроизведения дефекта.

      • Подробное описание представляет в развёрнутом виде необходимую информацию о дефекте, а также (обязательно!) описание фактического результата, ожидаемого результата и ссылку на требование (если это возможно).

      Пример подробного описания :

      Если в систему входит администратор, на странице приветствия отсутствует логотип. Фактический результат: логотип отсутствует в левом верхнем углу страницы. Ожидаемый результат: логотип отображается в левом верхнем углу страницы. Требование: R245.3.23b.

      В отличие от краткого описания, которое является одним предложением, здесь нужно давать подробную информацию. Если одна и та же проблема (вызванная одним источником) проявляется в нескольких местах приложения, можно в подробном описании перечислить эти места.

      • Шаги по воспроизведению описывают действия, которые необходимо выполнить для воспроизведения дефекта.

      Это поле похоже на шаги тест-кейса, за исключением одного отличия: здесь действия прописываются максимально подробно, с указанием конкретных вводимых значений и самых мелких деталей, т.к. отсутствие этой информации в сложных случаях может привести к невозможности воспроизведения дефекта.

      Пример шагов воспроизведения :

      • Открыть http://testapplication/admin/login/.
      • Авторизоваться с именем «defaultadmin» и паролем «dapassword». Дефект : в левом верхнем углу страницы отсутствует логотип (вместо него отображается пустое пространство с надписью «logo»).

      Воспроизводимость показывает, при каждом ли прохождении по шагам воспроизведения дефекта удаётся вызвать его проявление. Это поле принимает всего два значения: всегда или иногда. Можно сказать, что воспроизводимость «иногда» означает, что тестировщик не нашёл настоящую причину возникновения дефекта. Это приводит к серьёзным дополнительным сложностям в работе с дефектом:

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

      Разработчику тоже нужно потратить время, чтобы добиться проявления дефекта и убедиться в его наличии. После внесения исправлений в приложение разработчик фактически должен полагаться только на свой профессионализм, т.к. даже многократное прохождение по шагам воспроизведения в таком случае не гарантирует, что дефект был исправлен (возможно, через ещё 10–20 повторений он бы проявился). Важность показывает степень ущерба, который наносится проекту существованием дефекта. В общем случае выделяют следующие виды важности: - Критическая — существование дефекта приводит к масштабным последствиям катастрофического характера, например: потеря данных, раскрытие конфиденциальной информации, нарушение ключевой функциональности приложения и т.д. - Высокая — существование дефекта приносит ощутимые неудобства многим пользователям в рамках их типичной деятельности, например: недоступность вставки из буфера обмена, неработоспособность общепринятых клавиатурных комбинаций, необходимость перезапуска приложения при выполнении типичных сценариев работы.

      • Разработчику тоже нужно потратить время, чтобы добиться проявления дефекта и убедиться в его наличии. После внесения исправлений в приложение разработчик фактически должен полагаться только на свой профессионализм, т.к. даже многократное прохождение по шагам воспроизведения в таком случае не гарантирует, что дефект был исправлен (возможно, через ещё 10–20 повторений он бы проявился).
      • Важность показывает степень ущерба, который наносится проекту существованием дефекта. В общем случае выделяют следующие виды важности:

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

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

      - Средняя — существование дефекта слабо влияет на типичные сценарии работы пользователей, и/или существует обходной путь достижения цели, например: диалоговое окно не закрывается автоматически после нажатия кнопок «OK»/«Cancel», при распечатке нескольких документов подряд не сохраняется значение поля «Двусторонняя печать», перепутаны направления сортировок по некоему полю таблицы. - Низкая — существование дефекта редко обнаруживается незначительным процентом пользователей и (почти) не влияет на их работу, например: опечатка в глубоко вложенном пункте меню настроек, некоторое окно при отображении расположено неудобно (нужно перетянуть его в удобное место), неточно отображается время до завершения операции копирования файлов.

      Средняя — существование дефекта слабо влияет на типичные

      сценарии работы пользователей, и/или существует обходной путь

      достижения цели, например: диалоговое окно не закрывается

      автоматически после нажатия кнопок «OK»/«Cancel», при распечатке

      нескольких документов подряд не сохраняется значение поля

      «Двусторонняя печать», перепутаны направления сортировок по

      некоему полю таблицы.

      Низкая — существование дефекта редко обнаруживается

      незначительным процентом пользователей и (почти) не влияет на их

      работу, например: опечатка в глубоко вложенном пункте меню

      настроек, некоторое окно при отображении расположено неудобно

      (нужно перетянуть его в удобное место), неточно отображается время

      до завершения операции копирования файлов.

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

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

      В качестве примера рассмотрим следующие значения симптомов дефекта.

      • Косметический дефект — визуально заметный недостаток интерфейса, не влияющий на функциональность приложения (например, надпись на кнопке выполнена шрифтом не той гарнитуры).
      • Повреждение/потеря данных — в результате возникновения дефекта искажаются, уничтожаются (или не сохраняются) некоторые данные (например, при копировании файлов копии оказываются повреждёнными).
      • Проблема в документации (— дефект относится не к приложению, а к документации (например, отсутствует раздел руководства по эксплуатации).
      • Некорректная операция — некоторая операция выполняется некорректно
      • Проблема инсталляции — дефект проявляется на стадии установки и/или конфигурирования приложения.
      • Ошибка локализации — что-то в приложении не переведено или переведено неверно на выбранный язык интерфейса.
      • Нереализованная функциональность — некая функция приложения не выполняется или не может быть вызвана (например, в списке форматов для экспорта документа отсутствует несколько пунктов, которые там должны быть
      • Проблема масштабируемости — при увеличении количества доступных приложению ресурсов не происходит ожидаемого прироста производительности приложения
      • Низкая производительность — выполнение неких операций занимает недопустимо большое время
      • Крах системы — приложение прекращает работу или теряет способность выполнять свои ключевые функции
      • Неожиданное поведение — в процессе выполнения некоторой типичной операции приложение ведёт себя необычным (отличным от общепринятого) образом (например, после добавления в список новой записи активной становится не новая запись, а первая в списке).
      • Недружественное поведение — поведение приложения создаёт пользователю неудобства в работе (например, на разных диалоговых окнах в разном порядке расположены кнопки «OK» и «Cancel»).
      • Расхождение с требованиями — этот симптом указывают, если дефект сложно соотнести с другими симптомами, но тем не менее приложение ведёт себя не так, как описано в требованиях.
      • Предложение по улучшению — во многих инструментальных средствах управления отчётами о дефектах для этого случая есть отдельный вид отчёта

      Часто у одного дефекта может быть сразу несколько симптомов. Возможность обойти — показывает, существует ли альтернативная последовательность действий, выполнение которой позволило бы пользователю достичь поставленной цели (например, клавиатурная комбинация Ctrl+P не работает, но распечатать документ можно, выбрав соответствующие пункты в меню). В некоторых инструментальных средствах управления отчётами о дефектах это поле может просто принимать значения «Да» и «Нет», в некоторых при выборе «Да» появляется возможность описать обходной путь. Традиционно считается, что дефектам без возможности обхода стоит повысить срочность исправления. Комментарий— может содержать любые полезные для понимания и исправления дефекта данные. Вложения — представляет собой не столько поле, сколько список прикреплённых к отчёту о дефекте приложений (копий экрана, вызывающих сбой файлов и т.д.).

      Часто у одного дефекта может быть сразу несколько симптомов.

      • Возможность обойти — показывает, существует ли альтернативная последовательность действий, выполнение которой позволило бы пользователю достичь поставленной цели (например, клавиатурная комбинация Ctrl+P не работает, но распечатать документ можно, выбрав соответствующие пункты в меню). В некоторых инструментальных средствах управления отчётами о дефектах это поле может просто принимать значения «Да» и «Нет», в некоторых при выборе «Да» появляется возможность описать обходной путь. Традиционно считается, что дефектам без возможности обхода стоит повысить срочность исправления.
      • Комментарий— может содержать любые полезные для понимания и исправления дефекта данные.
      • Вложения — представляет собой не столько поле, сколько список прикреплённых к отчёту о дефекте приложений (копий экрана, вызывающих сбой файлов и т.д.).

      Какой же путь проходит баг и какую роль в его жизненном цикле играет тестировщик? Давайте разбираться.

      Ошибка, дефект, но чаще всего баг. Именно так называется то, что находят тестировщики в процессе работы.

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

      Bug в переводе означает “жук, насекомое”. Первая ошибка, которая была задокументирована, возникла как раз из-за жука. В середине 40-х годов 20 века ученых Гарвардского университета вызвали для того, чтобы определить причину сбоя в работе вычислительной машины Mark II. Покопавшись в этой громадной куче приборов, соединенных проводами, они обнаружили бабочку, застрявшую между контактами электромеханического реле. Стало ясно, что именно она и явилась причиной сбоя. Одна из сотрудниц университета, Грейс Хоппер, так и сформулировала результат исследований: «неполадку вызвал баг». Извлеченное насекомое было вклеено скотчем в технический дневник, с соответствующей сопроводительной надписью. Ее, как говорят, до сих пор можно увидеть в этом журнале, хранящемся в университетском научном музее.

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

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

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

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

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

      Давайте вкратце разберем каждый этап жизненного цикла

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

      Жизненный цикл бага
      1. Новый (New) — Тестировщик находит баг, локализует и вносит его в специальную систему, где хранятся баг-репорты. С этого момента баг начинает официально существовать.
        Далее его статус меняется на Отказ (Rejected) или на Назначен (Assigned).
      2. Отказ (Rejected) — пишется комментарий программиста или менеджера о причине reject-a(отклонения). Это может быть некачественное описание дефекта, такой дефект уже существует (дубликат), невозможность воспроизвести дефект. Также это может произойти потому что для заказчика какие-то ошибки перестали быть актуальными. После этого, тестировщик или закрывает дефект (Closed), или дополняет комментарии данного дефекта и переводит дефект заново в состояние Назначен(Assigned).
      3. Назначен (Assigned)— дефект просмотрен и открыт (то есть признан для исправления).
      4. Решен (Fixed) — дефект исправили и он в этом состоянии требует перепроверки тестировщиком.
      5. После проверки ошибки тестировщиком, дефект переводится в состояние Переоткрыт (Re-opened) (если дефект не исправлен или исправлен не полностью) либо в Закрыт (Closed), если ошибка исправлена.

      Данную схему можно изобразить в текстовом виде. Вот несколько вариантов прохождения багов (можно просто нарисовать на листочке на собеседовании):
      1. Новый (new) —> Отклонен (rejected) —> Закрыт (closed)
      2. Новый (new) —> Назначен (аssigned) —> Решен (fixed) —> Закрыт (closed)
      3. Новый (new) —> Назначен (аssigned) —> Решен (fixed) —> Закрыт (closed) —> Переоткрыт (re-opend)

      Жизненный цикл бага с точки зрения команды

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

      Жизненный цикл бага с точки зрения команды

      Жизненный цикл бага с точки зрения команды

      Сначала тестировщик находит баг. Далее заносит его в систему учета ошибок. После этого программист начинает изучать отчет о дефекте. Именно на этом этапе он решает баг это или нет.

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

      Если баг больше не воспроизводится, то тестировщик закрывает баг.
      Если баг снова воспроизводится, то мы возвращаем его программисту. И снова проходим все шаги, начиная с 3-го шага (рассмотрения проблемы программистом).

      Теперь другой сценарий — разработчик не принял баг. Если баг не принят, то разработчик возвращает его нам. Наша задача — рассмотреть проблему. Если баг вернули из-за некорректного описания, то значит переписываем его. Если невозможно воспроизвести дефект, то заново проверяем все шаги, может мы что то упустили при описании. Если разработчик прав и бага нет, то мы закрываем баг. А если баг все же есть, то вносим необходимые коррективы и опять возвращаемся на шаг 3.

      ***

      Именно так выглядят основные этапы жизненного цикла бага. Иногда могут добавляться дополнительные этапы, это вызвано особенностями процессов тестирования внутри фирмы. Неизменным всегда останется то, что баг создается и закрывается (прекращает существование) по различным причинам.

      Как правильно пишется слово «баг» по английски?

      Митяй Дата: Пятница, 27.08.2010, 02:50 | Сообщение # 1

      Титул:
      Flandre scarlet

      Сообщений: 1919

      Никак не могу вдуплить, как правильно пишется слово баг по англ? (ну баг, тоесть баг в игре)
      bug или bag? Или может как-то по другому? Поясните.


      UnoDosTre Дата: Пятница, 27.08.2010, 03:31 | Сообщение # 2

      Bug



      Enjoy_The_Silence Дата: Пятница, 27.08.2010, 04:43 | Сообщение # 3

      Сообщений: 3293

      Митяй, bug(жук), т.к. «баг» был замечен в 1-ый раз в игре жуки — Bugs.


      Phobyy Дата: Пятница, 27.08.2010, 05:31 | Сообщение # 4

      Да вы что?! Баг по английски пишется «ДЕРЗКИЙШТОЛИ?!».


      Rukkuz Дата: Пятница, 27.08.2010, 09:51 | Сообщение # 5

      Ronaldo__7, dry

      По английски «баг» — «bug»



      ——————————-
      РИД ОНЛИ. изредка буду высерать сообщения.

      Понравилась статья? Поделить с друзьями:
    • Badchardata kyocera ошибка
    • Bad request номер ошибки
    • Bad image ошибка 0xc000012f windows 10
    • B3055 ошибка чери
    • B3055 ошибка опель мокка