Błąd oprogramowania to dowolny błąd w kodzie używanym do tworzenia programu komputerowego. Błędy mogą powodować wiele różnych problemów w zależności od rodzaju programu i konkretnego rodzaju błędu. Na przykład niektóre błędy mogą powodować zawieszenie się programów i zaprzestanie ich działania. Inne mogą potencjalnie powodować błędy w działaniu programu, które powodują, że program zachowuje się w nieoczekiwany sposób. Czasami błąd oprogramowania może nawet spowodować całkowite zamknięcie programu.
Większość ekspertów programistycznych zgadza się, że stworzenie programu o dowolnej wielkości bez pojawienia się jakiegoś błędu w oprogramowaniu jest prawie niemożliwe. Przy bardziej skomplikowanych programach szanse na pojawienie się błędów generalnie wzrastają. Dzieje się tak, ponieważ programistom może być trudniej znaleźć wszystkie błędy w programach, w których istnieje wiele różnych działań, które użytkownicy mogą wykonać.
Aby znaleźć istniejące problemy z oprogramowaniem, programiści zazwyczaj robią wszystko, co w ich mocy, aby dokładnie przetestować programy przed udostępnieniem ich publicznie. Czasami mogą nawet zatrudnić specjalnych pracowników tylko w celu przetestowania oprogramowania tak szeroko, jak to możliwe i raportowania wyników programistom. Nawet przy tych wszystkich zabezpieczeniach wiele błędów oprogramowania nie jest wykrywanych przed wydaniem programów.
W niektórych przypadkach programiści mogą znaleźć błąd, ale uznają, że nie jest on na tyle poważny, aby uzasadniać opóźnienie wydania oprogramowania. Kiedy tak się stanie, programista może wydać program, a następnie opracować aktualizację, która naprawi pozostałe błędy. Jest to również typowe podejście do radzenia sobie z błędami wykrytymi po wydaniu programu.
Czasami program może być w ciągłym stanie zmian, ponieważ programiści mają tendencję do włączania z czasem większej liczby funkcji. Ten proces zazwyczaj wprowadza nowe problemy z oprogramowaniem w każdym wydaniu. Może to stać się niekończącym się cyklem, w którym programiści stale dodają funkcje do oprogramowania i naprawiają błędy. Zasadniczo program może nigdy nie zostać ukończony. Zamiast tego może stale ewoluować, doświadczając po drodze bólów wzrostu.
Tworzenie programu komputerowego polega na wykorzystaniu kodu napisanego w językach programowania. Natura kodowania komputerowego oznacza, że nawet drobne literówki i podobne błędy mogą łatwo doprowadzić do problemów z błędami oprogramowania, a programistom bardzo trudno jest uniknąć tworzenia kilku problemów w ten sposób. Istnieje również możliwość rozwoju błędów, ponieważ programista popełnia błąd logiczny podczas tworzenia kodu.