Звідки цей «термін» стався, достовірно не відомо. Існують дві найбільш популярні версії. Перша відсилає нас до Томасу Едісону, який помітив перешкоди в фонографі, і порахував що вони з'явилися через заповзли туди таргана. Розгвинтити коробку пристрою, винахідник не знайшов ніякого таргана і зрозумів, що баг знаходиться в самому пристрої. Друга версія стверджує що в 1945 році, гарвардські вчені тестували електронну обчислювальну машину Mark II Aiken Relay Calculator. Пристрій працювало некоректно, і коли його розкрили, між контактами реле був знайдений метелик. Комаха було визнано винним у поломці, а в технічну книгу було внесено запис: «First actual case of bug being found». З тих пір, слово баг і набуло значення «комп'ютерної помилки.»
Класифікація помилок
Щодо своїх розмірів, баги діляться на три види:
- Незначні помилки.
- Серйозні помилки.
- Showstoppers.
Залежно від фази розробки ПО, під час якої виявляються баги, їх ділять на:
- синтаксичні. Це ті помилки, які роблять компіляцію програми неможливою. Наприклад, неправильно поставлена відкриває і закриває дужка;
застереження компілятора. Вони відбуваються коли програміст використовує невідому програмі змінну. В такому випадку, компілятор зауважує незвичайне дію користувача і ставить його до відома. Проте програміст сам вирішує, нехтувати оповіщенням програми чи ні; - семантичні. Вони ж смислові, вони ж помилки тимчасового виконання. Це баги сегментації або неправильного математичного дії, коли, наприклад, замість множення користувач виробляє складання змінних.
Щодо частоти своєї появи баги діляться на:
- постійні;
- епізодичні;
- ті, які з'являються тільки на машині клієнта.
За місцем виникнення і їх напрямку, розрізняють такі баги тестування, обробки даних, помилки інтерфейсу користувача і баги, що виникають при підвищенні навантаження. Існують також помилки граничних умов і поломки ідентифікаторів
Баги також діляться на різновиди
- Борбаг - легкообнаружіваемая, стабільна помилка.
- Гайзенбаґ. Таку помилку виявити досить важко. Вона періодично зникає, або змінює властивості.
- Мандельбаг - помилка з ентропійних, непередбачуваною поведінкою.
- Шредінбаг - небезпечна критична помилка. Ніяк себе не показує, до тих пір, поки програміст на неї випадково не зустріне її в вихідному коді. Зазвичай, після виявлення такого бага, програма перестає функціонувати.