differences between unit testing
En detaljert sammenligning av enhet, integrasjon og funksjonstesting:
For alle programvareapplikasjoner er både enhetstesting, så vel som integrasjonstesting, veldig viktig, ettersom hver av dem bruker en unik prosess for å teste et program.
Men noen eller begge deler kan ikke erstatte funksjonstesting på noe tidspunkt.
Hva du vil lære:
- Enhetstesting mot integrasjonstesting mot funksjonell testing
- Hva er enhetstesting?
- Hva er integrasjonstesting?
- Enhetstesting vs integrasjonstesting
- Funksjonell testing
- Nøyaktig forskjell
- Konklusjon
- Anbefalt lesing
Enhetstesting mot integrasjonstesting mot funksjonell testing
Enhetstesting betyr å teste individuelle moduler i et program isolert (uten interaksjon med avhengigheter) for å bekrefte at koden gjør ting riktig.
Integrasjonstesting betyr å sjekke om forskjellige moduler fungerer bra når de kombineres sammen som en gruppe.
Funksjonell testing betyr å teste et stykke funksjonalitet i systemet (kan samhandle med avhengigheter) for å bekrefte at koden gjør de riktige tingene.
Funksjonstester er relatert til integrasjonstester, men de indikerer testene som sjekker hele applikasjonens funksjonalitet med all koden som kjører sammen, nesten en superintegrasjonstest.
Enhetstesting vurderer å sjekke en enkelt komponent i systemet, mens funksjonstesting vurderer å sjekke hvordan en applikasjon fungerer mot den tiltenkte funksjonaliteten som er beskrevet i systemkravsspesifikasjonen. På den annen side vurderer integrasjonstesting å sjekke integrerte moduler i systemet.
Og viktigst av alt, for å optimalisere avkastningen på investeringen (ROI), bør kodebasen din ha så mange enhetstester som mulig, færre integrasjonstester og minst antall funksjonstester.
Dette illustreres best i følgende testpyramide:
Enhetstester er lettere å skrive og raskere å utføre. Tiden og krefter for å implementere og vedlikeholde testene øker fra enhetstesting til funksjonstesting som vist i pyramiden ovenfor.
beste eksterne spyware for mobiltelefoner
Eksempel:
La oss forstå disse tre typene testing med et forenklet eksempel.
F.eks . For en funksjonell mobiltelefon er hoveddelene som kreves “batteri” og “sim-kort”.
Enhetstesting Eksempel - Batteriet kontrolleres for levetid, kapasitet og andre parametere. Sim-kortet sjekkes for aktivering.
Eksempel på integrasjonstesting - Batteri og sim-kort er integrert dvs. montert for å starte mobiltelefonen.
Eksempel på funksjonstesting - Funksjonaliteten til en mobiltelefon blir sjekket med tanke på funksjoner og batteribruk samt SIM-kortfasiliteter.
Vi har sett et eksempel i lekmannsbetingelser.
La oss nå ta et teknisk eksempel på en påloggingsside:
Nesten alle webapplikasjoner krever at brukerne / kundene logger seg på. For det må hver applikasjon ha en 'Login' -side som har disse elementene:
- Konto / brukernavn
- Passord
- Knapp for pålogging / pålogging
For enhetstesting kan følgende være testtilfellene:
- Feltlengde - brukernavn og passordfelt.
- Inndatafeltverdier skal være gyldige.
- Påloggingsknappen er bare aktivert etter at gyldige verdier (Format og på langs) er angitt i begge feltene.
For integrasjonstesting kan følgende være testtilfellene:
- Brukeren ser velkomstmeldingen etter å ha tastet inn gyldige verdier og trykket på påloggingsknappen.
- Brukeren skal navigeres til velkomstsiden eller hjemmesiden etter gyldig oppføring og klikke på Logg inn-knappen.
Nå, etter at enhets- og integrasjonstesting er gjort, la oss se tilleggsutstyret test tilfeller som vurderes for funksjonstesting:
- Den forventede atferden blir sjekket, dvs. er brukeren i stand til å logge på ved å klikke på påloggingsknappen etter å ha oppgitt et gyldig brukernavn og passordverdier.
- Er det en velkomstmelding som skal vises etter en vellykket pålogging?
- Er det en feilmelding som skal vises på en ugyldig pålogging?
- Er det noen lagrede nettstedskapsler for påloggingsfelt?
- Kan en inaktivert bruker logge på?
- Er det noen kobling med glemt passord for brukerne som har glemt passordene sine?
Det er mye flere slike tilfeller som kommer til tankene til en funksjonell tester mens de utfører funksjonstesting. Men en utvikler kan ikke ta opp alle saker mens han bygger Unit- og Integration-testsaker.
Dermed er det mange scenarier som ennå ikke skal testes, selv etter testing av enheter og integrasjoner.
Det er nå på tide å undersøke enhet, integrasjon og funksjonstesting en etter en.
Hva er enhetstesting?
Som navnet antyder, innebærer dette nivået å teste en ‘enhet’.
Her kan enheten være den minste delen av et program som kan testes, det være seg den minste individuelle funksjonen, metoden osv. Programvareutviklere er de som skriver enhetstesttilfellene. Målet her er å matche kravene og enhetens forventede oppførsel.
Nedenfor er noen viktige punkter om enhetstesting og fordelene:
- Enhetstesting gjøres før integrasjonstesting av programvareutviklere som bruker testboksteknikker for hvit boks .
- Enhetstesting sjekker ikke bare den positive oppførselen, dvs. riktig utgang i tilfelle gyldig inngang, men også feilene som oppstår med ugyldig inngang.
- Å finne problemer / feil på et tidlig tidspunkt er veldig nyttig, og det reduserer de totale prosjektkostnadene. Ettersom enhetstesting gjøres før integrering av kode, kan problemer som er funnet på dette stadiet løses veldig enkelt, og deres innvirkning er også veldig mindre.
- En enhetstest tester små koder eller individuelle funksjoner, slik at problemene / feilene som finnes i disse testtilfellene er uavhengige og ikke påvirker de andre testtilfellene.
- En annen viktig fordel er at enhetstesttilfellene forenkler og gjør testing av kode enklere. Så det blir lettere å løse problemene på et senere tidspunkt, ettersom bare den siste endringen i koden skal testes.
- Enhetstest sparer tid og kostnader, og den er gjenbrukbar og enkel å vedlikeholde.
JUnit ( Java-rammeverk ), PHPUnit (PHP framework), NUnit (.Net framework) etc. er populære enhetstestingsverktøy som brukes til forskjellige språk.
Hva er integrasjonstesting?
Integrasjonstesting tester integrasjonen av forskjellige deler av systemet sammen. To forskjellige deler eller moduler av systemet integreres først, og deretter utføres integrasjonstesting.
Målet med integrasjonstesting er å kontrollere funksjonalitet, pålitelighet og ytelse til systemet når det er integrert.
Integrasjonstesting utføres på modulene som er enhetstestet først, og deretter definerer integrasjonstesting om kombinasjonen av modulene gir ønsket effekt eller ikke.
Integrasjonstesting kan enten gjøres av uavhengige testere eller av utviklere.
Det er 3 forskjellige typer integrasjonstesttilnærminger. La oss diskutere hver enkelt av dem kort:
a) Big Bang Integration Approach
I denne tilnærmingen er alle modulene eller enhetene integrert og testet under ett samtidig. Dette gjøres vanligvis når hele systemet er klart for integrasjonstesting på et enkelt tidspunkt.
Vennligst ikke forveksle denne tilnærmingen til integrasjonstesting med systemtesting, bare integrasjonen av moduler eller enheter testes og ikke hele systemet slik det gjøres i systemtesting.
Big bang-tilnærmingen er stor fordel er at alt integrert blir testet på en gang.
En major ulempe er at det blir vanskelig å identifisere feilene.
Eksempel: I figuren nedenfor er enhet 1 til enhet 6 integrert og testet ved hjelp av Big Bang-tilnærmingen.
b) Top-Down Approach
Integrering av enhetene / modulene testes fra topp til bunn nivå trinn for trinn.
Den første enheten testes individuelt ved å skrive test stubber . Etter dette integreres de lavere nivåene ett etter ett til siste nivå settes sammen og testes.
Top-down-tilnærmingen er en veldig organisk måte å integrere på, da den stemmer overens med hvordan ting skjer i det virkelige miljøet.
Den eneste bekymring med denne tilnærmingen er at hovedfunksjonaliteten blir testet på slutten.
c) Bottom-Up Up Approach
Enheter / moduler testes fra bunn til øverste nivå, trinn for trinn, til alle nivåer av enheter / moduler er integrert og testet som en enhet. Stimulatorprogrammer kalt FØRERE brukes i denne tilnærmingen. Det er lettere å oppdage problemer eller feil på de lavere nivåene.
Majoren ulempe av denne tilnærmingen er at problemene på høyere nivå bare kan identifiseres på slutten når alle enhetene er integrert.
Enhetstesting vs integrasjonstesting
Etter å ha hatt nok diskusjon om enhetstesting og integrasjonstesting, la oss raskt gå gjennom forskjellene mellom de to i følgende tabell:
Enhetstesting | Integrasjonstesting |
---|---|
Utført i den første fasen av testingen og kan deretter utføres når som helst | Må utføres etter enhetstesting og før systemtesting |
Tester enkeltkomponenten i hele systemet, dvs. tester en enhet isolert. | Tester systemkomponentene som fungerer sammen, dvs. test samarbeidet mellom flere enheter. |
Raskere å utføre | Kan løpe sakte |
Ingen ekstern avhengighet. Enhver ekstern avhengighet blir spottet eller stubbet ut. | Krever interaksjon med eksterne avhengigheter (f.eks. Database, maskinvare, etc.) |
Enkel | Kompleks |
Utført av utvikler | Utført av tester |
Det er en type testing av hvit boks | Det er en type black box testing |
Billig vedlikehold | Dyrt vedlikehold |
Starter fra modulspesifikasjonen | Begynner fra grensesnittspesifikasjonen |
Enhetstesting har et smalt omfang, da det bare sjekker om hvert lite stykke kode gjør det det er ment å gjøre. | Den har et bredere omfang da den dekker hele applikasjonen |
Resultatet av enhetstesting er detaljert synlighet av koden | Resultatet av integrasjonstesting er den detaljerte synligheten til integrasjonsstrukturen |
Bare avdekk problemene innen funksjonaliteten til individuelle moduler. Avdekker ikke integrasjonsfeil eller systemomfattende problemer. | Avdekk feilene når forskjellige moduler samhandler med hverandre for å danne det samlede systemet |
Funksjonell testing
TIL svart boks testing teknikk , der funksjonaliteten til applikasjonen blir testet for å generere ønsket utgang ved å gi en viss inngang, kalles ‘Funksjonstesting’.
I vår programvaretestprosesser , vi gjør dette ved å skrive testsaker i henhold til kravene og scenariene. For enhver funksjonalitet kan antall testtilfeller som er skrevet variere fra en til mange.
Test tilfeller består i utgangspunktet av følgende deler:
- Testoppsummering
- Forutsetninger (hvis noen)
- Testinngangsinngangstrinn
- Testdata (hvis noen)
- Forventet produksjon
- Merknader (hvis noen)
“Kravbasert” og “Virksomhetsscenariobasert” er de to formene for funksjonstesting som utføres.
I Kravbasert testing opprettes testtilfeller i henhold til kravet og testes deretter. I et forretningsscenaribasert funksjonstesting utføres testing ved å huske alle scenariene fra et forretningsperspektiv.
Imidlertid major ulempe av funksjonell testing er sannsynlig redundans i testing og muligheten for å savne noen logiske feil.
Nøyaktig forskjell
La oss se på forskjellene deres.
Her er noen av de viktigste:
Enhetstesting | Integrasjonstesting | Funksjonell testing | |
---|---|---|---|
Definisjon og formål | Testing av minste enheter eller moduler individuelt. | Testing av integrasjon av to eller flere enheter / moduler kombinert for å utføre oppgaver. | Testing av applikasjonens oppførsel i henhold til kravet. |
Kompleksitet | Ikke i det hele tatt komplisert, da det inneholder de minste kodene. | Litt mer komplisert enn enhetstester. | Mer kompleks sammenlignet med enhetstester og integrasjonstester. |
Testteknikker | Testboksteknikk for hvit boks. | Hvit boks og svart boks testteknikk. Testing av grå boks | Black box testing teknikk. |
Stor oppmerksomhet | Individuelle moduler eller enheter. | Integrering av moduler eller enheter. | Hele applikasjonsfunksjonaliteten. |
Feil / problemer dekket | Enhetstester finner problemer som kan forekomme ofte i moduler. | Integrasjonstester finner problemer som kan oppstå ved integrering av forskjellige moduler. | Funksjonstester finner problemer som ikke tillater at et program utfører funksjonaliteten. Dette inkluderer også noen scenariobaserte problemer. |
Utgive flukt | Ingen sjanse for utslipp. | Mindre sjanse for utslipp. | Flere sjanser for å unnslippe, ettersom listen over tester som skal kjøres, alltid er uendelig. |
Les også => Hva er funksjonstesting
hva brukes apk-filer til
Konklusjon
Alle disse tre testtypene er korrelert.
For å oppnå full dekning er det nødvendig å ha enhetstester for stiene / linjene med kode, funksjonstester og integrasjonstester for å sikre at ‘enhetene’ fungerer sammen.
Håper denne artikkelen ville gitt deg en klar ide om enhet, integrasjon og funksjonstesting sammen med forskjellene, selv om det er mye mer med disse testformene!
Anbefalt lesing
- Beste verktøy for testing av programvare 2021 [QA Test Automation Tools]
- Spock for integrering og funksjonstesting med selen
- Funksjonstesting mot ikke-funksjonell testing
- Testing Primer eBook Download
- Topp 10 integrasjonstestverktøy for å skrive integrasjonstester
- Viktige forskjeller mellom Black Box Testing og White Box Testing
- Komplett funksjonell testguide med typer og eksempel
- Funksjonstesting mot ytelsestesting: Bør det gjøres samtidig?