differences between unit testing
Een gedetailleerde vergelijking van unit-, integratie- en functionele testen:
Voor elke softwaretoepassing zijn zowel unit-tests als integratietests erg belangrijk, omdat elk van hen een uniek proces gebruikt om een softwaretoepassing te testen.
Maar een van de twee of zelfs beide kunnen op geen enkel moment Functioneel testen vervangen.
Wat je leert:
- Eenheidstest versus integratietest versus functioneel testen
- Wat is het testen van eenheden?
- Wat is integratietesten?
- Unit testen versus integratietesten
- Functioneel testen
- Exact verschil
- Gevolgtrekking
- Aanbevolen literatuur
Eenheidstest versus integratietest versus functioneel testen
Testen van een eenheid betekent het afzonderlijk testen van afzonderlijke modules van een applicatie (zonder enige interactie met afhankelijkheden) om te bevestigen dat de code de dingen goed doet.
Integratietesten betekent controleren of verschillende modules goed werken wanneer ze als een groep worden gecombineerd.
Functioneel testen betekent het testen van een stukje functionaliteit in het systeem (kan interageren met afhankelijkheden) om te bevestigen dat de code de juiste dingen doet.
Functionele tests zijn gerelateerd aan integratietests, maar ze duiden op tests die de functionaliteit van de hele applicatie controleren terwijl alle code tegelijk wordt uitgevoerd, bijna een superintegratietest.
Bij het testen van eenheden wordt overwogen om een enkel onderdeel van het systeem te controleren, terwijl bij het testen van functionaliteit wordt overwogen om de werking van een applicatie te vergelijken met de beoogde functionaliteit zoals beschreven in de specificatie van de systeemvereisten. Aan de andere kant wordt bij integratietests overwogen om geïntegreerde modules in het systeem te controleren.
En, nog belangrijker, om het rendement op de investering (ROI) te optimaliseren, moet uw codebasis zo veel mogelijk unit-tests, minder integratietests en zo min mogelijk functionele tests bevatten.
Dit wordt het beste geïllustreerd in de volgende testpiramide:
Unit-tests zijn gemakkelijker te schrijven en sneller uit te voeren. De tijd en moeite om de tests uit te voeren en te onderhouden, neemt toe van het testen van eenheden tot het testen van functies, zoals weergegeven in de bovenstaande piramide.
wat is mijn internetbeveiligingssleutel
Voorbeeld:
Laten we deze drie soorten testen begrijpen met een versimpeld voorbeeld.
Bijv Voor een functionele mobiele telefoon zijn de belangrijkste vereiste onderdelen 'batterij' en 'simkaart'.
Unit testen Voorbeeld - De batterij wordt gecontroleerd op levensduur, capaciteit en andere parameters. De simkaart wordt gecontroleerd op activering.
Voorbeeld van een integratietest - Batterij en simkaart zijn geïntegreerd, d.w.z. gemonteerd om de mobiele telefoon te starten.
Functioneel testvoorbeeld - De functionaliteit van een mobiele telefoon wordt gecontroleerd op functies en batterijgebruik, evenals simkaartfaciliteiten.
We hebben een voorbeeld gezien in termen van leken.
Laten we nu een technisch voorbeeld nemen van een inlogpagina:
Bijna elke webapplicatie vereist dat zijn gebruikers / klanten inloggen. Daarvoor moet elke applicatie een 'login' -pagina hebben die deze elementen bevat:
- Account gebruikersnaam
- Wachtwoord
- Login / Inloggen knop
Voor het testen van eenheden kunnen de volgende testgevallen zijn:
- Veldlengte - gebruikersnaam en wachtwoordvelden.
- Invoerveldwaarden moeten geldig zijn.
- De login-knop wordt pas ingeschakeld nadat geldige waarden (formaat en lengte) in beide velden zijn ingevoerd.
Voor integratietesten kunnen de volgende testgevallen zijn:
- De gebruiker ziet het welkomstbericht na het invoeren van geldige waarden en het indrukken van de login-knop.
- De gebruiker moet naar de welkomstpagina of startpagina worden genavigeerd na geldige invoer en klikken op de knop Inloggen.
Nu, nadat de unit- en integratietests zijn voltooid, laten we de extra bekijken testgevallen die in aanmerking komen voor functioneel testen:
- Het verwachte gedrag wordt gecontroleerd, d.w.z. of de gebruiker kan inloggen door op de login-knop te klikken na het invoeren van een geldige gebruikersnaam en wachtwoord.
- Is er een welkomstbericht dat moet verschijnen na een succesvolle login?
- Is er een foutmelding die zou moeten verschijnen bij een ongeldige login?
- Zijn er opgeslagen sitecookies voor inlogvelden?
- Kan een geïnactiveerde gebruiker inloggen?
- Is er een ‘wachtwoord vergeten’ link voor gebruikers die hun wachtwoord zijn vergeten?
Er zijn veel meer van dergelijke gevallen die in de geest van een functionele tester komen tijdens het uitvoeren van functionele tests. Maar een ontwikkelaar kan niet alle cases aannemen tijdens het bouwen van Unit- en Integration-testcases.
Er zijn dus tal van scenario's die nog moeten worden getest, zelfs na het testen van eenheden en integratie.
Het is nu tijd om unit-, integratie- en functioneel testen een voor een te bekijken.
Wat is het testen van eenheden?
Zoals de naam doet vermoeden, omvat dit niveau het testen van een ‘Eenheid’.
Hier kan de eenheid het kleinste deel van een applicatie zijn dat testbaar is, of het nu de kleinste individuele functie, methode, enz. Is. Softwareontwikkelaars zijn degenen die de eenheidstestcases schrijven. Het doel is hier om aan te sluiten bij de vereisten en het verwachte gedrag van de unit.
Hieronder staan enkele belangrijke punten over het testen van eenheden en de voordelen ervan:
- Unit-tests worden uitgevoerd voordat integratietests worden uitgevoerd door softwareontwikkelaars die white box-testtechnieken
- Unit testing controleert niet alleen het positieve gedrag, d.w.z. de correcte output bij geldige input, maar ook de storingen die optreden bij ongeldige input.
- Het in een vroeg stadium opsporen van problemen / bugs is erg handig en het verlaagt de totale projectkosten. Aangezien unit-tests worden uitgevoerd voordat de code wordt geïntegreerd, kunnen problemen die in dit stadium worden aangetroffen, heel gemakkelijk worden opgelost en is de impact ook veel kleiner.
- Een unit-test test kleine stukjes code of individuele functies, zodat de problemen / fouten die in deze testcases worden gevonden, onafhankelijk zijn en geen invloed hebben op de andere testcases.
- Een ander belangrijk voordeel is dat de unit-testcases het testen van code vereenvoudigen en vergemakkelijken. Het wordt dus gemakkelijker om de problemen ook in een later stadium op te lossen, aangezien alleen de laatste wijziging in de code moet worden getest.
- Eenheidstest bespaart tijd en kosten, is herbruikbaar en gemakkelijk te onderhouden.
JUnit Java-framework ), PHPUnit (PHP framework), NUnit (.Net framework) etc. zijn populaire unit testing tools die voor verschillende talen worden gebruikt.
Wat is integratietesten?
Integratietesten is het testen van de integratie van verschillende delen van het systeem samen. Twee verschillende onderdelen of modules van het systeem worden eerst geïntegreerd en vervolgens worden integratietests uitgevoerd.
Het doel van integratietests is om de functionaliteit, betrouwbaarheid en prestaties van het systeem na integratie te controleren.
Integratietesten worden uitgevoerd op de modules die eerst worden getest en vervolgens wordt bij integratietesten bepaald of de combinatie van de modules de gewenste output geeft of niet.
Integratietests kunnen worden uitgevoerd door onafhankelijke testers of ook door ontwikkelaars.
Er zijn 3 verschillende soorten integratietestbenaderingen. Laten we ze allemaal kort bespreken:
a) Big Bang-integratiebenadering
Bij deze aanpak worden alle modules of units in één keer geïntegreerd en getest. Dit wordt meestal gedaan wanneer het hele systeem klaar is voor integratietests op een bepaald moment.
Verwar deze benadering van integratietesten niet met systeemtesten, alleen de integratie van modules of units wordt getest en niet het hele systeem zoals bij systeemtesten.
De oerknalbenadering is belangrijk voordeel is dat alles wat geïntegreerd is in één keer wordt getest.
Een grote nadeel is dat het moeilijk wordt om de mislukkingen te identificeren.
Voorbeeld: In de onderstaande afbeelding zijn Unit 1 tot Unit 6 geïntegreerd en getest met behulp van de Big Bang-benadering.
b) Top-down benadering
De integratie van de units / modules wordt stap voor stap van boven naar beneden getest.
De eerste eenheid wordt individueel schriftelijk getest test STUBS Hierna worden de lagere niveaus één voor één geïntegreerd totdat het laatste niveau is samengesteld en getest.
De top-down benadering is een zeer organische manier van integreren, aangezien het consistent is met hoe dingen in de echte omgeving gebeuren.
De enige bezorgdheid bij deze insteek is dat de belangrijkste functionaliteit aan het eind wordt getest.
c) Bottom-up benadering
Units / modules worden stap voor stap van beneden naar boven getest, totdat alle niveaus van units / modules als één geheel zijn geïntegreerd en getest. Stimulatorprogramma's genaamd BESTUURDERS worden in deze benadering gebruikt. Het is gemakkelijker om problemen of fouten op de lagere niveaus te detecteren.
De burgemeester nadeel van deze benadering is dat de problemen op een hoger niveau pas aan het einde kunnen worden geïdentificeerd als alle eenheden zijn geïntegreerd.
Unit testen versus integratietesten
Nadat we genoeg discussie hebben gehad over unit testing en integratietesten, gaan we snel door de verschillen tussen de twee in de volgende tabel:
Testen van een eenheid | Integratietesten |
---|---|
Uitgevoerd in de beginfase van het testen en kan vervolgens op elk moment worden uitgevoerd | Moet worden uitgevoerd na het testen van de unit en vóór het testen van het systeem |
Test de enkele component van het hele systeem, d.w.z. test een eenheid afzonderlijk. | Test de systeemcomponenten die samenwerken, d.w.z. test de samenwerking van meerdere eenheden. |
Sneller uit te voeren | Kan langzaam werken |
Geen externe afhankelijkheid. Elke externe afhankelijkheid wordt bespot of weggeslagen. | Vereist interactie met externe afhankelijkheden (bijvoorbeeld database, hardware, etc.) |
Gemakkelijk | Complex |
Uitgevoerd door ontwikkelaar | Uitgevoerd door tester |
Het is een soort white box-testen | Het is een soort black box-testen |
Goedkoop onderhoud | Duur onderhoud |
Begint met de modulespecificatie | Begint vanaf de interfacespecificatie |
Unit testing heeft een beperkte reikwijdte, aangezien het alleen controleert of elk klein stukje code doet waarvoor het bedoeld is. | Het heeft een bredere reikwijdte omdat het de hele toepassing omvat |
Het resultaat van unit testing is een gedetailleerde zichtbaarheid van de code | Het resultaat van integratietesten is de gedetailleerde zichtbaarheid van de integratiestructuur |
Ontdek alleen de problemen binnen de functionaliteit van individuele modules. Brengt geen integratiefouten of systeembrede problemen aan het licht. | Ontdek de bugs die ontstaan wanneer verschillende modules met elkaar communiceren om het algehele systeem te vormen |
Functioneel testen
NAAR black box-testtechniek , waar de functionaliteit van de applicatie wordt getest om de gewenste output te genereren bij het leveren van een bepaalde input wordt ‘Functioneel testen’ genoemd.
In onze software testprocessen , doen we dit door testcases te schrijven volgens de vereisten en scenario's. Voor elke functionaliteit kan het aantal geschreven testcases variëren van één tot veel.
Testcases bestaan in principe uit de volgende onderdelen:
- Testoverzicht
- Vereisten (indien van toepassing)
- Test case input stappen
- Testgegevens (indien aanwezig)
- Verwachte resultaten
- Opmerkingen (indien aanwezig)
'Op vereisten gebaseerd' en 'Gebaseerd op bedrijfsscenario's' zijn de twee vormen van functioneel testen die worden uitgevoerd.
Bij op vereisten gebaseerde testen worden testcases gemaakt volgens de vereiste en dienovereenkomstig getest. In een op bedrijfsscenario gebaseerd functioneel testen, wordt het testen uitgevoerd door alle scenario's vanuit een zakelijk perspectief in gedachten te houden.
De majoor nadeel van functioneel testen is de waarschijnlijke redundantie bij het testen en de mogelijkheid om enkele logische fouten te missen.
Exact verschil
Laten we eens kijken naar hun verschillen.
Hier zijn enkele van de belangrijkste:
Testen van een eenheid | Integratietesten | Functioneel testen | |
---|---|---|---|
Definitie en doel | De kleinste eenheden of modules afzonderlijk testen. | Het testen van de integratie van twee of meer units / modules gecombineerd voor het uitvoeren van taken. | Het gedrag van de applicatie testen volgens de vereiste. |
Complexiteit | Helemaal niet ingewikkeld, want het bevat de kleinste codes. | Iets complexer dan unit-tests. | Complexer in vergelijking met unit- en integratietests. |
Testtechnieken | White box-testtechniek. | White box en black box testtechniek. Grijze doos testen | Black box-testtechniek. |
Grote aandacht | Individuele modules of units. | Integratie van modules of units. | Volledige toepassingsfunctionaliteit. |
Fout / problemen gedekt | Unit-tests vinden problemen die vaak kunnen voorkomen in modules. | Integratietests vinden problemen die kunnen optreden bij het integreren van verschillende modules. | Functionele tests vinden problemen waardoor een applicatie zijn functionaliteit niet kan uitvoeren. Dit omvat ook enkele op scenario's gebaseerde problemen. |
Probleem ontsnapping | Geen kans op ontsnapping. | Minder kans op ontsnapping. | Er is meer kans op ontsnappingsproblemen, aangezien de lijst met uit te voeren tests altijd oneindig is. |
Lees ook => Wat is functietesten
hoe je een lijst met gehele getallen maakt in java
Gevolgtrekking
Al deze drie testtypen zijn gecorreleerd.
Om volledige dekking te krijgen, zijn unit-tests vereist voor de paden / regels van code, functionele en integratietests om er zeker van te zijn dat de ‘units’ samenhangend samenwerken.
Ik hoop dat dit artikel je een duidelijk idee zou hebben gegeven over unit-, integratie- en functionele testen, samen met hun verschillen, hoewel er veel meer is aan deze vormen van testen !!
Aanbevolen literatuur
- Beste softwaretesttools 2021 (QA Test Automation Tools)
- Spock voor integratie en functioneel testen met selenium
- Functioneel testen versus niet-functioneel testen
- Primer eBook downloaden testen
- Top 10 integratietesttools om integratietests te schrijven
- Belangrijkste verschillen tussen Black Box-tests en White Box-tests
- Complete functionele testgids met zijn typen en voorbeelden
- Functioneel testen versus prestatietesten: moet het tegelijkertijd worden uitgevoerd?