Virheetöntä ohjelmistoa ei ole olemassakaan. Ohjelmistot ovat ihmiskunnan monimutkaisimpia tuotteita, joten ei siis ihme, että niiden täydellinen testaaminen on mahdotonta. Netin kautta automaattisesti päivittyvät bugikorjaukset ovat jokaiselle koneenkäyttäjälle arkipäivää. Tietokoneiden lisäksi korjauksia tulee myös esimerkiksi matkapuhelimiin ja nykyisin jopa pelikonsoleihin.
Ohjelmistotieteilijä E.W. Dijkstra on lausunut jo 70-luvulla edelleen paikkansa pitävän faktan:
Testing shows the presence, not the absence of bugs.
Testaaminen on siis menetelmä, jolla ohjelmistojen virheitä voidaan osoittaa, mutta sen sijaan ohjelmiston virheettömyyttä ei voida aukottomasti todistaa. Niinpä testauksen avainkysymys onkin: koska ollaan testattu tarpeeksi? Toisin sanoen: koska yhden virheen löytämiseen käytetty aika on kokonaisuudessaan kannattavaa? Kannattavuuden määritelmä riippuu paljon ohjelmiston käyttökohteesta. Esimerkiksi lentokoneen ohjausjärjestelmän testaukseen käytetään useita vuosia, kun taas helposti päivitettävässä web-sovelluksessa päästään huomattavasti pienemmillä testauspanoksilla. Ohjelmointityön jälkeen löydettyjen virheiden määrä vähenee jatkuvasti suhteessa testaukseen käytettävään aikaan. Jokaisen sovelluksen kohdalla onkin erikseen määriteltävä, kuinka kauan kyseistä järjestelmää kannattaa testata. Millaisia ongelmia virheet aiheuttavat käyttäjille? Kuinka helppoa virheet on paikata jälkikäteen? Millainen testauspanostus tekee liiketoiminnasta vielä taloudellisesti kannattavaa?