Mis on moodulite testimine? Definitsioon, näited

⚡ Nutikas kokkuvõte

Moodultestimine kontrollib üksikuid alamprogramme, alamrutiine, klasse ja protseduure, mitte kokkupandud programmi, seega ilmnevad defektid väikeses, hästi mõistetavas koodiplokis, kus neid on odav leida ja parandada.

  • 🎯 Eesmärk: Eesmärk on paljastada mooduli vigu, mitte demonstreerida, et moodul töötab.
  • orientatsioon: See meetod on suures osas valge kasti meetod, mida täiendavad spetsifikatsioonist lähtuvad musta kasti juhtumid.
  • Paralleelsus: Korraga saab testida mitut moodulit, mis lühendab üldist testimisakent.
  • 🔗 Kaks meetodit: Moodulid kombineeritakse kas inkrementaalselt, samm-sammult või mitte-inkrementaalselt ühe töökäiguga.
  • 🧰 Tellingud: Draiverid varustavad moodulit testandmetega, samas kui tüved asendavad mooduleid, mida see kutsub.
  • 🆚 Omandiline kuuluvus: Testijad kirjutavad mooduliteste pärast kodeerimist, arendajad aga ühikteste selle ajal.
  • ⚠️ Väljakutsed: Mitteinkrementaalne töö, valesti mõistetud testide topeltülesanded ja sagedane vigade otsimine võtavad suurema osa pingutusest.

Moodulite testimine selgitatud meetodite, draiverite, tüvede ja võrdlustega

Mis on moodulite testimine?

Mooduli testimine on tarkvara testimise tüüp, mis kontrollib programmi üksikuid alamprogramme, alamrutiine, klasse või protseduure. Kogu tarkvaraprogrammi korraga testimise asemel soovitab moodultestimine testida programmi väiksemaid ehitusplokke.

Moodulite testimine on suures osas valge kasti põhimõttel. Moodulite testimise eesmärk ei ole demonstreerida mooduli korrektset toimimist, vaid selles oleva vea olemasolu. See inversioon on oluline: testimisjärk, mis ei leia midagi, on kinnitanud väga vähe, samas kui testimisjärk, mis paljastab defekti, on oma töö teinud.

Mooduli tasemel testimine võimaldab testimisprotsessi sisse viia ka paralleelsuse, kuna see loob võimaluse testida mitut moodulit samaaegselt, selle asemel et oodata täielikku ehitust.

Miks teha moodulite testimist

Moodulite testimine on soovitatav, kuna see muudab defektide tuvastamise majanduslikku külge.

  • Programmi väiksemates osades vigade või vigade tuvastamise tõenäosus suureneb.
  • Mitut moodulit saab testida samaaegselt ja seetõttu toetab see lähenemisviis paralleelset testimist.
  • Testimise keerukust saab hõlpsalt hallata, kuna iga moodulit arutletakse eraldi.
  • Ühe mooduli seest leitud defekt on tracvõimeline töötlema väikest koodimahtu, seega lüheneb silumisaeg järsult.

Kuidas teha moodulite testimist?

Projekteerimine a testjuhtum on moodulitestimise oluline osa. Moodultesti testijuhtumite kavandamisel peab testija arvestama kahe asjaga.

  • Mooduli spetsifikatsioon
  • Mooduli lähtekood

Analüüsige mooduli loogikat, kasutades ühte või mitut järgmistest valge kast meetodid ja seejärel täiendada neid testjuhtumeid, rakendades Must kast meetodid mooduli spetsifikatsioonile. Realistlikud väärtused on sama olulised kui valitud teed, seega valmistage ette testi andmed juhtumite kõrval, mitte pärast.

Kui testjuhtumid on disainitud, on järgmine samm moodulite testimiseks kombineerimine. Kasutatav meetod on kas kasvav või mitte-inkrementaalne meetod.

  • Mitteinkrementaalne meetod — kõiki mooduleid testitakse eraldi. Esmalt ühendatakse kõik moodulid ja seejärel testitakse kogu programmi.
  • Inkrementaalne meetod — iga moodulit testitakse esmalt ja seejärel lisatakse see järk-järgult testitud kollektsiooni. See teostab samm-sammult uuesti testimise.
  • Järkjärgulise testimise raames on kaks lähenemisviisi, ülevalt alla ja põhjani katsetamine.
  • Mooduli käivitamiseks valitud andmetega on vaja draiverit testandmete edastamiseks, käivitamise jälgimiseks ja tulemuste jäädvustamiseks.

