Defekt Błędy Bug i Debugging

Ponieważ często w branży IT używa się słowa „błąd, bug, debuggowanie” nie zawsze w dobrym kontekście, postanowiłem przytoczyć kilka wyjaśnień, między innymi dlatego, że zgodnie z zaproponowaną nomenklaturą ISTQB błąd i defekt mają różne przyczyny…

O błędzie powinniśmy mówić w kontekście działania człowieka (np. programisty :], natomiast o defekcie mówimy jako o rezultacie tego błędu popełnionego przez człowieka, np. błędu w kodzie, który spowoduje w efekcie defekt oprogramowania.

W praktyce jednak często wrzucamy błąd i defekt/usterkę do jednego worka i nie uważam tego za problem, nawet w firmach z dużymi działami testów/programowania stosuje się zamiennie te pojęcia. Nie zmienia to faktu, że należy wiedzieć o tej różnicy, gdyż ktoś, gdzieś może Was zapytać o różnicę między błędem a defektem :)

Krótki swojski słowniczek:

Błąd, pomyłka – działanie człowieka powodujące powstanie nieprawidłowego rezultatu. Jest to niezgodne z oczekiwanym zachowanie niepożądane.

Defekt, problem, usterka, bug – wada modułu lub systemu, która może spowodować, że moduł lub system nie wykona zakładanej czynności

Błąd krytyczny jest to błąd dużo wyższej rangi niż zwykłe błędy,  który wpływa na działanie całego programu lub innych jego modułów.

Błąd blokujący jest to błąd który uniemożliwia podjęcie dalszych testów, np. sytuacja, w której na skutek błędu aplikacja wysypuje się i uniemożliwia dalsze jej funkcjonowanie.

Podsumowując, człowiek (programista, analityk, architekt, …) popełnia błąd w wyniku czego w systemie pojawia się defekt, którego użycie podczas pracy systemu (uruchomienie wadliwego fragmentu kodu, użycie wadliwej konfiguracji, …) może prowadzić do awarii. Tester w trakcie uruchomienia programu nie widzi więc błędu, lecz awarię będącą pochodną defektu wynikającego z błędu człowieka.

błąd -> defekt -> awaria

Debugowanie z angielskiego  debugging to po polsku odrobaczanie, jest to proces analizowania, wyszukiwania i eliminacji wad i błędów w oprogramowaniu poprzez krokowe, linia po linii; wykonywanie kodu. Debugowanie wykonywane jest przez programistów często po informacji zwrotnej testera o występującym w jakimś module błędzie.

Ale dlaczego właściwie bug? Zainteresowanych zostawiam z tajemniczym zdjęciem i odsyłam do Wikipedii, a także do samodzielnych poszukiwań w temacie.