Enhetstestopplæring: Hva er, typer, verktøy og amp; Test EKSEMPEL

Innholdsfortegnelse:

Anonim

Hva er enhetstesting?

ENHETSTESTING er en type programvaretesting der individuelle enheter eller komponenter i en programvare blir testet. Hensikten er å validere at hver enhet av programvarekoden utfører som forventet. Enhetstesting gjøres under utviklingen (kodingsfasen) av et program fra utviklerne. Enhetstester isolerer en del av koden og verifiserer korrektheten. En enhet kan være en individuell funksjon, metode, prosedyre, modul eller objekt.

I SDLC, STLC, V Model, er enhetstesting første testnivå som er gjort før integrasjonstesting. Enhetstesting er en WhiteBox testteknikk som vanligvis utføres av utvikleren. Skjønt, i en praktisk verden på grunn av tidsnød eller motvilje fra utviklere til tester, gjør QA-ingeniører også enhetstesting.

I denne veiledningen vil du lære-

  • Hvorfor enhetstesting?
  • Hvordan gjøre enhetstesting
  • Enhetstestteknikker
  • Enhetstestverktøy
  • Test Driven Development (TDD) & Unit Testing
  • Enhetstestemyte
  • Enhetstestfordel
  • Enhetstest ulemper
  • Enhetstesting av beste praksis

Hvorfor enhetstesting?

Enhetstesting er viktig fordi programvareutviklere noen ganger prøver å spare tid på å gjøre minimal enhetstesting, og dette er myte fordi upassende enhetstesting fører til høye kostnadskorrigeringer under systemtesting, integrasjonstesting og til og med betatesting etter at applikasjonen er bygget. Hvis riktig enhetstesting gjøres i tidlig utvikling, sparer det tid og penger til slutt.

Her er de viktigste grunnene til å utføre enhetstesting innen programvareteknikk:

Enhetstestnivåer
  1. Enhetstester hjelper til med å fikse feil tidlig i utviklingssyklusen og spare kostnader.
  2. Det hjelper utviklerne å forstå testkodebasen og gjør det mulig for dem å gjøre endringer raskt
  3. Gode ​​enhetstester fungerer som prosjektdokumentasjon
  4. Enhetstester hjelper til med gjenbruk av kode. Migrer både koden og testene dine til det nye prosjektet. Juster koden til testene kjører igjen.

Hvordan gjøre enhetstesting

For å gjøre enhetstesting skriver utviklere en del av koden for å teste en bestemt funksjon i programvaren. Utviklere kan også isolere denne funksjonen for å teste strengere, noe som avslører unødvendige avhengigheter mellom funksjonen som testes og andre enheter, slik at avhengighetene kan elimineres. Utviklere bruker generelt UnitTest-rammeverk for å utvikle automatiserte testsaker for enhetstesting.

Enhetstesting er av to typer

  • Håndbok
  • Automatisert

Enhetstesting er ofte automatisert, men kan fremdeles utføres manuelt. Software Engineering favoriserer ikke hverandre, men automatisering er å foretrekke. En manuell tilnærming til enhetstesting kan bruke et trinnvis instruksjonsdokument.

Under den automatiserte tilnærmingen-

  • En utvikler skriver en del av koden i applikasjonen bare for å teste funksjonen. De vil senere kommentere og til slutt fjerne testkoden når applikasjonen distribueres.
  • En utvikler kan også isolere funksjonen for å teste den strengere. Dette er en grundigere enhetstestpraksis som involverer kopiering og liming av kode til sitt eget testmiljø enn sitt naturlige miljø. Å isolere koden hjelper til med å avsløre unødvendige avhengigheter mellom koden som testes og andre enheter eller datarom i produktet. Disse avhengighetene kan deretter elimineres.
  • En koder bruker vanligvis et UnitTest Framework for å utvikle automatiserte testsaker. Ved hjelp av et automatiseringsrammeverk koder utvikleren kriterier i testen for å verifisere korrektheten av koden. Under gjennomføring av testsakene logger rammeverket sviktende testsaker. Mange rammer vil også automatisk flagge og rapportere, i sammendrag, disse mislykkede testsakene. Avhengig av alvorlighetsgraden av en feil, kan rammeverket stoppe påfølgende testing.
  • Arbeidsflyten for enhetstesting er 1) Opprett testtilfeller 2) Gjennomgang / omarbeid 3) Baseline 4) Utfør testtilfeller.

Enhetstestteknikker

De enhetstesting teknikker er hovedsakelig inndelt i tre deler som er svart boks testing at innebærer testing av brukergrensesnitt sammen med inngang og utgang, som testes som innebærer testing av funksjonsmåten til programmet og Gray boks testing som brukes for å utføre testen suiter, testmetoder, testtilfeller og utføring av risikoanalyse.

Kodedekningsteknikker brukt i enhetstesting er listet opp nedenfor:

  • Uttalelsesdekning
  • Beslutningsdekning
  • Grendekning
  • Tilstandsdekning
  • Endelig maskindekning

For mer informasjon, se https://www.guru99.com/code-coverage.html

Enhetstesteksempel: Mock Objects

Enhetstesting er avhengig av at mock-objekter blir opprettet for å teste seksjoner med kode som ennå ikke er en del av et komplett program. Mock objekter fylles ut for de manglende delene av programmet.

