Niektórzy programiści mówią, że „każdy przetestowany program ma co najmniej jeszcze jeden błąd” (prawo Lubarskiego).
Oprogramowanie można testować za pomocą testów jednostkowych, testów regresji i innych metod, które są wykonywane ręcznie lub najczęściej automatycznie, ponieważ ilość kodu do przetestowania może być dość duża. Na przykład NASA ma wyjątkowo rygorystyczne procedury testowania oprogramowania dla wielu systemów operacyjnych i funkcji komunikacyjnych. Wiele operacji opartych na NASA wchodzi w interakcje i identyfikuje się nawzajem za pomocą programów sterujących. Dzięki temu wiele osób pracujących w NASA może sprawdzać i oceniać ogólnie systemy funkcjonalne. Programy zawierające oprogramowanie sterujące pozwalają na łatwiejsze współdziałanie inżynierii sprzętowej i operacji systemowych.