Haruadekvaatsust saab illustreerida programmi graafil. Sellel vastab igale hargnemisele graafi tipp, millest väljub rohkem kui üks haru. Üksteisele järgnevad täidetavad hargnemiseta laused võib ühendada üheks tipuks. Haruadekvaatsuse nõuet võib sõnastada järgmiselt: testimise käigus peavad programmi graafi kõik kaared olema läbitud. Järgneval joonisel on kujutatud lihtne programm ja sellele vastav graaf. Graafis on kolm esimest lauset ühendatud üheks tipuks. Selle programmi lauseadekvaatseks testimiseks piisab ühest testist, mis läbib lause 5 (tooge testi näide). Samas haruadekvaatseks testimiseks tuleb teha vähemalt kaks testi - eelmisele lisaks ka test, mis läbib tühja else-haru. Kui selles harus oleks mingi lause, siis oleks nii lause- kui ka haruadekvaatseks testimiseks vaja teha vähemalt kaks testi. Programmi keerukus (kõik mõõdud on samaväärsed) V(G)= = programmi graafi tsüklomaatiline keerukus (cyclomatic complexity) V(G) = graafi regioonide arv
süstemaatiliselt vastavalt mingile kattekriteeriumile (test coverage/adequacy criterion). [KA+] Tuntuimad kattekriteeriumid on näiteks lauseadekvaatsus, haruadekvaatsus, kuid erinevaid kriteeriume on palju. Näiteks 100% lauseadekvaatsuse saavutamiseks on vajalik, et kõik programmi käivitatavad laused oleks testimise käigus käivitatud. Järgneva pseudokoodis programmilõigu, mis väljastab, kas sisestatud arv on 0 või ei, lauseadekvaatseks testimiseks oleks vajalik testida mingi negatiivse väärtusega, sest see võimaldab käivitada kõik programmi käivitatavad read: void foo(int a) { printf("Sisestasite "); if (a < 0) { printf("mitte"); } printf("positiivse täisarvu.n"); return; } Kasutades sisendina väärtust 0, jääb käivitamata lause printf("mitte");. Juhuslike andmetega testimine testimisel kasutatakse sisendandmetena juhuslikke andmeid