User:Kert944/sandbox

Mudelipõhine testimine on, mudelipõhise disaini rakendus, tarkvara või süsteemi testimise jaoks. Mudeleid kasutatakse, et näidata kuidas testitav süsteem (System under test) peaks käituma, või näitamaks testimise strateegiaid ja- keskkonda.

Mudel, mis näitab testitavat süsteemi, on tavaliselt abstraktne ja osaline väljendus soovitud süsteemi käitumisest. Tuletatud testjuhud (test cases) sellest mudelist on samal abstraktsuse tasemel olevad funktsionaalsed testjuhud. Sellised testjuhud moodustavad kokku abstraktse testkomplekti (abstract test suite). Abstraktset testkomplekti ei saa kasutada testitava süsteemi testimiseks, kuna nad on erinevatel abstraktsuse tasemetel. Käivitatav testkomplekt tuletatakse vastavast abstraktsest testkomplektist. Käivitatav testkomplekt suudab testitava süsteemiga suhelda. Seda saavutatakse abstraktsete testjuhtude vastavusse seadmisel mingite konkreetsete, sellele süsteemile mõeldud, testjuhtudega. Mõned mudelipõhised testimiskeskkonnad sisaldavad piisaval hulgal informatsiooni, et genereerida käivitatavad testkomplektid automaatselt. Teistes keskkondades tuleb abstraktse testkomplekti elemendid viia vastavusse konkreetsete avaldiste või meetodi kutsetega tarkvaras.

Mudelitest saab teste koostada mitmel viisil. Kuna tavaliselt on testimine pigem eksperimentaalse iseloomuga ja baseerub heurisitkatel, siis pole ühte parimat lähenemist testide tuletamiseks.

Mudelipõhine testimine liigitub musta-kasti testimiseks (black-box testing), kuna testkomplektid on tuletatud mudelitest, mitte lähtekoodist.

Suuremate süsteemide mudelipõhine testimine on siiani arenev valdkond.

Mudelid
Tavaliselt ehitatakse mudelid enne või paralleelselt neile vastava süsteemiga, kuigi neid koostatakse ka juba valmis süsteemide jaoks. Tuntumad keeled testide genereerimiseks on UML, SysML, tuntumad programmeerimiskeeled, lõplikud automaadid ja matemaatilised formalismid.

Teostus
Mudelipõhise testimise jaoks on mitmeid viise, mis ühendavad online testimise, offline käivitatavate testide genereerimise ja offline genereerimise käsitsi läbiviidavatele testidele.

Online testimine tähendab, et mudelipõhine testimise tööriist ühendub testitava süsteemiga otse ja testib seda dünaamiliselt.

Offline käivitatavate testide genereerimine tähendab, et mudelipõhise testimise tööriist genereerib testjuhud arvutile loetavana; näiteks Pythoni koodina.

Offline genereerimine käsitsi läbiviidavatele testidele tähendab, et mudelipõhine testimise tööriist loob testjuhud inimesele loetavas formaadis, mis aitavad manuaalset testijat testide läbiviimisel. Selleks võib olla näiteks PDF dokument, milles kirjeldatakse samme vastava testjuhu läbiviimiseks.

Algoritmiline testide tuletamine
Mudelipõhise testimise efektiivsus seisneb peamiselt automatiseerimise potentsiaalil, mida see lähenemine pakub. Kui mudel on masinloetav ja nii formaalne, et tema käitumine on hästi defineeritud, siis saab testjuhud tuletada automaatselt.

Levinumad märksõnad mudelipõhise testimise testide tuletamisele on lõplikud automaadid, üleminekusüsteemid, automaatne teoreemitõestus, piirangu loogika programmeerimine, mudeli kontrollimine, testide genereerimine Markovi mudeliga.