Kas ir vienības testēšana?
VIENĪBU TESTS ir programmatūras testēšanas veids, kurā tiek pārbaudītas atsevišķas programmatūras vienības vai komponenti. Mērķis ir pārbaudīt, vai katra programmatūras koda vienība darbojas kā paredzēts. Vienības testēšana tiek veikta izstrādātāju izstrādātās (kodēšanas fāzes) laikā. Vienības testi izolē koda sadaļu un pārbauda tā pareizību. Vienība var būt atsevišķa funkcija, metode, procedūra, modulis vai objekts.
SDLC, STLC, V Model, Unit testing ir pirmā līmeņa pārbaude, kas veikta pirms integrācijas testēšanas. Vienības testēšana ir WhiteBox testēšanas tehnika, kuru parasti veic izstrādātājs. Lai gan praktiskajā pasaulē laika trūkuma dēļ vai izstrādātāju nevēlēšanās veikt testus, kvalitātes nodrošināšanas inženieri veic arī vienību testēšanu.
Šajā apmācībā jūs uzzināsiet
- Kāpēc testēšana vienībā?
- Kā veikt vienību testēšanu
- Vienību testēšanas paņēmieni
- Vienību testēšanas rīki
- Testa virzīta izstrāde (TDD) un vienību testēšana
- Vienības pārbaudes mīts
- Vienības testēšanas priekšrocība
- Vienības testēšanas trūkumi
- Vienības pārbaude par labāko praksi
Kāpēc testēšana vienībā?
Vienību testēšana ir svarīga, jo programmatūras izstrādātāji dažreiz mēģina ietaupīt laiku, veicot minimālu vienību testēšanu, un tas ir mīts, jo neatbilstoša vienību testēšana rada augstas izmaksas Defektu novēršana sistēmas testēšanas, integrācijas testēšanas un pat beta testēšanas laikā pēc lietojumprogrammas izveides. Ja agrīnā izstrādē tiek veikta pareiza vienības pārbaude, tas galu galā ietaupa laiku un naudu.
Šeit ir galvenie iemesli, lai programmatūras inženierijā veiktu vienību testēšanu:

- Vienības testi palīdz novērst kļūdas izstrādes cikla sākumā un ļauj ietaupīt izmaksas.
- Tas palīdz izstrādātājiem izprast testēšanas koda bāzi un ļauj ātri veikt izmaiņas
- Labi vienības testi kalpo kā projekta dokumentācija
- Vienības testi palīdz koda atkārtotai izmantošanai. Migrējiet gan kodu, gan testus uz jauno projektu. Pielāgojiet kodu, līdz testi atkal darbojas.
Kā veikt vienību testēšanu
Lai veiktu vienību testēšanu , izstrādātāji uzraksta koda sadaļu, lai pārbaudītu noteiktu funkciju lietojumprogrammā. Izstrādātāji var arī izolēt šo funkciju, lai veiktu precīzāku pārbaudi, kas atklāj nevajadzīgas atkarības starp pārbaudāmo funkciju un citām vienībām, lai atkarības varētu novērst. Izstrādātāji parasti izmanto UnitTest sistēmu, lai izstrādātu automatizētus testēšanas gadījumus vienību testēšanai.
Vienību testēšana ir divu veidu
- Manuāli
- Automatizēts
Vienību testēšana parasti ir automatizēta, taču to joprojām var veikt manuāli. Programmatūras inženierija nedod priekšroku vienam pār otru, bet priekšroka dodama automatizācijai. Manuālā pieejā vienības testēšanai var izmantot pakāpenisku instrukciju.
Saskaņā ar automatizēto pieeju
- Izstrādātājs raksta koda sadaļu lietojumprogrammā, lai tikai pārbaudītu funkciju. Vēlāk viņi komentēs un beidzot noņems testa kodu, kad lietojumprogramma būs izvietota.
- Izstrādātājs varētu arī izolēt funkciju, lai to stingrāk pārbaudītu. Šī ir rūpīgāka vienību testēšanas prakse, kas ietver koda kopēšanu un ielīmēšanu paša testēšanas vidē, nevis tā dabiskajā vidē. Koda izolēšana palīdz atklāt nevajadzīgas atkarības starp testējamo kodu un citām vienībām vai datu vietām produktā. Pēc tam šīs atkarības var novērst.
- Kodētājs parasti izmanto UnitTest Framework, lai izstrādātu automatizētus testa gadījumus. Izmantojot automatizācijas sistēmu, izstrādātājs kodē kritērijus testā, lai pārbaudītu koda pareizību. Pārbaudes gadījumu izpildes laikā ietvarstruktūra reģistrē neveiksmīgus testa gadījumus. Daudzi ietvari arī automātiski atzīmēs un ziņos par šiem neveiksmīgajiem testa gadījumiem. Atkarībā no neveiksmes smaguma ietvars var apturēt turpmāko testēšanu.
- Vienību testēšanas darbplūsma ir 1) Izveidot testa gadījumus 2) Pārskatīšana / Pārstrāde 3) Sākotnējā situācija 4) Izpildīt testa gadījumus.
Vienību testēšanas paņēmieni
Šīs vienības Testēšanas metodes galvenokārt iedalīt trijās daļās, kas ir Melnās kastes testēšana, kas ir saistīta ar testēšanu ar lietotāja saskarni kopā ar ieejas un izejas, White kastes testēšana, kas ietver testēšanas funkcionālo uzvedību lietojumprogrammu un pelēks lodziņš testēšana, kas tiek izmantots, lai veiktu pārbaudi, komplekti, testa metodes, testa gadījumi un riska analīzes veikšana.
Vienības testēšanā izmantotie koda pārklājuma paņēmieni ir uzskaitīti zemāk:
- Paziņojuma pārklājums
- Lēmuma aptvērums
- Filiāles pārklājums
- Stāvokļa pārklājums
- Ierobežota stāvokļa mašīnu pārklājums
Plašāku informāciju skatiet vietnē https://www.guru99.com/code-coverage.html
Vienības testa piemērs: izspēles objekti
Vienības testēšana balstās uz izdomātu objektu izveidošanu, lai pārbaudītu koda sadaļas, kas vēl nav pilnīgas lietojumprogrammas daļa. Izspēles objekti aizpilda trūkstošās programmas daļas.
Piemēram, jums var būt funkcija, kurai nepieciešami mainīgie vai objekti, kas vēl nav izveidoti. Vienības testēšanā tie tiks uzskaitīti izspēles objektu veidā, kas izveidoti tikai vienības testēšanas nolūkā, kas veikts šajā koda sadaļā.
Vienību testēšanas rīki
Ir pieejamas vairākas automatizētas vienības testēšanas programmatūras, kas palīdz veikt vienības testēšanu. Tālāk sniegsim dažus piemērus:
- Junit: Junit ir bezmaksas lietojams testēšanas rīks, ko izmanto Java programmēšanas valodā. Tas sniedz apgalvojumus, lai identificētu testa metodi. Šis rīks vispirms pārbauda datus un pēc tam ievieto koda fragmentā.
- NUnit: NUnit ir plaši izmantota vienību testēšanas ietvara izmantošana visām .net valodām. Tas ir atvērtā koda rīks, kas ļauj rakstīt skriptus manuāli. Tas atbalsta ar datiem pamatotus testus, kurus var veikt paralēli.
- JMockit: JMockit ir atvērtā koda vienību testēšanas rīks. Tas ir koda pārklājuma rīks ar līniju un ceļu metriku. Tas ļauj izsmiet API ar ierakstīšanas un verifikācijas sintaksi. Šis rīks piedāvā līnijas pārklājumu, ceļa pārklājumu un datu pārklājumu.
- EMMA: EMMA ir atvērtā koda rīkkopa Java valodā rakstīta koda analizēšanai un ziņošanai. Emma atbalsta pārklājuma veidi, piemēram, metode, līnija, pamata bloks. Tas ir balstīts uz Java, tāpēc tam nav ārēju bibliotēku atkarību un tas var piekļūt avota kodam.
- PHPUnit: PHPUnit ir vienības testēšanas rīks PHP programmētājam. Tas aizņem mazas koda daļas, kuras sauc par vienībām, un pārbaudiet katru no tām atsevišķi. Šis rīks arī ļauj izstrādātājiem izmantot iepriekš definētas apgalvojuma metodes, lai apgalvotu, ka sistēma rīkojas noteiktā veidā.
Šie ir tikai daži no pieejamajiem vienību testēšanas rīkiem. Ir daudz vairāk, it īpaši attiecībā uz C valodām un Java, taču jūs noteikti atradīsit vienības testēšanas rīku programmēšanas vajadzībām neatkarīgi no izmantotās valodas.
Testa virzīta izstrāde (TDD) un vienību testēšana
Vienības testēšana TDD ietver plašu testēšanas sistēmu izmantošanu. Vienības testa sistēma tiek izmantota, lai izveidotu automatizētus vienības testus. Vienību testēšanas ietvari nav unikāli TDD, taču tie tam ir būtiski. Zemāk mēs aplūkojam dažus no tā, ko TDD rada vienību testēšanas pasaulē:
- Testi tiek rakstīti pirms koda
- Paļaujas uz testēšanas sistēmu pamatu
- Visas pieteikumu klases tiek pārbaudītas
- Ātra un ērta integrācija ir iespējama
Vienības pārbaudes mīts
Mīts: Tas prasa laiku, un es vienmēr esmu pārpildījis. Mans kods ir akmeņains! Man nav nepieciešami vienības testi.
Mīti pēc savas būtības ir kļūdaini pieņēmumi. Šie pieņēmumi rada apburto loku šādi:
Patiesība ir vienības pārbaude palielina attīstības ātrumu.
Programmētāji domā, ka integrācijas testēšana aptvers visas kļūdas un neveic vienības pārbaudi. Kad vienības ir integrētas, ļoti vienkāršas kļūdas, kuras ļoti viegli varēja atrast un novērst pārbaudītajās vienībās, izsekošana un novēršana prasa ļoti ilgu laiku.
Vienības testēšanas priekšrocība
- Izstrādātāji, kuri vēlas uzzināt, kādu funkcionalitāti nodrošina vienība un kā to izmantot, var apskatīt vienības testus, lai gūtu pamata izpratni par vienības API.
- Vienības pārbaude ļauj programmētājam pārveidot kodu vēlāk un pārliecināties, vai modulis joprojām darbojas pareizi (ti, regresijas testēšana). Procedūra ir visu funkciju un metožu testa gadījumu uzrakstīšana, lai ikreiz, kad izmaiņas izraisa kļūdu, tās varētu ātri identificēt un novērst.
- Sakarā ar vienības testēšanas modulāro raksturu, mēs varam pārbaudīt projekta daļas, negaidot citu pabeigšanu.
Vienības testēšanas trūkumi
- Nevar gaidīt, ka vienības testēšana aptvers katru programmas kļūdu. Nav iespējams novērtēt visus izpildes ceļus pat vissīkākajās programmās
- Vienības testēšana pēc savas būtības ir vērsta uz koda vienību. Tādējādi tas nevar uztvert integrācijas kļūdas vai plašas sistēmas līmeņa kļūdas.
Vienības testēšanu ieteicams izmantot kopā ar citām testēšanas darbībām.
Vienības pārbaude par labāko praksi
- Vienības testa gadījumiem jābūt neatkarīgiem. Jebkuru uzlabojumu vai prasību izmaiņu gadījumā nevajadzētu ietekmēt vienības testa gadījumus.
- Pārbaudiet tikai vienu kodu vienlaikus.
- Ievērojiet skaidras un konsekventas nosaukuma noteikšanas vienību pārbaudes
- Ja kādā modulī tiek mainīts kods, pārliecinieties, vai modulim ir atbilstoša vienība Test Case, un modulis iztur testus pirms ieviešanas maiņas
- Vienības testēšanas laikā atklātās kļūdas ir jānovērš pirms nākamās SDLC fāzes
- Pieņemiet pieeju "tests kā kods". Jo vairāk koda jūs rakstāt bez testēšanas, jo vairāk ceļu jums jāpārbauda, vai nav kļūdu.

Kopsavilkums
- VIENĪBU TESTĒŠANA tiek definēta kā programmatūras testēšanas veids, kurā tiek pārbaudītas atsevišķas programmatūras vienības vai komponenti.
- Kā redzat, vienību testēšanā var būt daudz iesaistīts. Tas var būt sarežģīts vai diezgan vienkāršs atkarībā no testējamās lietojumprogrammas un izmantotajām testēšanas stratēģijām, rīkiem un filozofijām. Vienības pārbaude vienmēr ir nepieciešama kādā līmenī. Tā ir pārliecība.