Belangrijkste verschil tussen functioneel testen en niet-functioneel testen
An INFJ personality wielding brevity in speech and writing.
Wat is functioneel testen?
Tegenwoordig gebruiken we honderden, zo niet duizenden softwareapplicaties zonder erover na te denken. Alles wat we gebruiken, vanaf de koelkast die we gebruiken, de tv-toestellen waar we naar kijken, de auto’s waarin we rijden, de huisbeveiligingssystemen waar we op vertrouwen, de vluchten die we nemen, onze online winkelactiviteiten… en natuurlijk onze computers en mobiele telefoons – we nemen al deze dingen zijn vanzelfsprekend. We verwachten dat ze zich elke keer precies gedragen zoals we verwachten!
Heeft u zich ooit afgevraagd hoe deze perfectie wordt bereikt? Het antwoord hierop is wat wij Functioneel testen noemen.
Functioneel testen zorgt ervoor dat alle applicaties die alle goodies aansturen die we gebruiken precies werken zoals ze zouden moeten doen. Het is meestal een vorm van Black Box Testing, omdat de testers over het algemeen niet echt ingaan op de interne programmastructuur of hoe de applicaties werken. Ze kijken alleen naar wat erin gaat en wat eruit komt: input en output.
Meestal gaat het om het controleren van het volgende:
- De nauwkeurigheid van de softwareuitvoer
- De volledigheid van de softwarefuncties
- De juistheid van het gedrag van de software
- De compatibiliteit van de software met andere systemen
Met deze enorme oceaan van Functioneel testen waarmee elke dag miljoenen apps worden geëvalueerd, zijn er verschillende specifieke soorten testen die zijn ontworpen om aan zeer specifieke vereisten te voldoen.
Wat is het verschil tussen functioneel en niet-functioneel testen?
Functioneel testen kijkt naar het gedrag van een applicatie, terwijl niet-functioneel testen kijkt naar de prestaties. Om een analogie te maken, als je aan een applicatie denkt als een kind, dan evalueert Functioneel testen zijn manieren, terwijl niet-functioneel testen zijn cijfers in examens evalueert.
Enkele van de belangrijkste verschillen in functioneel en niet-functioneel testen zijn:
Functie | Functioneel testen | Niet-functioneel testen |
---|---|---|
Doel | Om te verifiëren dat de software de functies uitvoert die het zou moeten uitvoeren | Om de niet-functionele aspecten van een softwaretoepassing te verifiëren, zoals de prestaties, bruikbaarheid, betrouwbaarheid en beveiliging |
Basis | Softwarevereisten en specificaties | Verwachtingen van klanten en prestatie-eisen |
Complexiteit | Minder-Medium complex | Ingewikkelder |
Tools | Handmatige en geautomatiseerde tools | Handmatig & Gespecialiseerde tools en technieken |
Voorbeelden | Controleren van de nauwkeurigheid van de uitvoer van de software, de volledigheid van de functies van de software en de juistheid van het gedrag van de software | Controleren van de prestaties van de software onder belasting, de bruikbaarheid door gebruikers, de betrouwbaarheid onder stress en de beveiliging tegen ongeoorloofde toegang |
Soorten functioneel testen
-
Unit-testen
De meest fundamentele vorm van functioneel testen is het testen van eenheden. Het evalueert de meest elementaire elementen of componenten van een softwareprogramma: de kleinste stukjes code die getest kunnen worden. Vandaar de naam Unit Testing. Elke eenheid kan een module, functie, methode of subroutine zijn die een bepaalde input neemt en een bepaalde output geeft. Testcases voor Unit Testing evalueren fundamentele aspecten zoals regel-, code- en methodedekking. Deze verwijzen naar welke regels of hoeveel code of welke methoden tijdens de test zijn uitgevoerd of “bedekt”.
Hier zijn enkele kenmerken van een goede unit-test:
- Het moet klein zijn en gericht op een specifieke code-eenheid.
- Het moet testbaar zijn en een duidelijk verwacht resultaat hebben.
- Het moet herhaalbaar en uitvoerbaar zijn op verzoek.
- Het moet onafhankelijk zijn van andere unit-tests.
- Het moet gemakkelijk te onderhouden zijn en bij te werken wanneer de code verandert.
-
Rooktest
Rooktesten dankt zijn naam aan een oude praktijk waarbij rook in leidingen wordt geleid om scheuren op te sporen. In een softwarecontext zijn Smoke Tests ontworpen om te detecteren of de code breekt of faalt, en onder welke omstandigheden. Het wordt over het algemeen gedaan na een nieuwe versie, of na enkele updates, om te controleren of de nieuwe builds stabiel zijn.
-
Gezondheidstesten
Sanity-tests worden meestal uitgevoerd op een nieuwe versie van software voordat deze wordt vrijgegeven voor productie. Het doel van gezond verstand testen is om snel te verifiëren dat de software werkt zoals verwacht en dat er geen grote defecten zijn.
-
Regressietesten
Deze vorm van testen wordt gedaan na het toevoegen van nieuwe code of het maken van bugfixes om ervoor te zorgen dat de bestaande functionaliteiten niet worden beïnvloed. Als dat het geval is, wordt gezegd dat het systeem is “teruggevallen” of is teruggevallen naar een lager functionaliteitsniveau, vandaar de naam regressietesten.
Bekijk: Aan de slag met geautomatiseerde regressietesten
-
Integratietesten
Integratietesten wordt gedaan wanneer twee, of in het algemeen meer dan twee, modules of componenten samen worden geïntegreerd om een applicatie te ontwikkelen. Hoewel de afzonderlijke modules of componenten op zichzelf correct kunnen werken, zorgt Integration Testing ervoor dat ze net zo goed samenwerken.
-
Gebruikersacceptatietest
User Acceptance Testing (UAT), ook wel Beta Testing genoemd, is een vorm van testen waarbij de applicatie wordt getest door een kleine groep daadwerkelijke gebruikers of experts, representatief voor de daadwerkelijke eindgebruikers, in real-life situaties. UAT geeft waardevolle feedback aan ontwikkelaars over de vraag of de functionaliteiten die ze creëren echt voldoen aan de behoeften van gebruikers en in welke mate, met welke hiaten of nadelen ze worden geconfronteerd en welke extra functies ze aan de applicatie moeten toevoegen.
-
Lokalisatie & Globalisering testen
Dit soort testen zijn twee kanten van dezelfde medaille. Bij Localization Testing worden de functionaliteiten gecontroleerd om na te gaan of ze geschikt zijn voor zeer specifieke lokale culturen, terwijl ze bij Globalization Testing worden gecontroleerd om na te gaan of de applicatie geschikt is voor alle culturen wereldwijd.
-
Systeemtest
In termen van hiërarchie volgt systeemtesten over het algemeen integratie en gaat het vooraf aan bètatesten of UAT. Bij System Testing wordt het volledige, volledig geïntegreerde systeem van begin tot eind getest.
Als we een analogie van een auto nemen, dan zal Unit Testing elke bout en moer, wielen, ramen enz. controleren. Bij integratietesten worden de wielen verbonden met de as en het chassis en vervolgens getest. Bij Systeemtesten is de hele auto klaar en getest. Bij UAT- of bètatesten neemt de gebruiker de auto mee voor een proefrit.
Wat is niet-functioneel testen?
Terwijl Functioneel testen zorgt voor de manier waarop de programma’s worden uitgevoerd in een applicatie, kijkt niet-functioneel testen naar hoe de applicatie presteert in een live omgeving. Dit type testen houdt rekening met aspecten als snelheid, betrouwbaarheid, schaalbaarheid, prestaties en bruikbaarheid.
Niet-functioneel testen is dus net zo belangrijk als het gaat om het voldoen aan de eisen van de eindgebruiker, omdat applicaties niet alleen moeten “functioneren”, maar ook moeten “performen”.
Hierbij wordt rekening gehouden met factoren zoals prestaties onder hoge belasting, bijvoorbeeld wanneer duizenden of zelfs miljoenen gebruikers gelijktijdig inloggen op een systeem. Het houdt ook rekening met het vermogen van de toepassing om verschillende vormen van stress, omgevingen, rampen, enzovoort aan te kunnen.
Soorten niet-functioneel testen:
-
Belastingtesten
Load Testing valideert dat de applicatie reageert zoals vereist, zelfs wanneer een groot aantal gelijktijdige gebruikers er tegelijkertijd toegang toe hebben, zoals in real-life situaties. Het wordt meestal uitgevoerd op speciale servers die daadwerkelijke gebruiksomgevingen simuleren.
-
Stresstesten
Stress Testing evalueert de prestaties van applicaties in krappe situaties, bijvoorbeeld bij weinig geheugen/harde schijfruimte. In dergelijke omgevingen is het mogelijk defecten op te sporen die in normale situaties niet zouden zijn ontdekt.
-
Herstel testen
Hiermee wordt gecontroleerd of toepassingen probleemloos worden hersteld wanneer invoer niet is zoals verwacht of wanneer de omgeving uitvalt. Bijvoorbeeld wanneer een gebruiker een ongeldige invoer typt waardoor een databaseproces wordt afgebroken, of wanneer systemen abnormaal worden afgesloten vanwege een stroomstoring, enzovoort.
-
Beveiligingstests
Dit controleert simpelweg of een applicatie geen gebreken of kwetsbaarheden heeft die kunnen worden misbruikt om het systeem in gevaar te brengen en tot gegevensverlies of diefstal te leiden. Het richt zich op het testen van authenticatie, toegangscontrole, autorisatie en andere dergelijke gevoelige processen.
-
Schaalbaarheidstesten
Schaalbaarheidstesten controleren of de applicatie een toename in gebruikersverkeer, aantal transacties, processen of datavolume aankan. De applicatie moet worden opgeschaald om aan dergelijke toenemende eisen te voldoen.
-
Duurzaamheidstesten
Endurance Testing, ook wel Soak Testing genoemd, controleert of de applicatie gedurende een lange tijd een aanhoudende belasting kan dragen. Meestal wordt het gebruikt om te testen op geheugenlekken in een systeem.
-
Betrouwbaarheidstesten
Deze vorm van testen kan worden gebruikt om te controleren of een applicatie gedurende een bepaalde tijd consistent dezelfde uitvoer levert. Betrouwbaarheidstesten zijn uitermate belangrijk in bedrijfskritische toepassingen zoals onder andere vliegtuigsystemen, processen in kerncentrales en medische apparatuur.
-
Baselinetesten
Baseline- of Benchmark-testen verwijst naar het instellen van een standaard voor elke nieuwe toepassing die wordt getest. Een applicatie kan bijvoorbeeld in de eerste testronde een belasting van 100.000 gebruikers aan, wat vervolgens een maatstaf wordt voor toekomstige tests.
Samenvatting
Functioneel en niet-functioneel testen zijn twee pijlers van de testfamilie. Beide zijn even kritisch als het gaat om het voldoen aan de eisen van de eindgebruikers. Terwijl functioneel testen naar alle gedragsaspecten van de applicatie kijkt, zorgt niet-functioneel testen voor de juiste prestaties in een reeks van gebruiksomstandigheden.
Wilt u de functionaliteit van uw product verbeteren? Bekijk de functionele testservices van Zuci en zie hoe u Zuci kunt inzetten voor uw zakelijke behoeften.