Programska oprema je testirana, da se potrdi, da so vsi veljavni vhodi pravilno interpretirani in izvedeni, medtem ko so napačni vhodi izvrženi. Preizkusi tudi potrjujejo, da so rezultati ustvarjeni učinkovito in da je z veliko količino podatkov mogoče obdelati brez zapletov. Testiranje se lahko izvaja ročno ali elektronsko. Avtomatizirano testiranje programske opreme vključuje uporabo specializirane programske opreme za testiranje kode, ki je v razvoju. Takšno testiranje koristi procesu razvoja programske opreme, če se uporablja preudarno.
Ročni testi so odvisni od natančnosti ljudi, ki testirajo. Ročno testiranje programske opreme je zamudno in za večino aplikacij potrebuje veliko število preizkuševalcev in razvijalcev. To povečuje stroške razvoja. Poleg tega ima ročno preizkušanje omejitev, da velike količine podatkov ali velikega števila hkratnih uporabnikov ali vnosov ni mogoče enostavno testirati.
Avtomatizirano testiranje programske opreme programsko nadzoruje izvedbo testa in vrednotenje rezultatov. Programska oprema za testiranje zagotavlja vhode, ki ustrezajo različnim pogojem, za programsko opremo, ki se ocenjuje. Za vsak niz pogojev programska oprema za testiranje primerja dejanske rezultate z želenimi in vzdržuje statistiko o skupnem obnašanju ciljne programske opreme. Po “teku” programska oprema za testiranje običajno zagotovi povzetke rezultatov, tako da lahko ljudje hitro ugotovijo, kaj je treba popraviti.
Pri avtomatiziranem testiranju programske opreme so dolgočasne naloge, povezane s testiranjem, kot je prijava ali vnos podatkov, kot so poštni naslovi, mehanizirane. V vsaki vožnji je mogoče preizkusiti številne kombinacije pogojev. Ker avtomatizirano testiranje vključuje uporabo računalnikov in programske opreme, omogoča tudi simulacijo velikih obremenitev vhodnih podatkov ali izjemno hitrih vnosov. Vsako izvedbo številnih preskusnih pogojev je mogoče zaključiti v nekaj urah. Zato je avtomatizirano testiranje zelo uporabno za regresijsko testiranje, ki zagotavlja, da nova funkcija ali popravek napake ni nehote pokvaril predhodno delujočo kodo.
Nekatere nedavne razvojne metodologije, kot je Extreme Programming, poudarjajo, da so testi na voljo pred kodiranjem. Razvojne metodologije poudarjajo, da se regresijsko testiranje izvaja večkrat na dan, da se zagotovi pravilnost programske opreme, ko se razvija. Če se mora ekipa za programsko opremo držati te metodologije za katero koli pomembno programsko opremo, postane obvezno, da se uporabi avtomatsko testiranje programske opreme.
Programsko opremo za testiranje avtomatizacije je treba napajati z želenimi vhodi in izhodi. Eden od načinov za to je, da v programsko opremo shranite pogoje ročnega testiranja. Drug način je pisanje kode za ustvarjanje različnih pogojev v sprejemljivih mejah programske opreme, ki jo je treba testirati. Tako je osnova avtomatiziranega testiranja programske opreme vsekakor človeški trud. Programska oprema za avtomatsko testiranje sama po sebi ne more preseči tega.
Avtomatizirano testiranje programske opreme ima precejšnje stroške v smislu programske opreme, ki jo je treba pridobiti, pa tudi pri njeni uporabi. Ključne odločitve sta torej, ali avtomatizirati in kateri del testiranja avtomatizirati. Samodejno testiranje ni primerno za funkcije in okolja, za katera se pričakuje, da se bodo bistveno spremenile. V večini aplikacij je primerna kombinacija ročnega in avtomatiziranega testiranja.