3.6.3 Testimise metodoloogiad. Automaatsed testimisvahendid

Süsteemi kasvades tekib testitavaid kohti nõnda palju, et nende pidev käsitsi üle käimine kipub kergesti kurnavaks osutuma. Samas on loodud ning viimastel aastatel tuntuks saanud hulk automaatse testimise vahendeid. Automaatsed testid võimaldavad programmeerija aega nõudmata läbi käia mõne minutiga tuhandeid kontrolle kindlaks tegemaks, et lisatud täiendus pole midagi lahenduse varasema toimimise juures ära rikkunud.
Varakult levis klasside automaatse testimise perekond alates JUnitist Java klasside jaoks, kuid populaarsuse tõttu võib selliseid testimisvahendeid leida enamikes programmeerimiskeeles kirjutatud klasside tarbeks. Selle testimisrakenduse saab eraldi installida ja käivitada, samas on automaattestimise võimalused sisse ehitatud ka suurematesse arenduskeskkondadesse. Klasside koodi toimimise testid kirjutatakse võimalusel küllalt lühikesed ja spetsiifilised, et kui on juba teada milline test läbi ei läinud, siis suure tõenäosusega on juba testi nime järgi võimalik kindlaks teha mis laadi veaga on tegemist ning pole põhjust testi enese koodi põhjalikumalt süveneda.
Mõnegi olukorra tekitamiseks on teinekord vaja päris palju ettevalmistusi, selle tarbeks on testide juures eraldi alamprogrammid, mis uuritava süsteemi soovitud olekusse viivad, et sellega oleks võimalik katseid läbi viia. Testimine võib nõuda suhtlust väliste süsteemidega. Samas on hea, kui testimise käigus ei koormata liialt välissuhtluskanaleid, sest automaatteste käivitatakse sageli. Näiteks kui on vaja kontrollida, kas süsteemi saadetud kirjale tuli rakenduse poolt adekvaatne vastus, siis ei pea mitte vaene klient igal testimiskorral uut tellimuskirja saatma ja tulemust üle vaatama, vaid testi juurde luuakse liba-lisamoodul selliste kirjade saatmiseks ning tulemuse kinni püüdmiseks ja kontrolliks. Viimast juba võib ilma kedagi tülitamata palju kordi ja sageli käivitada. Nõudlikuma rakenduse puhul võib testide loomisele kulutatav ressurss ületada märgatavalt rakenduse enese koostamisele kuluva - samas aga see on üks üsna hea moodus tagada rakenduse töö korrektsust. Arukate testide loomine võib mõnelgi juhul üles kaaluda võimaliku tekkiva kahju - piisab vaid näiteks ette kujutada segadust, mis juhtuks, kui kontonumbrid mõnes pangarakenduses vahetusse lähevad.
Automaatselt on võimalik testida ka kujunduse ning veebiühendusega seotud rakenduse osi. Programmikoodi ja seadistuste abil õpetatavad robotid suudavad täita ekraanivälju, saata andmeid ning kontrollida tulemusi. Nii on võimalik näiteks süsteemi platvormi vahetamisel rakenduse töövõime säilimiseks koostada testid olemasoleva rakenduse töö kohta. Pärast platvormivahetust tööle pandud uues süsteemis saab nende testide järgi kontrollida, kas see vastab samadele nõuetele kui vana - vähemalt loodud testide ulatuses. Samuti saab selliseid automaatteste pidada formaliseeritud dokumentatsiooniks mille kaudu tellija ja teostaja tehtavas kokku lepivad. Teostaja võib siis arvestada, et kui rakendus läbib kokkulepitud testid ning käitub ka muus osas vastavalt juhistele, siis saab ta oma töö valmiks lugeda.