Programinė įranga išbandoma siekiant patvirtinti, kad visos galiojančios įvestys yra teisingai interpretuojamos ir vykdomos, o neteisingos įvestys išmetamos. Bandymai taip pat patvirtina, kad rezultatai generuojami efektyviai ir ar galima tvarkyti didelį duomenų kiekį be trikdžių. Testavimas gali būti atliekamas rankiniu būdu arba elektroniniu būdu. Automatinis programinės įrangos testavimas apima specializuotos programinės įrangos naudojimą kuriamam kodui išbandyti. Toks testavimas naudingas programinės įrangos kūrimo procesui, kai jis taikomas apgalvotai.
Rankiniai testai priklauso nuo testą atliekančių žmonių kruopštumo. Rankinis programinės įrangos testavimas užtrunka daug laiko, todėl daugeliui programų reikia daug bandytojų ir kūrėjų. Tai padidina plėtros išlaidas. Be to, rankinis testavimas turi apribojimą, kad didelio duomenų kiekio arba didelio skaičiaus vienu metu naudojamų vartotojų ar įvesties negalima lengvai patikrinti.
Automatinis programinės įrangos testavimas programiškai kontroliuoja testo vykdymą ir išvesties įvertinimą. Testavimo programinė įranga pateikia įvestis, atitinkančias skirtingas sąlygas, į vertinamą programinę įrangą. Kiekvienam sąlygų rinkiniui testavimo programinė įranga lygina tikruosius rezultatus su norimais rezultatais ir palaiko statistiką apie bendrą tikslinės programinės įrangos elgseną. Po „paleidimo“ testavimo programinė įranga paprastai pateikia rezultatų suvestinę, kad žmonės galėtų greitai nuspręsti, ką reikia ištaisyti.
Atliekant automatinį programinės įrangos testavimą, varginančios užduotys, susijusios su testavimu, pavyzdžiui, prisijungimas arba duomenų, pvz., pašto adresų, įvedimas, yra mechanizuojamos. Kiekviename važiavime galima išbandyti daugybę sąlygų derinių. Kadangi automatizuotas testavimas apima kompiuterių ir programinės įrangos naudojimą, jis taip pat leidžia modeliuoti didelius įvesties duomenų kiekius arba ypač greitą įvestį. Kiekvieną bandymo sąlygų eigą galima atlikti per kelias valandas. Todėl automatinis testavimas yra labai naudingas regresijos testavimui, kuris užtikrina, kad nauja funkcija ar klaidų taisymas netyčia nepažeis anksčiau veikusio kodo.
Kai kurios naujausios kūrimo metodikos, pvz., Ekstremalus programavimas, pabrėžia, kad prieš koduojant galima atlikti testus. Kūrimo metodikose pabrėžiama, kad regresinis testavimas turi būti atliekamas kelis kartus per dieną, siekiant užtikrinti programinės įrangos teisingumą jai tobulinant. Jei programinės įrangos komanda turi laikytis šios metodikos bet kuriai reikšmingai programinei įrangai, tampa privaloma naudoti automatinį programinės įrangos testavimą.
Automatikos testavimo programinė įranga turi būti tiekiama norimais įėjimais ir išėjimais. Vienas iš būdų tai padaryti – programinėje įrangoje įrašyti rankinio testavimo sąlygas. Kitas būdas yra parašyti kodą, kad būtų sukurtos įvairios sąlygos, neperžengiant priimtinų testuojamos programinės įrangos ribų. Taigi automatizuoto programinės įrangos testavimo pagrindas neabejotinai yra žmogaus pastangos. Automatinio testavimo programinė įranga pati to negali viršyti.
Automatinis programinės įrangos testavimas turi didelių išlaidų, susijusių su įsigyjančia programine įranga ir jos naudojimu. Taigi, ar automatizuoti, ir kokią testavimo dalį automatizuoti, yra pagrindiniai sprendimai. Automatinis testavimas netinka funkcijoms ir aplinkoms, kurios turėtų labai pasikeisti. Daugumoje programų tinka rankinio ir automatinio testavimo derinys.