Vad är enhetstestning?
Vad är enhetstestning?
Enhetstestning är en typ av mjukvarutestning där enskilda enheter eller komponenter i en mjukvara testas. Syftet är att validera att varje enhet i mjukvarukoden fungerar som förväntat. Enhetstestning görs under utvecklingen (kodningsfasen) av en applikation av utvecklarna. Enhetstest isolerar ett avsnitt av koden och verifierar dess korrekthet. En enhet kan vara en enskild funktion, metod, procedur, modul eller objekt.
I SDLC, STLC, V-modell är enhetstestning den första testnivån som görs före integrationstestning. Enhetstestning är en vitBox testteknik som vanligtvis utförs av utvecklaren. Men i en praktisk värld på grund av tidsåtstramning eller ovilja hos utvecklare att testa, gör QA-ingenjörer också enhetstester.
Förklaring av video för enhetstestning
Varför utföra enhetstestning?
Enhetstestning är viktigt eftersom mjukvaruutvecklare ibland försöker spara tid genom att göra minimala enhetstester och detta är myt eftersom olämplig enhetstestning leder till höga kostnader defekt fixa under Kravhantering, Integrationstestning och även betatestning efter att applikationen är byggd. Om korrekt enhetstestning görs i tidig utveckling, sparar det tid och pengar i slutändan.
Här är de viktigaste skälen till att utföra enhetstester inom mjukvaruteknik:
- Enhetstester hjälper till att fixa buggar tidigt i utvecklingscykeln och sparar kostnader.
- Det hjälper utvecklarna att förstå testkodbasen och gör det möjligt för dem att göra ändringar snabbt
- Bra enhetstester fungerar som projektdokumentation
- Enhetstest hjälper till med kodåteranvändning. Migrera båda dina koder och dina tester till ditt nya projekt. Justera koden tills testerna körs igen.
Hur man utför enhetstestning
För att utföra enhetstester skriver utvecklare en kodsektion för att testa en specifik funktion i mjukvaruapplikationen. Utvecklare kan också isolera denna funktion för att testa mer rigoröst vilket avslöjar onödiga beroenden mellan funktion som testas och andra enheter så att beroenden kan elimineras. Utvecklare använder vanligtvis UnitTest ramverk att utveckla automatiserade testfall för enhetstestning.
Enhetstestning är av två typer
- Manuell
- Automatiserad
Enhetstestning är vanligtvis automatiserad men kan fortfarande utföras manuellt. Software Engineering gynnar inte det ena framför det andra men automatisering är att föredra. En manuell metod för enhetstestning kan använda ett steg-för-steg instruktionsdokument.
Under det automatiserade tillvägagångssättet-
- En utvecklare skriver ett avsnitt med kod i applikationen bara för att testa funktionen. De skulle senare kommentera och slutligen ta bort testkoden när applikationen distribueras.
- En utvecklare kan också isolera funktionen för att testa den mer rigoröst. Detta är en mer grundlig praxis för enhetstestning som involverar kopiering och inklistring av kod till sin egen testmiljö än sin naturliga miljö. Att isolera koden hjälper till att avslöja onödiga beroenden mellan koden som testas och andra enheter eller datautrymmen i produkten. Dessa beroenden kan sedan elimineras.
- En kodare använder vanligtvis ett UnitTest Framework för att utveckla automatiserade testfall. Med hjälp av ett automationsramverk kodar utvecklaren in kriterier i testet för att verifiera kodens korrekthet. Under utförandet av testfallen loggar ramverket testfall som inte fungerar. Många ramverk kommer också automatiskt att flagga och rapportera, sammanfattningsvis, dessa misslyckade testfall. Beroende på hur allvarlig ett fel är, kan ramverket stoppa efterföljande testning.
- Arbetsflödet för enhetstestning är 1) Skapa testfall 2) Review/Omarbeta 3) Baslinje 4) Utför testfall.
Enhetstestningstekniker
Smakämnen Enhetstestningstekniker är huvudsakligen indelade i tre delar som är Black box-testning som involverar testning av användargränssnitt tillsammans med input och output, White box-testning som involverar testning av mjukvaruapplikationens funktionella beteende och Gray box-testning som används för att exekvera testsviter, testmetoder , testfall och utföra riskanalys.
Kodtäckningstekniker som används i enhetstestning listas nedan:
- Utlåtande täckning
- Beslutstäckning
- Filialtäckning
- Tillståndstäckning
- Täckning för ändlig tillståndsmaskin
För mer i referens https://www.guru99.com/code-coverage.html
Exempel på enhetstestning: Mock-objekt
Enhetstestning förlitar sig på att skenobjekt skapas för att testa delar av kod som ännu inte är en del av en komplett applikation. Mock-objekt fyller i de saknade delarna av programmet.
Till exempel kan du ha en funktion som behöver variabler eller objekt som inte har skapats ännu. Vid enhetstestning kommer dessa att redovisas i form av skenobjekt som skapats enbart för syftet med enhetstesten som görs på den koddelen.
Enhetstestverktyg
Det finns flera automatiska enhetstestprogram tillgängliga för att hjälpa till med enhetstestning vid mjukvarutestning. Vi kommer att ge några exempel nedan:
- junit: Junit är ett gratis att använda testverktyg som används för Java programmeringsspråk. Det ger påståenden för att identifiera testmetod. Detta verktyg testar data först och infogas sedan i kodbiten.
- NUnit: NUnit används ofta för enhetstestning av ramverk för alla .net-språk. Det är ett verktyg med öppen källkod som gör det möjligt att skriva skript manuellt. Den stöder datadrivna tester som kan köras parallellt.
- JMockit: JMockit är enhetstestverktyg med öppen källkod. Det är ett kodtäckningsverktyg med linje- och vägmått. Det tillåter hånande API med inspelnings- och verifieringssyntax. Det här verktyget erbjuder linjetäckning, vägtäckning och datatäckning.
- EMMA: EMMA är ett verktyg med öppen källkod för att analysera och rapportera kod inskriven Java språk. Emma stödjer täckningstyper som metod, linje, grundblock. Det är det Java-baserad så den är utan externa biblioteksberoenden och kan komma åt källkoden.
- PHPUnit: PHPUnit är ett enhetstestverktyg för PHP-programmerare. Det tar små delar av koden som kallas enheter och testa var och en av dem separat. Verktyget tillåter också utvecklare att använda fördefinierade påståendemetoder för att hävda att ett system beter sig på ett visst sätt.
Det är bara några av de tillgängliga enhetstestverktygen. Det finns mycket mer, speciellt för C språk och Java, men du kommer säkert att hitta ett enhetstestverktyg för dina programmeringsbehov oavsett vilket språk du använder.
Testdriven utveckling (TDD) & Unit Testing
Enhetstestning i TDD innebär en omfattande användning av testramverk. Ett enhetstestramverk används för att skapa automatiserade enhetstester. Ramverk för enhetstestning är inte unika för TDD, men de är viktiga för det. Nedan tittar vi på några av vad TDD tillför världen av enhetstestning:
- Tester skrivs före koden
- Lita mycket på testramar
- Alla klasser i applikationerna testas
- Snabb och enkel integration är möjlig
Myt om enhetstestning
Myt: Det kräver tid, och jag är alltid överplanerad
Min kod är stenhård! Jag behöver inga enhetstester.
Myter är till sin natur falska antaganden. Dessa antaganden leder till en ond cirkel enligt följande –
Sanningen är Enhetstestning ökar utvecklingshastigheten.
Programmerare tror att integrationstestning kommer att fånga upp alla fel och utför inte enhetstestet. När enheter väl är integrerade tar mycket enkla fel som mycket lätt kunde ha hittats och fixats i testade enheter mycket lång tid att spåra och åtgärda.
Enhetstestningsfördel
- Utvecklare som vill lära sig vilken funktionalitet som tillhandahålls av en enhet och hur man använder den kan titta på enhetstesten för att få en grundläggande förståelse för enhetens API.
- Enhetstestning gör att programmeraren kan återställa kod vid ett senare tillfälle och se till att modulen fortfarande fungerar korrekt (dvs. Regressionstestning). Proceduren är att skriva testfall för alla funktioner och metoder så att närhelst en ändring orsakar ett fel kan det snabbt identifieras och åtgärdas.
- På grund av enhetstestningens modulära karaktär kan vi testa delar av projektet utan att vänta på att andra ska slutföras.
Nackdelar med enhetstestning
- Enhetstestning kan inte förväntas fånga upp alla fel i ett program. Det är inte möjligt att utvärdera alla exekveringsvägar även i de mest triviala programmen
- Enhetstestning fokuserar till sin natur på en kodenhet. Därför kan den inte fånga integrationsfel eller breda systemnivåfel.
Det rekommenderas att enhetstestning används i samband med andra testaktiviteter.
Bästa praxis för enhetstestning
- Enhetstestfall bör vara oberoende. Vid eventuella förbättringar eller förändringar i krav bör enhetstestfall inte påverkas.
- Testa endast en kod åt gången.
- Följ tydliga och konsekventa namnkonventioner för dina enhetstester
- Om koden ändras i någon modul, se till att det finns en motsvarande enhet Testfall för modulen, och modulen klarar testerna innan den ändrar implementeringen
- Buggar som identifieras under enhetstestning måste åtgärdas innan du fortsätter till nästa fas i SDLC
- Använd en "testa som din kod"-metod. Ju mer kod du skriver utan att testa, desto fler sökvägar måste du leta efter fel.
Sammanfattning
- UNIT TESTING definieras som en typ av mjukvarutestning där enskilda enheter eller komponenter i en mjukvara testas.
- Som du kan se kan det vara mycket involverat i enhetstestning. Det kan vara komplext eller ganska enkelt beroende på applikationen som testas och teststrategier, verktyg och filosofier som används. Enhetstestning är alltid nödvändig på någon nivå. Det är en säkerhet.