Kas yra vieneto testavimas?
VIENETO TESTAVIMAS yra programinės įrangos testavimo tipas, kai bandomi atskiri programinės įrangos vienetai ar komponentai. Tikslas yra patikrinti, ar kiekvienas programinės įrangos kodo vienetas veikia taip, kaip tikėtasi. Vieneto testavimas atliekamas kūrėjams kuriant programą (kodavimo etapą). Vieneto testai išskiria kodo sekciją ir patikrina jos teisingumą. Vienetas gali būti individuali funkcija, metodas, procedūra, modulis ar objektas.
SDLC, STLC, V Model, Unit testing yra pirmasis bandymo lygis, atliekamas prieš integravimo bandymą. Vieneto testavimas yra „WhiteBox“ testavimo technika, kurią paprastai atlieka kūrėjas. Nors praktiniame pasaulyje dėl sugaišto laiko ar kūrėjų nenoro atlikti bandymus, kokybės užtikrinimo inžinieriai taip pat atlieka vienetų bandymus.
Šioje pamokoje sužinosite
- Kodėl verta išbandyti vienetą?
- Kaip atlikti vieneto testavimą
- Vieneto testavimo metodikos
- Įrenginių tikrinimo įrankiai
- „Test Driven Development“ (TDD) ir vieneto testavimas
- Vienetas tikrina mitą
- Vieneto bandymo pranašumas
- Vieneto testavimo trūkumai
- Geriausių praktikų testavimo skyrius
Kodėl verta išbandyti vienetą?
Įrenginių testavimas yra svarbus, nes programinės įrangos kūrėjai kartais bando sutaupyti laiko, atlikdami minimalų vienetų testavimą, ir tai yra mitas, nes netinkamas vieneto testavimas lemia didelius defektų taisymo veiksmus atliekant sistemos testavimą, integracijos testavimą ir netgi beta versijos testavimą, kai tik sukuriama programa. Jei ankstyvame kūrime atliekamas tinkamas vieneto testavimas, tai galiausiai sutaupo laiko ir pinigų.
Čia pateikiamos pagrindinės vieneto testavimo programinės įrangos inžinerijoje priežastys:
- Vieneto testai padeda ištaisyti klaidas ankstyvame kūrimo ciklo etape ir taupo išlaidas.
- Tai padeda kūrėjams suprasti testavimo kodo bazę ir leidžia greitai atlikti pakeitimus
- Geri vieneto testai yra projekto dokumentai
- Vieneto testai padeda pakartotinai naudoti kodą. Perkelkite savo kodą ir testus į naują projektą. Patobulinkite kodą, kol bandymai vėl bus vykdomi.
Kaip atlikti vieneto testavimą
Kad atliktų „Unit Testing“ , kūrėjai parašo kodo sekciją, norėdami išbandyti konkrečią programinės įrangos funkciją. Kūrėjai taip pat gali izoliuoti šią funkciją, kad galėtų išbandyti griežčiau, o tai atskleidžia nereikalingas priklausomybes tarp bandomos funkcijos ir kitų vienetų, kad būtų galima pašalinti priklausomybes. Kūrėjai paprastai naudoja „UnitTest“ sistemą, kad sukurtų automatinius bandymo atvejus vieneto bandymams.
Vieneto testavimas yra dviejų tipų
- Rankinis
- Automatizuotas
Įrenginių bandymai paprastai yra automatizuoti, tačiau vis tiek gali būti atliekami rankiniu būdu. Programinės įrangos inžinerija nėra pirmenybė vienas kitam, tačiau pirmenybė teikiama automatizavimui. Rankiniu būdu atliekant vieneto bandymą gali būti naudojamas laipsniškas instrukcijos dokumentas.
Pagal automatinį požiūrį
- Kūrėjas programoje parašo kodo sekciją, kad tik patikrintų funkciją. Vėliau jie pakomentuos ir galiausiai pašalins bandymo kodą, kai bus įdiegta programa.
- Kūrėjas taip pat galėtų izoliuoti funkciją, kad ją būtų galima griežčiau išbandyti. Tai yra išsamesnė vieneto testavimo praktika, kai reikia nukopijuoti ir įklijuoti kodą į savo bandymų aplinką nei į natūralią aplinką. Kodo išskyrimas padeda atskleisti nereikalingas priklausomybes tarp bandomo kodo ir kitų gaminio vienetų ar duomenų tarpų . Tada šias priklausomybes galima pašalinti.
- Koderis paprastai naudoja „UnitTest Framework“ kurdamas automatizuotus bandymų atvejus. Naudodamas automatikos sistemą kūrėjas koduoja kriterijus į testą, kad patikrintų kodo teisingumą. Vykdant bandymo atvejus, sistema užregistruoja nepavykusius bandymo atvejus. Daugelis sistemų taip pat automatiškai pažymės ir praneš apie šiuos nepavykusius bandymo atvejus. Priklausomai nuo gedimo sunkumo, sistema gali sustabdyti vėlesnius bandymus.
- Vieneto testavimo darbo eiga yra 1) sukurkite bandymo atvejus 2) peržiūra / perdarymas 3) pradinė padėtis 4) vykdykite bandymo atvejus.
Vieneto testavimo metodikos
Į vienetai bandymų metodai dažniausiai skirstomi į tris dalis, kurios yra juodos dėžės testavimas, kuris apima testavimas vartotojo sąsaja kartu su įvesties ir išvesties, baltos dėžės testavimo kad atliekami bandymai funkcinę elgseną programinės įrangos ir pilkos dėžės testavimo, kuris yra naudojamas vykdyti testą rinkiniai, bandymo metodai, bandymo atvejai ir rizikos analizė.
Kodo aprėpties metodai, naudojami vieneto bandymuose, yra išvardyti toliau:
- Pareiškimo aprėptis
- Sprendimų aprėptis
- Filialo aprėptis
- Būklės aprėptis
- Galutinė valstybės mašinų aprėptis
Daugiau informacijos rasite apsilankę https://www.guru99.com/code-coverage.html
Vieneto bandymo pavyzdys: tyčiniai objektai
Vieneto testavimas priklauso nuo kuriamų imitacinių objektų, kad būtų galima patikrinti kodo sekcijas, kurios dar nėra visos programos dalis. Projekto objektai užpildo trūkstamas programos dalis.
Pavyzdžiui, galbūt turite funkciją, kuriai reikalingi kintamieji ar objektai, kurie dar nėra sukurti. Atliekant vieneto bandymą, jie bus apskaitomi kaip bandomieji objektai, sukurti tik toje kodo dalyje atlikto vieneto bandymo tikslais.
Įrenginių tikrinimo įrankiai
Yra keletas automatinio vieneto bandymo programinės įrangos, kuri padeda atlikti bandymus. Toliau pateiksime keletą pavyzdžių:
- „Junit“: „Junit“ yra laisvai naudojamas testavimo įrankis, naudojamas „Java“ programavimo kalbai. Jame pateikiami teiginiai siekiant nustatyti bandymo metodą. Šis įrankis pirmiausia patikrina duomenis ir tada įterpia į kodo dalį.
- NUnit: NUnit yra plačiai naudojamas vieneto testavimo pagrindas, naudojamas visoms .net kalboms. Tai yra atvirojo kodo įrankis, leidžiantis scenarijus rašyti rankiniu būdu. Jis palaiko duomenimis pagrįstus bandymus, kurie gali vykti lygiagrečiai.
- „JMockit“: „JMockit“ yra atvirojo kodo vieneto testavimo įrankis. Tai kodo aprėpties įrankis su linijos ir kelio metrika. Tai leidžia tyčiotis iš API su įrašymo ir tikrinimo sintakse. Šis įrankis siūlo linijos aprėptį, kelio aprėptį ir duomenų aprėptį.
- EMMA: EMMA yra atvirojo kodo įrankių rinkinys, skirtas analizuoti ir pranešti apie „Java“ kalba parašytą kodą. „Emma“ palaiko aprėpties tipus, tokius kaip metodas, linija, pagrindinis blokas. Tai yra „Java“ pagrindu, todėl be išorinių bibliotekos priklausomybių ir gali pasiekti šaltinio kodą.
- PHPUnit: PHPUnit yra vieneto testavimo įrankis, skirtas PHP programuotojui. Tam reikia nedidelių kodo dalių, kurios vadinamos vienetais, ir išbandykite kiekvieną iš jų atskirai. Šis įrankis taip pat leidžia kūrėjams naudoti iš anksto apibrėžtus tvirtinimo metodus teigti, kad sistema elgiasi tam tikru būdu.
Tai tik keletas galimų vieneto testavimo įrankių. Yra daug daugiau, ypač C kalboms ir „Java“, bet jūs tikrai rasite vieneto testavimo įrankį savo programavimo reikmėms, nepaisant jūsų vartojamos kalbos.
„Test Driven Development“ (TDD) ir vieneto testavimas
Vieneto testavimas TDD apima platų bandymų sistemų naudojimą. Vieneto testavimo sistema naudojama automatiniams vieneto testams sukurti. Įrenginių testavimo sistemos nėra unikalios TDD, tačiau jos jai yra būtinos. Žemiau apžvelgiame kai kuriuos dalykus, kuriuos TDD atneša į įrenginių testavimo pasaulį:
- Testai rašomi prieš kodą
- Labai priklauso nuo testavimo sistemų
- Testuojamos visos paraiškų klasės
- Galima greitai ir lengvai integruotis
Vienetas tikrina mitą
Mitas: Tam reikia laiko, ir aš visada esu perplanuotas. Mano kodas yra tvirtas! Man nereikia vieneto bandymų.
Mitai pagal savo prigimtį yra klaidingos prielaidos. Šios prielaidos sukelia užburtą ratą taip:
Tiesa yra vieneto bandymai, didinantys kūrimo greitį.
Programuotojai mano, kad integracijos testavimas užfiksuos visas klaidas ir neatliks vieneto testo. Kai vienetai bus integruoti, labai paprastos klaidos, kurias būtų galima lengvai rasti ir ištaisyti išbandytuose įrenginiuose, užtruks labai ilgai.
Vieneto bandymo pranašumas
- Kūrėjai, norintys sužinoti, kokias funkcijas teikia vienetas ir kaip jais naudotis, gali pažvelgti į vieneto testus, kad gautų pagrindinį supratimą apie vieneto API.
- Vieneto testavimas leidžia programuotojui vėliau modifikuoti kodą ir įsitikinti, kad modulis vis dar veikia tinkamai (t. Y. Regresijos testavimas). Procedūra yra visų funkcijų ir metodų bandomųjų atvejų užrašymas, kad kiekvieną kartą, kai pakeitimas sukeltų gedimą, jį būtų galima greitai nustatyti ir išspręsti.
- Dėl modulinio bandymo pobūdžio mes galime išbandyti projekto dalis nelaukdami, kol kiti bus baigti.
Vieneto testavimo trūkumai
- Negalima tikėtis, kad vieneto bandymai užfiksuos kiekvieną programos klaidą. Neįmanoma įvertinti visų vykdymo būdų net pačiose trivialiausiose programose
- Vieneto testavimas pagal savo pobūdį sutelktas į kodo vienetą. Taigi jis negali sugauti integracijos klaidų ar plačių sistemos lygio klaidų.
Rekomenduojama, kad vieneto testavimas būtų naudojamas kartu su kita testavimo veikla.
Geriausių praktikų testavimo skyrius
- „Unit Test“ atvejai turėtų būti nepriklausomi. Bet kokių patobulinimų ar reikalavimų pasikeitimo atveju vienetinių bandymų atvejai neturėtų būti paveikti.
- Vienu metu išbandykite tik vieną kodą.
- Laikykitės aiškių ir nuoseklių pavadinimų nustatymo vienetų bandymuose
- Pasikeitus bet kurio modulio kodui, įsitikinkite, kad moduliui yra atitinkamas testo atvejis, ir modulis išlaikė testus prieš keisdamas diegimą
- Vieneto bandymų metu nustatytos klaidos turi būti pašalintos prieš pereinant prie kito SDLC etapo
- Priimkite metodą „testas kaip jūsų kodas“. Kuo daugiau kodo parašysite be bandymų, tuo daugiau kelių turėsite patikrinti, ar nėra klaidų.
Santrauka
- VIENETO TESTAVIMAS apibrėžiamas kaip programinės įrangos testavimo tipas, kai bandomi atskiri programinės įrangos vienetai ar komponentai.
- Kaip matote, vieneto bandymuose gali būti daugybė dalyvių. Tai gali būti sudėtinga arba gana paprasta, priklausomai nuo testuojamos programos ir naudojamų testavimo strategijų, įrankių ir filosofijų. Vieneto bandymai visada būtini tam tikru lygiu. Tai yra tikrumas.