Помилками в ПЗ, взагалі кажучи, є всі можливі невідповідності між демонстрованими характеристиками його якості і сформульованими або такими, що маються на увазі вимогами і очікуваннями користувачів.
У англомовній літературі використовується декілька термінів, що часто однаково переводяться як «помилка» на російську мову.
- defect— найзагальніше порушення яких-небудь вимог або очікувань, що не обов'язково виявляється зовні (до дефектів відносяться і порушення стандартів кодування, недостатня гнучкість системи і ін.).
- failure— спостережуване порушення вимог, що виявляється при якомусь реальному сценарії роботи ПО. Це можна назвати проявом помилки.
- fault— помилка в коді програми, що викликає порушення вимог при роботі (failures), те місце, яке треба виправити. Хоча це поняття використовується досить часто, воно, взагалі кажучи, не цілком чітке, оскільки для усунення порушення можна виправити програму в декількох місцях. Що саме треба виправляти, залежить від додаткових умов, виконання яких ми хочемо при цьому забезпечити, хоча в деяких ситуаціях накладення додаткових обмежень не усуває неоднозначність.
- error— використовується в двох сенсах. Перший — це помилка в ментальній моделі програміста, помилка в його міркуваннях про програму, яка примушує його робити помилки в коді (faults). Це, власне, помилка, яку зробила людина в своєму розумінні властивостей програми. Другий сенс — це некоректні значення даних (вихідних або внутрішніх), які виникають при помилках в роботі програми.