Nodea — logo

Bug

Bug to błąd w oprogramowaniu — usterka w kodzie źródłowym, konfiguracji lub samym projekcie systemu, która powoduje, że program działa niezgodnie z oczekiwaniami: zwraca błędne wyniki, zachowuje się nieprzewidywalnie albo ulega awarii. Bugi są nieodłączną częścią wytwarzania oprogramowania; celem inżynierii jakości nie jest ich całkowite wyeliminowanie (to niemożliwe), lecz wczesne wykrywanie i minimalizowanie skutków.

Jak działa cykl życia buga

W zorganizowanych zespołach błąd przechodzi przez sformalizowany proces: zgłoszenie (issue z krokami reprodukcji, oczekiwanym i faktycznym zachowaniem), triage (ocena ważności i priorytetu), przypisanie, naprawa, code review, testy regresyjne i zamknięcie. Ze względu na charakter wyróżnia się m.in.:

  • błędy składniowe — wychwytywane przez kompilator lub linter przed uruchomieniem,
  • błędy logiczne — kod działa, ale liczy lub decyduje źle; najtrudniejsze do znalezienia,
  • błędy czasu wykonania — wyjątki, dzielenie przez zero, odwołania do null,
  • race conditions — błędy współbieżności ujawniające się losowo pod obciążeniem,
  • regresje — funkcje zepsute przez późniejsze zmiany w kodzie,
  • błędy bezpieczeństwa — podatności, które może wykorzystać atakujący.

Zastosowanie w praktyce — wykrywanie i naprawa

Podstawowym narzędziem programisty jest debugowanie: odtworzenie błędu, zawężenie przyczyny (debugger, logi, bisekcja zmian w Git) i poprawka wraz z testem, który zapobiegnie nawrotowi. Systemowo bugi ogranicza się przez testy jednostkowe i integracyjne w CI, analizę statyczną, code review oraz monitoring błędów na produkcji (np. Sentry), który agreguje wyjątki i pokazuje skalę problemu u realnych użytkowników.

Praktyczna wskazówka przy zgłaszaniu: dobry raport zawiera środowisko (wersja aplikacji, przeglądarka/system), minimalne kroki reprodukcji, wynik oczekiwany i faktyczny oraz logi lub zrzut ekranu. Taki opis skraca czas naprawy wielokrotnie, bo najdroższym etapem pracy nad bugiem jest zwykle jego odtworzenie. W przypadku błędów bezpieczeństwa zgłoszenia przyjmuje się odpowiedzialnie — coraz częściej w ramach programów bug bounty.

Powiązane pojęcia

Najczęstsze pytania

Skąd pochodzi określenie „bug”?

Termin oznaczający usterkę techniczną był używany przez inżynierów już w XIX wieku (m.in. przez Edisona). Spopularyzowała go informatyczna anegdota z 1947 roku, gdy zespół Grace Hopper znalazł ćmę zwierającą przekaźnik komputera Harvard Mark II i wkleił ją do dziennika z podpisem „pierwszy faktycznie znaleziony bug”.