Sihilik vigade süstimine

Sihilik vigade süstimine või ka sihilik vea tekitamine on arvutisüsteemis kunstlike vigade tekitamine testimise eesmärgil. Sihilikku vigade sisestamist kasutatakse arvutisüsteemide töökindluse hindamisel. Teadlased ja insenerid on loonud vigade sisestamiseks palju uudseid meetodeid, mida saab rakendada nii riist- kui ka tarkvara testimisel.
Töökindluse hindamine hõlmab tõrgete ja vigade uurimist. Kokkujooksmiste destruktiivne iseloom ja tõrgete latentsus raskendavad süsteemi vigade põhjuste välja selgitamist. Eriti raske on tõrgete stsenaariumit taastada suurte komplekssüsteemide puhul. Süsteemi töökindluse uurimisel kasutatakse katsetel põhinevat lähenemisviisi võimalike vigade tuvastamiseks ja mõistmiseks. Sellist lähenemist kasutatakse nii kontseptsiooni-, disaini- kui ka prototüübifaasis.
Katsetel põhineva meetodi kasutamiseks tuleb eelnevalt mõista süsteemi ülesehitust, struktuuri ja käitumist. Täpsemalt on vaja teada süsteemi tolerantsi vigadele ja tõrgetele, võttes arvesse sisseehitatud tuvastamis- ja taastamismehhanisme ning kasutada tõrgete ja häirete loomiseks ja nende mõju jälgimiseks spetsiaalseid vahendeid.

Ülesehitus

Joonis 1 näitab vigade süstimissüsteemi, mis koosneb tavaliselt uuritavast süsteemist ja vigade sisestajast, vigade teegist, töökoormuse generaatorist, kontrollerist, seireseadmest, andmekogujast ja andmeanalüsaatorist.
Vigade sisestaja süstib tahtlikke vigu uuritavasse süsteemi kohe pärast töökoormusgeneraatori edastatud käsklusi. Seireseade jälgib käskluste täitmist ning vajadusel algatab andmete kogumise. Andmete koguja teostab reaalajas andmete kogumist ja andmete analüsaator töötleb ning analüüsib neid. Kontrolleri tööülesandeks on kogu eksperimendi juhtimine. Füüsiliselt on kontroller programm, mis võib töötada uuritavas süsteemis või eraldi arvutis. Vigade sisestajaks võib olla spetsiaalselt valmistatud riistvaraseade või tarkvaraprogramm. Vigade sisestaja toetab erinevaid veatüüpe, vigade tekke asukohamääramist, nende ilmumisaja muutmist ning erinevaid riistvara skeeme või tarkvara ülesehitusi, mille väärtused on defineeritud vigade teegis. Joonisel 1 olev vigade teek on eraldi komponent, mis võimaldab suuremat paindlikkust ja lihtsat teisaldamist. Töökoormuse generaatorit, jälgimisseadet ning muid komponente saab rakendada samal viisil.

Erinevad süsteemid

Insenerid kasutavad vigade sisestamist, et testida süsteemi või komponentide töökindlust. Süstemeetod uurib vigade tuvastamist, tõrgete lokaliseerimist ja ümber konfigureerimise ning  taastamise suutlikkust. Süstmeetodit saab rakendada nii riist- kui ka tarkvarasüsteemides, olenevalt sellest, mis tüüpi vigadest huvitutakse. Näiteks stuck-at-faults ehk vigade, mis sisestavad jääva väärtuse vooluringi kindlasse punkti, uurimiseks soovitatakse kasutada riistvara vigade süstimist, sest sellisel juhul on võimalik kontrollida ja muuta vea asukohta. Sama vea uurimine tarkvara vigade süstimismeetodi abil oleks olenevalt veast väga keeruline või isegi võimatu. Tarkvaralist lähenemist kasutatakse rohkem andmetega seonduvates süsteemides, näiteks rikutud andmete uurimine.

Riistvara- ja tarkvarapõhiste vigade võrdlus

Riistvara ja tarkvara meetodite erinevus seisneb peamiselt vigade sisestuse punktides, millele ligi pääsetakse, maksumuses ja häirituse tasemes. Riistvara meetoditega saab vigu süstida kiibi kontaktidesse ja sisemistesse komponentidesse nagu kombineeritud ahelad ja registrid, mis ei ole tarkvara-adresseeritavad. Tarkvarameetodid sobivad otse tarkvara tasandil (näiteks mälu, register) muudatuste tegemiseks. Seega riistvarametoodikat kasutatakse madala taseme vigade tuvastamise ja varjamise mehhanismide hindamiseks ning tarkvarameetodeid kõrgema taseme mehhanismide testimiseks. Tarkvarameetodid on odavamad, kuid need pole nii täpsed, sest testprogrammi jooksutatakse uuritava süsteemi sees.