differences between unit testing
En detaljeret sammenligning af enhed, integration og funktionstest:
For enhver softwareapplikation er både enhedstest såvel som integrationstest meget vigtig, da hver af dem anvender en unik proces til at teste en softwareapplikation.
Men enhver eller endog begge kan ikke erstatte funktionstest på noget tidspunkt.
Hvad du vil lære:
- Enhedstest Vs Integrationstest Vs Funktionstest
- Hvad er enhedstestning?
- Hvad er integrationstest?
- Enhedstest vs integrationstest
- Funktionel testning
- Præcis forskel
- Konklusion
- Anbefalet læsning
Enhedstest Vs Integrationstest Vs Funktionstest
Enhedstest betyder at teste individuelle moduler i en applikation isoleret (uden interaktion med afhængigheder) for at bekræfte, at koden gør tingene rigtigt.
Integrationstest betyder at kontrollere, om forskellige moduler fungerer fint, når de kombineres som en gruppe.
Funktionel test betyder at teste et stykke funktionalitet i systemet (kan interagere med afhængigheder) for at bekræfte, at koden gør de rigtige ting.
Funktionelle tests er relateret til integrationstests, men de betyder, at testene kontrollerer hele applikationens funktionalitet med al koden, der kører sammen, næsten en superintegrationstest.
Enhedstest overvejer at kontrollere en enkelt komponent i systemet, mens funktionstest overvejer at kontrollere, hvordan en applikation fungerer mod den tilsigtede funktionalitet, der er beskrevet i systemkravsspecifikationen. På den anden side overvejer integrationstest at kontrollere integrerede moduler i systemet.
Og vigtigst af alt, for at optimere investeringsafkastet (ROI), skal din kodebase have så mange enhedstest som muligt, færre integrationstest og det mindste antal funktionelle tests.
Dette illustreres bedst i følgende testpyramide:
Enhedstest er lettere at skrive og hurtigere at udføre. Tiden og kræfterne til at implementere og vedligeholde testene stiger fra enhedstest til funktionstestning som vist i ovenstående pyramide.
gratis tid ur app til pc
Eksempel:
Lad os forstå disse tre typer test med et overforenklet eksempel.
For eksempel . For en funktionel mobiltelefon er de nødvendige dele 'batteri' og 'sim-kort'.
Eksempel på enhedstest - Batteriet kontrolleres for dets levetid, kapacitet og andre parametre. Sim-kortet kontrolleres for dets aktivering.
Eksempel på integrationstest - Batteri og sim-kort er integreret, dvs. samlet for at starte mobiltelefonen.
Eksempel på funktionel test - En mobiltelefons funktionalitet kontrolleres med hensyn til dens funktioner og batteriforbrug samt sim-kortfaciliteter.
Vi har set et eksempel i lægmandssæt.
Lad os nu tage et teknisk eksempel på en login-side:
Næsten alle webapplikationer kræver, at dets brugere / kunder logger ind. For det skal enhver applikation have en 'Login' -side, der har disse elementer:
- Konto / brugernavn
- Adgangskode
- Knappen Login / Log på
Til enhedstest kan følgende være testtilfælde:
- Feltlængde - felter med brugernavn og adgangskode.
- Indtastningsfeltværdier skal være gyldige.
- Login-knappen er kun aktiveret, når gyldige værdier (Format og længde) er indtastet i begge felter.
Til integrationstest kan følgende være testsagerne:
- Brugeren ser velkomstmeddelelsen efter at have indtastet gyldige værdier og trykke på login-knappen.
- Brugeren skal navigeres til velkomstsiden eller startsiden efter gyldig indtastning og klikke på knappen Login.
Nu, efter test af enhed og integration er færdig, lad os se det ekstra test tilfælde, der overvejes til funktionel test:
- Den forventede adfærd kontrolleres, dvs. er brugeren i stand til at logge ind ved at klikke på login-knappen efter at have indtastet et gyldigt brugernavn og adgangskodeværdier.
- Er der en velkomstmeddelelse, der skal vises efter et vellykket login?
- Er der en fejlmeddelelse, der skal vises ved et ugyldigt login?
- Er der nogen gemte webstedscookies til loginfelter?
- Kan en inaktiveret bruger logge ind?
- Er der noget link til 'glemt kodeord' for de brugere, der har glemt deres adgangskoder?
Der er meget flere sådanne tilfælde, der kommer til at tænke på en funktionel tester, mens de udfører funktionel test. Men en udvikler kan ikke tage alle sager op, mens han bygger enheds- og integrationstestsager.
Der er således masser af scenarier, der endnu ikke skal testes, selv efter test af enhed og integration.
Det er nu tid til at undersøge enhed, integration og funktionstest en efter en.
Hvad er enhedstestning?
Som navnet antyder, involverer dette niveau test af en 'enhed'.
Her kan enheden være den mindste del af en applikation, der kan testes, det være sig den mindste individuelle funktion, metode osv. Softwareudviklere er dem, der skriver enhedstestsagerne. Målet her er at matche kravene og enhedens forventede adfærd.
Nedenfor er et par vigtige punkter om enhedstest og dens fordele:
- Enhedstest udføres inden integrationstest af softwareudviklere, der bruger testteknikker i hvid boks .
- Enhedstest kontrollerer ikke kun den positive adfærd, dvs. den korrekte output i tilfælde af gyldig input, men også de fejl, der opstår med ugyldig input.
- At finde problemer / bugs på et tidligt tidspunkt er meget nyttigt, og det reducerer de samlede projektomkostninger. Da enhedstest udføres inden integration af kode, kan problemer, der findes på dette tidspunkt, løses meget let, og deres indvirkning er også meget mindre.
- En enhedstest tester små stykker kode eller individuelle funktioner, så de problemer / fejl, der findes i disse testsager, er uafhængige og påvirker ikke de andre testsager.
- En anden vigtig fordel er, at enhedstesttilfældene forenkler og gør test af kode lettere. Så det bliver lettere at løse problemerne på et senere tidspunkt, da kun den seneste ændring i koden skal testes.
- Enhedstest sparer tid og omkostninger, og den kan genbruges og let at vedligeholde.
JUnit ( Java-ramme ), PHPUnit (PHP framework), NUnit (.Net framework) osv. Er populære enhedstestværktøjer, der bruges til forskellige sprog.
Hvad er integrationstest?
Integrationstest tester integrationen af forskellige dele af systemet sammen. To forskellige dele eller moduler i systemet integreres først, og derefter udføres integrationstest.
Målet med integrationstest er at kontrollere systemets funktionalitet, pålidelighed og ydeevne, når det er integreret.
Integrationstest udføres på de moduler, der er enhedstestet først, og derefter definerer integrationstest, om kombinationen af modulerne giver det ønskede output eller ej.
Integrationstest kan enten udføres af uafhængige testere eller af udviklere.
Der er 3 forskellige typer tilgange til integrationstest. Lad os diskutere hver enkelt af dem kort:
a) Big Bang Integration Approach
I denne tilgang er alle moduler eller enheder integreret og testet som en helhed på én gang. Dette gøres normalt, når hele systemet er klar til integrationstest på et enkelt tidspunkt.
Du må ikke forveksle denne tilgang til integrationstest med systemtest, kun integrationen af moduler eller enheder testes og ikke hele systemet, som det gøres i systemtest.
Big bang-tilgangens store fordel er, at alt integreret testes ad gangen.
En stor ulempe er, at det bliver svært at identificere fejlene.
Eksempel: I nedenstående figur er enhed 1 til enhed 6 integreret og testet ved hjælp af Big Bang-tilgangen.
b) Top-Down-tilgang
Integration af enhederne / modulerne testes fra top til bund niveau trin for trin.
Den første enhed testes individuelt ved at skrive test stubber . Herefter integreres de lavere niveauer en efter en, indtil det sidste niveau sættes sammen og testes.
Top-down tilgang er en meget organisk måde at integrere på, da den er i overensstemmelse med, hvordan ting sker i det virkelige miljø.
Den eneste bekymring med denne tilgang er, at den største funktionalitet testes i slutningen.
c) Bottom-Up tilgang
Enheder / moduler testes fra bund til top niveau trin for trin, indtil alle niveauer af enheder / moduler er integreret og testet som en enhed. Stimulatorprogrammer kaldet KØRERE bruges i denne tilgang. Det er lettere at opdage problemer eller fejl på de lavere niveauer.
Majoren ulempe af denne tilgang er, at problemer på højere niveau kun kan identificeres i slutningen, når alle enhederne er integreret.
Enhedstest vs integrationstest
Efter at have haft nok diskussion om enhedstest og integrationstest, lad os hurtigt gennemgå forskellene mellem de to i følgende tabel:
Enhedstest | Integrationstest |
---|---|
Udføres i den indledende fase af testen og kan derefter udføres når som helst | Skal udføres efter enhedstest og før systemtest |
Tester den enkelte komponent i hele systemet, dvs. tester en enhed isoleret. | Test systemkomponenterne, der arbejder sammen, dvs. test samarbejdet mellem flere enheder. |
Hurtigere at udføre | Kan køre langsomt |
Ingen ekstern afhængighed. Enhver ekstern afhængighed hånes eller stubbes ud. | Kræver interaktion med eksterne afhængigheder (f.eks. Database, hardware osv.) |
Enkel | Kompleks |
Udført af udvikler | Udført af testeren |
Det er en type hvid boks test | Det er en type sort boks test |
Billig vedligeholdelse | Dyr vedligeholdelse |
Begynder fra modulspecifikationen | Begynder fra grænsefladespecifikationen |
Enhedstest har et snævert omfang, da det bare kontrollerer, om hvert lille stykke kode gør, hvad det er beregnet til at gøre. | Det har et bredere anvendelsesområde, da det dækker hele applikationen |
Resultatet af enhedstestning er detaljeret synlighed af koden | Resultatet af integrationstest er den detaljerede synlighed af integrationsstrukturen |
Afdæk kun problemerne inden for de enkelte modulers funktionalitet. Udsætter ikke integrationsfejl eller systemomfattende problemer. | Afdæk bugs opstår, når forskellige moduler interagerer med hinanden for at danne det samlede system |
Funktionel testning
TIL sort boks testteknik , hvor applikationens funktionalitet testes for at generere det ønskede output ved levering af et bestemt input kaldes 'Functional testing'.
I vores softwaretestprocesser , gør vi dette ved at skrive testcases i henhold til kravene og scenarierne. For enhver funktionalitet kan antallet af testcases, der er skrevet, variere fra en til mange.
Testcases består grundlæggende af følgende dele:
- Testoversigt
- Forudsætninger (hvis nogen)
- Test sags input trin
- Testdata (hvis nogen)
- Forventet output
- Bemærkninger (hvis nogen)
“Kravbaseret” og “Business scenario-baseret” er de to former for funktionel test, der udføres.
I kravbaseret test oprettes testcases i henhold til kravet og testes i overensstemmelse hermed. I et forretningsscenaribaseret funktionel test udføres test ved at huske alle scenarierne fra et forretningsperspektiv.
Dog den store ulempe funktionel test er den sandsynlige redundans i test og muligheden for at gå glip af nogle logiske fejl.
Præcis forskel
Lad os se på deres forskelle.
Her er nogle af de største:
Enhedstest | Integrationstest | Funktionel test | |
---|---|---|---|
Definition og formål | Test af mindste enheder eller moduler individuelt. | Test af integration af to eller flere enheder / moduler kombineret til udførelse af opgaver. | Test af applikationens opførsel i henhold til kravet. |
Kompleksitet | Overhovedet ikke kompleks, da det indeholder de mindste koder. | Lidt mere kompliceret end enhedstest. | Mere kompleks sammenlignet med test af enheder og integration. |
Testteknikker | Hvid boks testteknik. | Test af hvid boks og sort boks. Test af grå boks | Sort boks testteknik. |
Stor opmærksomhed | Individuelle moduler eller enheder. | Integration af moduler eller enheder. | Hele applikationsfunktionalitet. |
Fejl / problemer dækket | Enhedstest finder problemer, der kan forekomme ofte i moduler. | Integrationstests finder problemer, der kan opstå, når forskellige moduler integreres. | Funktionelle tests finder problemer, der ikke tillader, at et program udfører dets funktionalitet. Dette inkluderer også nogle scenariebaserede problemer. |
Udgiv flugt | Ingen chance for udslip. | Mindre chance for udslip. | Flere chancer for udslip, da listen over tests, der skal køres, altid er uendelig. |
Læs også => Hvad er funktionstest
hvordan man skriver testcases til webapplikation
Konklusion
Alle disse tre testtyper er korreleret.
For at opnå fuld dækning er det påkrævet at have enhedstest for kodestier, linjer, funktionelle og integrationstest for at sikre, at 'enhederne' arbejder sammen sammenhængende.
Håber, at denne artikel ville have givet dig en klar idé om enhed, integration og funktionstest sammen med deres forskelle, selvom der er meget mere ved disse former for test !!
Anbefalet læsning
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- Spock til integration og funktionel test med selen
- Funktionel testning mod ikke-funktionel testning
- Test af Primer eBook Download
- Top 10 værktøjer til integrationstest til at skrive integrationstests
- Nøgleforskelle mellem Black Box Testing og White Box Testing
- Komplet funktionel testguide med dens typer og eksempel
- Funktionstestning mod ydelsestestning: Skal det gøres samtidigt?