Kahe meetodi vahel valimine on kompromiss seadistamise pingutuse ja diagnoosimise lihtsuse vahel.

Aspekt Inkrementaalne meetod Mitteinkrementaalne meetod
Kombinatsioon Üks moodul korraga, lisatakse testitud kollektsiooni Kõik moodulid on ühendatud ja seejärel koos testitud
Tellinguid on vaja Rohkem draivereid ja tsensuuri, kirjutatud järk-järgult Vähem topeltteste, kuna olemas on päris moodulid
Rikke isolatsioon Tugev – tõrge osutab äsja lisatud moodulile Nõrk – rike võib alguse saada ükskõik kust
Sobib kõige paremini Suured ehitised paljude interaktiivsete moodulitega Väikesed programmid väheste moodulite ja madala sidestusega

Draiverid ja tüved moodulite testimisel

Ülalmainitud draiver on pool paarist. Kuna testitav moodul asub harva kõneahela ülaosas või allosas, asendavad testijad puuduva koodi mõlemal küljel näivkoodiga.

  • juht — asendab testitavast moodulist eespool asuva kutsuva mooduli. See annab testandmed, käivitab mooduli, jälgib selle täitmist ja jäädvustab tulemused. Alt-üles testimine sõltub draiveritest, sest madalamad moodulid on valmis enne kõrgemaid.
  • Stub — asendab testitavast allpool asuva kutsutud mooduli. See võtab kutse vastu ja tagastab fikseeritud, teadaoleva vastuse, et testitav moodul saaks oma teekonna lõpule viia. Ülalt-alla testimine sõltub tüvedest, kuna kõrgemal asuvad moodulid on esimesena valmis.

Töötatud juhtum muudab sidumise konkreetseks. Kui makse-arvutuse moodul on lõpetatud, kuid seda kutsuv kassaekraan pole veel lõpetatud, edastab draiver moodulile tellimuste kogusummade komplekti ja registreerib vastuse. Kui mooduli kutsutav maksuotsingu teenus on samuti lõpetamata, tagastab tüvi fikseeritud maksumäära, nii et arvutus jätkub. Kumbki tellinguosa ei saadeta; mõlemad visatakse ära, kui päris moodulid saabuvad, mistõttu on testi topeltülesannete valesti mõistmine hiljem korduva probleemina loetletud.

Näidisnäpunäiteid moodulite testimiseks

Enne moodulite testimist on siin mõned näpunäited, mida kaaluda.

  • RevVaadake enne kasutamist testjuhtumid üle.
  • Vältige segadust lahknevuste allika osas.
  • Kasutage automatiseeritud testimistööriistu.
  • Uurige muutujaid, mis peaksid muutumatuna püsima.
  • Enesetestide vältimiseks vahetage testijate vahel mooduleid.
  • Kasutage testjuhtumeid uuesti.

Viiendal näpunäitel on rohkem kaalu, kui selle pikkus viitab. Arendaja, kes testib ainult äsja kirjutatud moodulit, kordab samu eeldusi, mis tekitasid defekti, seega on moodulite vahetamine inimeste vahel üks odavamaid saadaolevaid kvaliteedi parandamise viise.

Üksuse testimine vs moodulite testimine

Paljudes meeskondades kasutatakse neid kahte terminit vaheldumisi, kuid autorlus ja ulatus erinevad.

Mooduli testimine Üksuse testimine
Moodulitestid on testide kogum, mille on koostanud testija pärast seda, kui arendaja on mõne koodi kirjutanud Ühiktestid on testide kogum, mille arendaja kirjutab tarkvaraarendusprotsessi käigus.
Moodulite testimine võib hõlmata ühiktestide kombineerimist Ühiktestimine võib üksusi testida isoleeritult