For eksempel kan du ha en funksjon som trenger variabler eller objekter som ikke er opprettet ennå. Ved enhetstesting vil disse bli regnskapsført i form av mock-objekter som er opprettet utelukkende med det formål å teste enheten på den delen av koden.

Enhetstestverktøy

Det er flere automatiserte enhetstestprogramvare tilgjengelig for å hjelpe deg med enhetstesting. Vi vil gi noen få eksempler nedenfor:

  1. Junit: Junit er et gratis testverktøy som brukes til Java-programmeringsspråk. Det gir påstander om å identifisere testmetode. Dette verktøyet tester data først og settes deretter inn i kodebiten.
  2. NUnit: NUnit er mye brukt rammebruk for enhetstesting for alle .net-språk. Det er et åpen kildekodeverktøy som gjør det mulig å skrive manus manuelt. Den støtter datadrevne tester som kan kjøre parallelt.
  3. JMockit: JMockit er testkildeverktøy for åpen kildekode. Det er et kodedekkingsverktøy med linje- og stienummer. Det tillater mocking API med opptak og verifisering syntaks. Dette verktøyet tilbyr linjedekning, banedekning og datadekning.
  4. EMMA: EMMA er et verktøy med åpen kildekode for analyse og rapportering av kode skrevet på Java-språk. Emma støtter dekningstyper som metode, linje, grunnleggende blokk. Den er Java-basert, så den er uten avhengighet av eksternt bibliotek og har tilgang til kildekoden.
  5. PHPUnit: PHPUnit er et enhetstestverktøy for PHP-programmerer. Det tar små porsjoner kode som kalles enheter og tester hver av dem separat. Verktøyet lar også utviklere bruke forhåndsdefinerte påstandsmetoder for å hevde at et system oppfører seg på en bestemt måte.

Dette er bare noen få av de tilgjengelige enhetstestverktøyene. Det er mye mer, spesielt for C-språk og Java, men du er sikker på å finne et enhetstestverktøy for programmeringsbehovet uavhengig av språket du bruker.

Test Driven Development (TDD) & Unit Testing

Enhetstesting i TDD innebærer en omfattende bruk av testrammer. Et enhetstestrammeverk brukes for å lage automatiserte enhetstester. Enhetstestingsrammer er ikke unike for TDD, men de er essensielle for det. Nedenfor ser vi på noe av det TDD bringer til verden av enhetstesting:

  • Test skrives før koden
  • Stol tungt på testrammer
  • Alle klassene i applikasjonene blir testet
  • Rask og enkel integrering er mulig

Enhetstestemyte

Myte: Det krever tid, og jeg blir alltid overplanlagt Koden min er bunnsolid! Jeg trenger ikke enhetstester.

Myter er i sin natur falske antagelser. Disse antagelsene fører til en ond sirkel som følger -

Sannheten er Enhetstesting øker hastigheten på utviklingen.

Programmører tror at integrasjonstesting vil fange opp alle feil og ikke utføre enhetstesten. Når enhetene er integrert, tar det veldig lang tid å spores og fikse veldig enkle feil som veldig lett kunne ha funnet og fikset i enhetstestet.

Enhetstestfordel

  • Utviklere som ønsker å lære hvilken funksjonalitet som tilbys av en enhet og hvordan de kan bruke den, kan se på enhetstestene for å få en grunnleggende forståelse av enhets-API.
  • Enhetstesting gjør at programmereren kan refaktorere koden på et senere tidspunkt, og sørge for at modulen fremdeles fungerer som den skal (dvs. regresjonstesting). Prosedyren er å skrive testsaker for alle funksjoner og metoder, slik at når en endring forårsaker en feil, kan den raskt identifiseres og løses.
  • På grunn av enhetstestingens modulære karakter, kan vi teste deler av prosjektet uten å vente på at andre skal fullføres.

Enhetstest ulemper

  • Enhetstesting kan ikke forventes å fange opp alle feil i et program. Det er ikke mulig å evaluere alle kjørestier selv i de mest trivielle programmene
  • Enhetstesting fokuserer i sin natur på en kodeenhet. Derfor kan den ikke fange integrasjonsfeil eller brede systemnivåfeil.

Det anbefales at enhetstesting brukes sammen med andre testaktiviteter.

Enhetstesting av beste praksis

  • Enhetstestsaker bør være uavhengige. I tilfelle forbedringer eller endringer i kravene, bør ikke enhetstesttilfeller påvirkes.
  • Test bare én kode om gangen.
  • Følg klare og konsekvente navnekonvensjoner for enhetstestene dine
  • Ved endring av kode i en hvilken som helst modul, sørg for at det er en tilsvarende enhet Test Case for modulen, og modulen består testene før du endrer implementeringen
  • Feil som er identifisert under enhetstesting, må løses før du går videre til neste fase i SDLC
  • Vedta en "test as your code" -tilnærming. Jo mer kode du skriver uten å teste, jo flere baner må du sjekke for feil.

Sammendrag

  • ENHETSTESTING er definert som en type programvaretesting der individuelle enheter eller komponenter i en programvare blir testet.
  • Som du kan se, kan det være mye involvert i enhetstesting. Det kan være komplekst eller ganske enkelt, avhengig av applikasjonen som testes og teststrategiene, verktøyene og filosofiene som brukes. Enhetstesting er alltid nødvendig på et eller annet nivå. Det er en visshet.