differences between unit testing
En detaljerad jämförelse av enhet, integration och funktionstestning:
För alla programvaror är både enhetstestning och integrationstest mycket viktigt eftersom var och en av dem använder en unik process för att testa en programvara.
Men någon eller till och med båda kan inte ersätta funktionstestning när som helst.
Vad du kommer att lära dig:
- Enhetstestning mot integreringstestning mot funktionstestning
- Vad är enhetstestning?
- Vad är integrationstestning?
- Enhetstest vs Integrationstestning
- Funktionell testning
- Exakt skillnad
- Slutsats
- Rekommenderad läsning
Enhetstestning mot integreringstestning mot funktionstestning
Enhetstestning betyder att testa enskilda moduler i en applikation isolerat (utan någon interaktion med beroenden) för att bekräfta att koden gör saker rätt.
Integrationstestning betyder att kontrollera om olika moduler fungerar bra när de kombineras som en grupp.
Funktionell testning betyder att testa en bit funktionalitet i systemet (kan interagera med beroenden) för att bekräfta att koden gör rätt saker.
Funktionella tester är relaterade till integrationstester, men de betyder att testerna kontrollerar hela programmets funktionalitet med all kod som körs tillsammans, nästan ett superintegrationstest.
Enhetstestning överväger att kontrollera en enda komponent i systemet medan funktionstestning överväger att kontrollera hur en applikation fungerar mot den avsedda funktionaliteten som beskrivs i systemkravspecifikationen. Å andra sidan överväger integreringstest att kontrollera integrerade moduler i systemet.
Och viktigast av allt, för att optimera avkastningen på investeringen (ROI), bör din kodbas ha så många enhetstester som möjligt, färre integrationstester och minst antal funktionstester.
Detta illustreras bäst i följande testpyramid:
Enhetstester är lättare att skriva och snabbare att utföra. Tiden och ansträngningen att genomföra och underhålla testerna ökar från enhetstest till funktionstestning som visas i ovanstående pyramid.
vad är den bästa musiknedladdaren för pc
Exempel:
Låt oss förstå dessa tre typer av tester med ett förenklat exempel.
T.ex . För en funktionell mobiltelefon är de viktigaste delarna ”batteri” och ”sim-kort”.
Enhetstestningsexempel - Batteriet kontrolleras för dess livslängd, kapacitet och andra parametrar. Sim-kortet kontrolleras för aktivering.
Exempel på integrationstest - Batteri och simkort är integrerade dvs monterade för att starta mobiltelefonen.
Exempel på funktionstestning - En mobiltelefons funktionalitet kontrolleras med avseende på dess funktioner och batterianvändning samt sim-kortfunktioner.
Vi har sett ett exempel i lekmanns ord.
Låt oss nu ta ett tekniskt exempel på en inloggningssida:
Nästan varje webbapplikation kräver att sina användare / kunder loggar in. För det måste varje applikation ha en 'Inloggningssida' som har följande element:
- Konto / användarnamn
- Lösenord
- Inloggning / inloggningsknapp
För enhetstestning kan följande vara testfall:
- Fältlängd - användarnamn och lösenordsfält.
- Inmatningsfältvärden ska vara giltiga.
- Inloggningsknappen aktiveras först efter att giltiga värden (Format och längd) har angetts i båda fälten.
För integreringstestning kan följande vara testfall:
- Användaren ser välkomstmeddelandet efter att ha angett giltiga värden och tryckt på inloggningsknappen.
- Användaren ska navigeras till välkomstsidan eller hemsidan efter giltig inmatning och klicka på inloggningsknappen.
Nu, efter att enhets- och integrationstestning är klar, låt oss se tillägget testfall som övervägs för funktionell testning:
- Det förväntade beteendet kontrolleras, dvs. kan användaren logga in genom att klicka på inloggningsknappen efter att ha angett ett giltigt användarnamn och lösenordsvärden.
- Finns det ett välkomstmeddelande som ska visas efter en lyckad inloggning?
- Finns det ett felmeddelande som ska visas vid en ogiltig inloggning?
- Finns det några lagrade webbplatscookies för inloggningsfält?
- Kan en inaktiverad användare logga in?
- Finns det någon ”glömt lösenordslänk” för användare som har glömt sina lösenord?
Det finns mycket fler sådana fall som kommer att tänka på en funktionell testare när de utför funktionstester. Men en utvecklare kan inte ta upp alla ärenden när han bygger test- och enhetsfall.
Således finns det många scenarier som ännu inte ska testas, även efter test av enheter och integration.
Det är nu dags att undersöka Unit, Integration och Functional testing en efter en.
Vad är enhetstestning?
Som namnet antyder innebär denna nivå att testa en ”enhet”.
Här kan enheten vara den minsta delen av en applikation som kan testas, vare sig det är den minsta individuella funktionen, metoden etc. Programvaruutvecklare är de som skriver enhetstestfall. Målet här är att matcha kraven och enhetens förväntade beteende.
Nedan följer några viktiga punkter om enhetstestning och dess fördelar:
- Enhetstestning görs innan integrationstestning av programvaruutvecklare som använder vitlåda testtekniker .
- Enhetstestning kontrollerar inte bara det positiva beteendet, dvs. rätt utdata vid giltig inmatning, utan också de fel som uppstår med ogiltig inmatning.
- Att hitta problem / fel i ett tidigt skede är mycket användbart och det minskar de totala projektkostnaderna. Eftersom enhetstestning görs före integrering av kod kan problem som hittas i detta skede lösas mycket enkelt och deras inverkan är också mycket mindre.
- Ett enhetstest testar små bitar av kod eller enskilda funktioner så att de problem / fel som finns i dessa testfall är oberoende och inte påverkar andra testfall.
- En annan viktig fördel är att enhetstestfallen förenklar och gör testning av kod enklare. Så det blir lättare att lösa problemen i ett senare skede eftersom bara den senaste ändringen i koden ska testas.
- Enhetstest sparar tid och kostnad, och det är återanvändbart och lätt att underhålla.
JUnit ( Java-ramverk ), PHPUnit (PHP framework), NUnit (.Net framework) etc. är populära enhetstestverktyg som används för olika språk.
Vad är integrationstestning?
Integrationstestning testar integrationen av olika delar av systemet tillsammans. Två olika delar eller moduler i systemet integreras först och sedan utförs integrationstester.
Målet med integrationstestning är att kontrollera funktionalitet, tillförlitlighet och prestanda hos systemet när det är integrerat.
Integrationstest utförs på de moduler som enhetstestas först och sedan definierar integreringstest om kombinationen av modulerna ger önskad effekt eller inte.
Integrationstester kan antingen göras av oberoende testare eller av utvecklare också.
Det finns tre olika typer av metoder för integrationstestning. Låt oss diskutera var och en av dem kort:
a) Big Bang Integration Approach
I detta tillvägagångssätt är alla moduler eller enheter integrerade och testade som en helhet samtidigt. Detta görs vanligtvis när hela systemet är klart för integrationstest vid en enda tidpunkt.
Förväxla inte detta tillvägagångssätt för integrationstest med systemtestning, bara integrationen av moduler eller enheter testas och inte hela systemet som det görs vid systemtestning.
Big bang-tillvägagångssättets stora fördel är att allt integrerat testas på en gång.
En major nackdel är att det blir svårt att identifiera fel.
Exempel: I figuren nedan är enhet 1 till enhet 6 integrerad och testad med Big Bang-metoden.
b) Top-Down-tillvägagångssätt
Integrationen av enheterna / modulerna testas från topp till botten nivå steg för steg.
Den första enheten testas individuellt genom att skriva testa stubbar . Efter detta integreras de lägre nivåerna en efter en tills den sista nivån sätts ihop och testas.
Top-down-tillvägagångssättet är ett mycket organiskt sätt att integrera eftersom det överensstämmer med hur saker händer i den verkliga miljön.
Det enda oro med detta tillvägagångssätt är att huvudfunktionaliteten testas i slutet.
c) Nedifrån och upp-tillvägagångssätt
Enheter / moduler testas från botten till toppnivå steg för steg tills alla nivåer av enheter / moduler är integrerade och testade som en enhet. Stimulatorprogram anropade FÖRARE används i detta tillvägagångssätt. Det är lättare att upptäcka problem eller fel på de lägre nivåerna.
Majoren nackdel av detta tillvägagångssätt är att frågor på högre nivå endast kan identifieras i slutet när alla enheter har integrerats.
Enhetstest vs Integrationstestning
Efter att ha haft tillräckligt med diskussion om enhetstest och integrationstest, låt oss snabbt gå igenom skillnaderna mellan de två i följande tabell:
Enhetstestning | Integrationstestning |
---|---|
Utfördes i den inledande fasen av testningen och kan sedan utföras när som helst | Måste utföras efter enhetstestning och före systemtestning |
Testar den enda komponenten i hela systemet, dvs testar en enhet isolerat. | Testar systemkomponenterna som arbetar tillsammans, dvs. testar samarbetet mellan flera enheter. |
Snabbare att utföra | Kan springa långsamt |
Inget externt beroende. Något externt beroende spottas eller stubbas ut. | Kräver interaktion med externa beroenden (t.ex. databas, hårdvara etc.) |
Enkel | Komplex |
Leds av utvecklare | Ledas av testare |
Det är en typ av vitlåda testning | Det är en typ av svart låda testning |
Billigt underhåll | Dyrt underhåll |
Börjar från modulspecifikationen | Börjar från gränssnittspecifikationen |
Enhetstestning har ett smalt omfång eftersom det bara kontrollerar om varje liten kod kod gör vad den är tänkt att göra. | Den har ett bredare omfång eftersom den täcker hela applikationen |
Resultatet av enhetstestning är detaljerad synlighet för koden | Resultatet av integrationstesterna är den detaljerade synligheten av integrationsstrukturen |
Upptäck endast problemen inom funktionerna i enskilda moduler. Exponerar inte integrationsfel eller systemomfattande problem. | Upptäck buggarna uppstår när olika moduler interagerar med varandra för att bilda det övergripande systemet |
Funktionell testning
TILL testningsteknik för svart låda , där applikationens funktionalitet testas för att generera önskad utgång vid tillhandahållande av en viss ingång kallas ”Funktionstestning”.
I vår mjukvarutestningsprocesser , gör vi detta genom att skriva testfall enligt kraven och scenarierna. För alla funktioner kan antalet skrivna fall skrivas från ett till många.
Testfall består i princip av följande delar:
- Testöversikt
- Förutsättningar (om sådana finns)
- Testa inmatningssteg för fall
- Testdata (om någon)
- Förväntad produktion
- Anteckningar (om sådana finns)
'Kravsbaserat' och 'Affärsscenaribaserat' är de två formerna av funktionstester som utförs.
I kravbaserad testning skapas testfall enligt kravet och testas därefter. I ett affärsscenaribaserat funktionstestning utförs testning genom att tänka på alla scenarier ur ett affärsperspektiv.
Men majoren nackdel funktionell testning är den sannolika redundansen vid testning och möjligheten att missa några logiska fel.
Exakt skillnad
Låt oss titta på deras skillnader.
Här är några av de viktigaste:
Enhetstestning | Integrationstestning | Funktionell testning | |
---|---|---|---|
Definition och syfte | Testa minsta enheter eller moduler individuellt. | Testar integration av två eller flera enheter / moduler kombinerade för att utföra uppgifter. | Testa applikationens beteende enligt kraven. |
Komplexitet | Inte alls komplicerat eftersom det innehåller de minsta koder. | Något mer komplicerat än enhetstester. | Mer komplex jämfört med enhet- och integrationstester. |
Testtekniker | Testningsteknik för vitlåda. | Testningsteknik för vit låda och svart låda. Test av grå låda | Testningsteknik för svart låda. |
Stor uppmärksamhet | Enskilda moduler eller enheter. | Integrering av moduler eller enheter. | Hela applikationsfunktionaliteten. |
Fel / problem omfattas | Enhetstester hittar problem som kan förekomma ofta i moduler. | Integrationstester hittar problem som kan uppstå när olika moduler integreras. | Funktionstester hittar problem som inte tillåter ett program att utföra dess funktionalitet. Detta inkluderar också vissa scenaribaserade problem. |
Fråga fly | Ingen chans att fly ut. | Mindre risk för utsläpp. | Fler chanser att utsläpp flyr eftersom listan över test som ska köras alltid är oändlig. |
Läs också => Vad är funktionstestning
affärsanalytikerroll i agil scrum
Slutsats
Alla dessa tre testtyper är korrelerade.
För att uppnå full täckning krävs att du har enhetstester för kodens vägar / rader, funktionstester och integrationstest för att säkerställa att ”enheterna” fungerar tillsammans.
Hoppas att den här artikeln skulle ha gett dig en tydlig uppfattning om enhet, integration och funktionstestning tillsammans med deras skillnader, men det finns mycket mer i dessa former av testning !!
Rekommenderad läsning
- Bästa verktyg för testning av programvara 2021 [QA Test Automation Tools]
- Spock för integration och funktionstestning med selen
- Funktionell testning mot icke-funktionell testning
- Testing Primer eBook Download
- Topp 10 Integrationstestverktyg för att skriva integrationstester
- Viktiga skillnader mellan Black Box Testing och White Box Testing
- Komplett funktionell testguide med dess typer och exempel
- Funktionell testning mot prestandatestning: Bör det göras samtidigt?