Moodulite testimine vs komponentide testimine vs integratsioonitestimine

Moodulite testimine asub kahe naabertaseme kõrval, mida on sellega lihtne segi ajada. Tabel eraldab need selle järgi, mida testitakse ja kes seda tavaliselt teeb.

Aspekt Mooduli testimine Komponentide testimine Integratsiooni testimine
Testi all Üks alamprogramm, klass või protseduur Üks iseseisev komponent koos selle otseste sõltuvustega Kombineeritud moodulite vahelised liidesed
Tavaline omanik Testija pärast koodi kirjutamist Tester Integratsioonitestija
Tellingud Draiverid ja stubid Väliste sõltuvuste tüved Järk-järgult vähem testide dubleerimist
Defekt paljastatud Mooduli sees olev loogikaviga Komponendi käitumisviga Liidese ja andmete edastamise viga

Igapäevases kasutuses komponentide testimine ja moodulite testimist käsitletakse sageli sama tegevusena, samas kui integratsiooni testimine algab alles siis, kui kõik üksikud moodulid on iseseisvalt läbinud.

Väljakutsed moodulite testimisel

Need on väljakutsed, millega meeskonnad moodulitestimise kasutuselevõtul kõige sagedamini kokku puutuvad.

  • Mitteastmeline testimine nõuab rohkem tööd — kõige esmalt kombineerimine tähendab, et üksainus tõrge võib saata testijad kogu programmi läbima.
  • Arusaamatuse test kahekordistub — tüvi, mis tagastab ebareaalse väärtuse, annab rohelise jooksu, mis ei tõesta midagi.
  • Silumiskatsed sageli — tellingute koodil on omad vead ja draiveri parandamisele kuluv aeg ei ole mooduli testimisele kulutatud aeg.
  • Peab koodist aru saama — valge kasti orientatsioon tähendab, et testija, kes ei oska moodulit lugeda, ei saa sellele sisukaid juhtimiskogemusi kujundada.

KKK

xUniti perekond katab enamiku keeli, kusjuures simuleeritud teegid pakuvad tüvesid ja katvustööriist näitab, millistele radadele jõuti. Valik järgib mooduli keelt, mitte testimise taset.

Mudel loeb mooduli lähtekoodi, loetleb harud ja pakub igaühele variandi, sh käsitsi läbimisel sageli kahe silma vahele jäävad piiriväärtused. RevIew on endiselt vajalik, sest genereeritud juhtumid kinnitavad koodi toiminguid, mitte spetsifikatsiooni nõudeid.

Jah, ja tellingute puhul toimivad sellised assistendid kõige paremini, kuna draiver või tüvi on teadaoleva kujuga korduv kood. Tagastatud väärtused vajavad ikkagi inimese otsust, sest usutava välimusega tüvi võib varjata otsitavat defekti.

Piisavalt, et mooduli iga haru ja iga piiri on vähemalt korra proovitud. Ainult protsendiline siht on eksitav, sest suur lausekatvus võib jätta terved otsustustulemused proovimata.

Pärast mooduli kompileerimist ja enne selle liideste koos harjutamist on see esimene testimise tase, mida rakendatakse esitatud koodile, mistõttu siin leitud defektid ei jõua kunagi integreerimise ega süsteemi etappideni.

Järgige olemasolevat koodi. Ülalt-alla lähenemine sobib projektidele, kus juhtimisloogika kirjutatakse esmalt ja alumised moodulid jäetakse välja; alt-üles lähenemine sobib projektidele, kus utiliidimoodulid kirjutatakse esmalt ja draiverid kutsuvad neid välja.

Moodul kompileerub puhtalt, selle spetsifikatsioon on saadaval, sõltuvused on kas olemas või tükeldatud ja testandmed on valmis. Spetsifikatsioonita alustamine muudab harjutuse koodi kirjelduseks.

Testimine ei suuda kunagi tõestada, et moodulil pole defekte, vaid ainult seda, et see on proovitud juhtumid üle elanud. Seetõttu annab moodulit murda püüdvate testide kavandamine rohkem teavet kui testide kavandamine, mis eeldatavasti õnnestuvad.

Võta see postitus kokku järgmiselt: