Hvad er enhedstestning?

Hvad er enhedstestning?

Enhedstest er en type softwaretest, hvor individuelle enheder eller komponenter i en software testes. Formålet er at validere, at hver enhed af softwarekoden fungerer som forventet. Unit Testing udføres under udviklingen (kodningsfasen) af en applikation af udviklerne. Enhedstests isolerer en kodesektion og verificerer dens rigtighed. En enhed kan være en individuel funktion, metode, procedure, modul eller objekt.

I SDLC, STLC, V Model er enhedstestning det første niveau af test udført før integrationstest. Enhedstestning er en hvidBox testteknik, som normalt udføres af udvikleren. Selvom, i en praktisk verden på grund af tidsklemme eller modvilje hos udviklere til test, udfører QA-ingeniører også enhedstest.

Hvad er enhedstest

Enhedstest videoforklaring

Hvorfor udføre enhedstest?

Enhedstest er vigtigt, fordi softwareudviklere nogle gange forsøger at spare tid ved at lave minimal enhedstest, og dette er myte, fordi uhensigtsmæssig enhedstest fører til høje omkostninger Defekt fiksering under Systemtest, Integrationstest og endda Beta-testning efter applikation er bygget. Hvis der udføres ordentlig enhedstest i den tidlige udvikling, sparer det tid og penge i sidste ende.

Her er de vigtigste grunde til at udføre enhedstest i softwareteknik:

Enhedstestniveauer
Enhedstestniveauer
  1. Enhedstest hjælper med at rette fejl tidligt i udviklingscyklussen og spare omkostninger.
  2. Det hjælper udviklerne med at forstå testkodebasen og gør dem i stand til at foretage ændringer hurtigt
  3. Gode ​​enhedstests fungerer som projektdokumentation
  4. Enhedstest hjælper med genbrug af kode. Migrer begge dine koder og dine tests til dit nye projekt. Juster koden, indtil testene kører igen.

Sådan udføres enhedstestning

For at udføre enhedstests skriver udviklere et kodeafsnit for at teste en specifik funktion i softwareapplikationen. Udviklere kan også isolere denne funktion for at teste mere strengt, hvilket afslører unødvendige afhængigheder mellem funktion, der testes, og andre enheder, så afhængighederne kan elimineres. Udviklere bruger generelt UnitTest-ramme at udvikle automatiserede testcases til enhedstestning.

Enhedstestning er af to typer

  • Manuel
  • Automatiseret

Enhedstestning er almindeligvis automatiseret, men kan stadig udføres manuelt. Software Engineering favoriserer ikke den ene frem for den anden, men automatisering foretrækkes. En manuel tilgang til enhedstestning kan anvende et trin-for-trin instruktionsdokument.

Under den automatiserede tilgang-

  • En udvikler skriver et kodeafsnit i applikationen bare for at teste funktionen. De ville senere kommentere og endelig fjerne testkoden, når applikationen er implementeret.
  • En udvikler kan også isolere funktionen for at teste den mere stringent. Dette er en mere grundig enhedstestpraksis, der involverer kopiering og indsætning af kode til sit eget testmiljø end dets naturlige miljø. At isolere koden hjælper med at afsløre unødvendige afhængigheder mellem koden, der testes og andre enheder eller datarum i produktet. Disse afhængigheder kan derefter elimineres.
  • En koder bruger generelt et UnitTest Framework til at udvikle automatiserede testcases. Ved hjælp af en automatiseringsramme koder udvikleren kriterier ind i testen for at verificere kodens rigtighed. Under udførelse af testcases logger rammeværket svigtende testcases. Mange rammer vil også automatisk markere og rapportere, sammenfattende, disse mislykkede testsager. Afhængigt af sværhedsgraden af ​​en fejl, kan rammen standse efterfølgende test.
  • Workflowet for Unit Testing er 1) Opret testcases 2) Review/Rework 3) Baseline 4) Udfør testsager.

Enhedstestteknikker

Enhedstestteknikker er hovedsageligt kategoriseret i tre dele, som er Black box-test, der involverer test af brugergrænseflade sammen med input og output, White box-test, der involverer test af softwareapplikationens funktionelle adfærd og Gray box-test, der bruges til at udføre testsuiter, testmetoder , testcases og udførelse af risikoanalyse.

Kodedækningsteknikker, der bruges i enhedstest, er anført nedenfor:

  • Erklæringsdækning
  • Beslutningsdækning
  • Filialdækning
  • Tilstandsdækning
  • Finite State Machine Dækning

For mere i se https://www.guru99.com/code-coverage.html

Eksempel på enhedstest: Spotobjekter

Enhedstestning er afhængig af, at falske objekter oprettes for at teste kodesektioner, der endnu ikke er en del af en komplet applikation. Spotobjekter udfylder de manglende dele af programmet.

For eksempel kan du have en funktion, der har brug for variabler eller objekter, der ikke er oprettet endnu. Ved enhedstestning vil disse blive taget højde for i form af falske objekter, der udelukkende er oprettet med henblik på enhedstestning udført på den pågældende kodesektion.

Værktøjer til enhedstest

Der findes adskillige automatiserede enhedstestsoftware til at hjælpe med enhedstest i softwaretest. Vi vil give et par eksempler nedenfor:

  1. Junit: Junit er et gratis at bruge testværktøj, der bruges til Java programmeringssprog. Det giver påstande til at identificere testmetode. Dette værktøj tester data først og indsættes derefter i kodestykket.
  2. NUnit: NUnit er meget udbredt enhedstestrammebrug til alle .net-sprog. Det er et open source-værktøj, som gør det muligt at skrive scripts manuelt. Det understøtter datadrevne test, som kan køre parallelt.
  3. JMockit: JMockit er open source enhedstestværktøj. Det er et kodedækningsværktøj med linje- og sti-metrics. Det tillader hånende API med optagelses- og verifikationssyntaks. Dette værktøj tilbyder linjedækning, stidækning og datadækning.
  4. EMMA: EMMA er et open source-værktøjssæt til at analysere og rapportere kode skrevet ind Java sprog. Emma understøtter dækningstyper som metode, linje, grundblok. Det er det Java-baseret, så den er uden eksterne biblioteksafhængigheder og kan få adgang til kildekoden.
  5. PHPUnit: PHPUnit er et enhedstestværktøj til PHP-programmør. Det tager små portioner kode, som kaldes enheder, og test hver af dem separat. Værktøjet giver også udviklere mulighed for at bruge foruddefinerede påstandsmetoder til at hævde, at et system opfører sig på en bestemt måde.

Det er blot nogle få af de tilgængelige enhedstestværktøjer. Der er mange flere, især for C sprog og Java, men du er sikker på at finde et enhedstestværktøj til dine programmeringsbehov uanset hvilket sprog du bruger.

Test Driven Development (TDD) & Unit Testing

Enhedstest i TDD involverer en omfattende brug af testrammer. En enhedstestramme bruges til at skabe automatiserede enhedstests. Enhedstestrammer er ikke unikke for TDD, men de er essentielle for det. Nedenfor ser vi på noget af det, TDD bringer til verden af ​​enhedstestning:

  • Tests skrives før koden
  • Stol i høj grad på testrammer
  • Alle klasser i ansøgningerne testes
  • Hurtig og nem integration er muliggjort

Enhedstest myte

Myte: Det kræver tid, og jeg er altid overplanlagt
Min kode er stensikker! Jeg har ikke brug for enhedstest.

Myter er i sagens natur falske antagelser. Disse antagelser fører til en ond cirkel som følger -

ENHED Test Myte

Sandheden er Enhedstest øger udviklingshastigheden.

Programmerere tror, ​​at integrationstest vil fange alle fejl og udfører ikke enhedstesten. Når først enheder er integreret, tager meget simple fejl, som meget let kunne have fundet og rettet i en testet enhed, meget lang tid at spore og rette.

Fordel ved enhedstestning

  • Udviklere, der ønsker at lære, hvilken funktionalitet der leveres af en enhed, og hvordan man bruger den, kan se på enhedstestene for at få en grundlæggende forståelse af enheds-API'en.
  • Enhedstest gør det muligt for programmøren at refaktorere kode på et senere tidspunkt og sikre sig, at modulet stadig fungerer korrekt (dvs. Regressionstest). Proceduren er at skrive testcases for alle funktioner og metoder, så hver gang en ændring forårsager en fejl, kan den hurtigt identificeres og rettes.
  • På grund af den modulære karakter af enhedstesten, kan vi teste dele af projektet uden at vente på, at andre bliver afsluttet.

Enhedstest Ulemper

  • Enhedstest kan ikke forventes at fange alle fejl i et program. Det er ikke muligt at evaluere alle udførelsesveje selv i de mest trivielle programmer
  • Enhedstest fokuserer i sagens natur på en kodeenhed. Derfor kan den ikke fange integrationsfejl eller brede systemniveaufejl.

Det anbefales, at enhedstest bruges sammen med andre testaktiviteter.

Unit Testing Bedste Practices

  • Unit Test cases bør være uafhængige. I tilfælde af forbedringer eller ændringer i krav, bør enhedstesttilfælde ikke påvirkes.
  • Test kun én kode ad gangen.
  • Følg klare og konsekvente navnekonventioner for dine enhedstests
  • I tilfælde af en ændring i kode i et hvilket som helst modul, skal du sikre dig, at der er en tilsvarende enhed Test sag for modulet, og modulet består testene, før det ændrer implementeringen
  • Fejl identificeret under enhedstestning skal rettes, før du fortsætter til næste fase i SDLC
  • Brug en "test som din kode"-tilgang. Jo mere kode du skriver uden at teste, jo flere stier skal du tjekke for fejl.

Unit Testing Bedste Practices

Resumé

  • UNIT TESTING er defineret som en type softwaretest, hvor individuelle enheder eller komponenter i en software testes.
  • Som du kan se, kan der være meget involveret i enhedstestning. Det kan være komplekst eller ret simpelt afhængigt af den applikation, der testes, og de anvendte teststrategier, værktøjer og filosofier. Enhedstest er altid nødvendigt på et eller andet niveau. Det er en sikkerhed.