Aby ułatwić zgłaszanie błędów testerom i użytkownikom oraz w celu śledzenia stanów błędów przez wszystkich zainteresowanych, powstały liczne systemy śledzenia błędów. Do jednych z nich należy Bugzilla (stworzony pierwotnie na potrzeby projektu Mozilla), do listopada 2014 r. stosowana przez fundację Wikimedia do zbierania informacji o błędach w oprogramowaniu Wikipedii i pokrewnych Wiki (została zastąpiona przez Phabricatora). W systemie Bugzilla każdy może zgłosić błąd, podając przy tym okoliczności, w jakich on występuje. Zgłoszenie to jest następnie przydzielane określonemu programiście, a aktualne informacje o postępach w naprawianiu usterki są udostępniane w systemie.
Typy błędów Z reguły wyróżnia się trzy główne typy błędów: Błędy składniowe – nie pozwalają na kompilację programu, jak np. literówka w nazwie zmiennej lub wywołaniu funkcji. Są one wykrywane przez kompilator i najczęściej dość łatwe do usunięcia. Zazwyczaj wynikają z drobnych pomyłek programisty. Błędy semantyczne (znaczeniowe) – część błędów semantycznych można wychwycić już w momencie kompilacji, np. próbę odczytania wartości niezainicjowanej zmiennej, lecz inne mogą ujawnić się dopiero w trakcie wykonywania. Błędy logiczne – nie przerywają kompilacji, lecz powodują niewłaściwe działanie warstwy logicznej jak np.