Testarea are în general scopul de a arăta că software-ul funcționează conform destinației, dar depanarea este procesul de eliminare a erorilor de la o aplicație software. Totuși, testarea este adesea mult mai complicată decât arătând doar că funcționează o aplicație software .
Pentru proiectele mari de software, testarea poate fi împărțită în mai multe faze în care fiecare fază are un scop distinct. Pentru proiectele mai mici, testarea și depanarea sunt uneori efectuate simultan.
Pe scară largă, testarea este menită să găsească defecte într-o aplicație software. Se urmărește să se demonstreze că software-ul își atinge funcționalitatea dorită la un anumit nivel, care, în general, este stabilit sub 100% din funcționalitate, deoarece este neobișnuit de dificil de realizat. Testarea poate fi efectuată manual, dar pentru proiecte mari, nu este neobișnuit să se automatizeze procesul.
Depanarea are rolul de a localiza și elimina erorile din software. Acesta este, de obicei, manual și efectuat o dată pentru fiecare bug, deoarece o eroare este diferită de alta. O eroare în majoritatea cazurilor este diferența dintre ceea ce o aplicație software face și ce intenționează să facă.
Bug-urile pot fi logice sau sintactice. Programele specializate care localizează aceste erori se numesc debuggeri, iar majoritatea mediilor de programare vin cu un debugger încorporat.