Leestijd : 1 minuten
Functioneel testen en niet-functioneel testen: alles wat u moet weten

Functioneel testen en niet-functioneel testen: alles wat u moet weten
Wat is functioneel testen?
Tegenwoordig gebruiken we honderden, zo niet duizenden softwaretoepassingen zonder erbij na te denken. Alles wat we gebruiken, van de koelkast die we gebruiken, de tv-toestellen die we bekijken, de auto’s waarin we rijden, de beveiligingssystemen van het huis waar we op vertrouwen, de vluchten die we nemen, onze online winkelactiviteiten… en natuurlijk onze computers en mobiele telefoons – we nemen al deze dingen vanzelfsprekend. We verwachten dat ze zich precies zo gedragen als we verwachten, elke keer weer!
Heb je je ooit afgevraagd hoe zo’n perfectie wordt bereikt? Het antwoord daarop noemen we Functioneel Testen.
Functioneel testen zorgt ervoor dat alle applicaties die alle goodies die we gebruiken, precies werken zoals ze zouden moeten. Het is meestal een vorm van Black Box Testing omdat de testers over het algemeen niet echt in de interne programmastructuur komen, of hoe de applicaties werken. Ze kijken alleen naar wat erin gaat en wat eruit komt – input en output.
Met deze enorme oceaan van functionele tests die elke dag miljoenen apps evalueert, zijn er verschillende specifieke soorten tests die zijn ontworpen om aan zeer specifieke vereisten te voldoen.
In dit artikel bespreken we,
-
Soorten functionele testen
-
Soorten niet-functionele testen
-
Verschil tussen functioneel en niet-functioneel testen
Testen van een eenheid
De meest fundamentele vorm van Functioneel Testen is Unit Testing . Het evalueert de meest elementaire elementen of componenten van een softwareprogramma – de kleinste stukjes code die kunnen worden getest. Vandaar de naam Unit Testing. Elke eenheid kan een module, functie, methode of subroutine zijn die een bepaalde invoer nodig heeft en een bepaalde uitvoer afgeeft. Testcases voor Unit Testing evalueren fundamentele aspecten zoals lijn-, code- en methodedekking. Deze verwijzen naar welke regels of hoeveel code of welke methoden tijdens de test zijn uitgevoerd of “gedekt”.
Rook testen
Rooktesten dankt zijn naam aan een oude praktijk van het doorlaten van rook in sanitaire leidingen 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.
Sanity testen
Sanity Testing is een vorm van testen om ervoor te zorgen dat alle kritische/belangrijke functionaliteiten van de applicatie correct functioneren.
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 aangetast. Als dat zo is, zou het systeem zijn “teruggevallen” of teruggevallen naar een lager functionaliteitsniveau, vandaar de naam Regression Testing.
Integratie testen
Integratietesten worden 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 goed kunnen functioneren, zorgt Integration Testing ervoor dat ze net zo goed samenwerken.
Gebruikersacceptatietesten
Ook bekend als Beta Testing, is User Acceptance Testing (UAT) een vorm van testen waarbij de applicatie wordt getest door een kleine groep van 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 en globalisering testen
Dit soort testen zijn twee kanten van dezelfde medaille. Bij Localization Testing worden de functionaliteiten gecontroleerd om vast te stellen of ze geschikt zijn voor zeer specifieke lokale culturen, terwijl bij Globalization Testing wordt gecontroleerd of de applicatie geschikt is voor alle culturen wereldwijd.
Systeem testen
In termen van hiërarchie volgt Systeemtests over het algemeen Integratie en gaat vooraf aan Beta Testing of UAT. Bij System Testing wordt het gehele, volledig geïntegreerde systeem van begin tot eind getest.
Als we een analogie van een auto nemen, dan zal Unit Testing elke moer en bout, wielen, ramen etc. controleren. Bij Integration Testing worden de wielen verbonden met de as en het chassis en vervolgens getest. In Systeemtesten is de hele auto klaar en getest. Bij UAT of Beta Testing neemt de gebruiker de auto mee voor een proefrit.
Klik hieronder om enkele functionele tests en voorbeelden te bekijken.
Wat is niet-functioneel testen?
Terwijl Functional Testing 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 even cruciaal als het gaat om het voldoen aan de eisen van eindgebruikers, omdat applicaties niet alleen moeten ‘functioneren’, maar ook moeten ‘presteren’.
Hierbij wordt rekening gehouden met factoren zoals prestaties onder hoge belasting, bijvoorbeeld wanneer duizenden of zelfs miljoenen gebruikers tegelijkertijd inloggen op een systeem. Het houdt ook rekening met het vermogen van de toepassing om met verschillende vormen van stress, omgevingen, rampen, enzovoort om te gaan.
De meest voorkomende vormen van niet-functioneel testen zijn:
Belasting testen
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 dedicated servers die daadwerkelijke gebruiksomgevingen simuleren.
Stress testen
Stress Testing evalueert de prestaties van applicaties in moeilijke situaties, bijvoorbeeld bij weinig geheugen/harde schijfruimte. In dergelijke omgevingen is het mogelijk om defecten te detecteren die in normale situaties niet zouden zijn ontdekt.
Herstel testen
Hiermee wordt gecontroleerd of toepassingen netjes herstellen wanneer invoer niet is zoals verwacht of wanneer de omgeving faalt. Bijvoorbeeld wanneer een gebruiker een ongeldige invoer typt waardoor een databaseproces wordt afgebroken, of wanneer systemen abnormaal worden afgesloten vanwege een stroomstoring, enzovoort.
Beveiligingstests
Hiermee wordt eenvoudig gecontroleerd 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.
Schaalbaarheid testen
Scalability Testing controleert of de applicatie een toename van gebruikersverkeer, aantal transacties, processen of datavolume aankan. De applicatie moet worden opgeschaald om aan dergelijke toenemende eisen te voldoen.
Uithoudingsvermogen testen
Endurance Testing, ook wel Soak Testing genoemd, controleert of de applicatie langdurig belast kan worden. 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 consistent dezelfde output levert over een bepaalde tijdsduur. Betrouwbaarheidstesten zijn uiterst belangrijk in missiekritieke toepassingen zoals vliegtuigsystemen, kerncentraleprocessen en medische apparatuur, onder andere.
Basislijn testen
Baseline- of benchmarktesten 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, die vervolgens een maatstaf wordt voor toekomstige tests.
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 als kind aan een toepassing denkt, dan evalueert Functioneel Testen zijn manieren, terwijl niet-functioneel testen zijn cijfers in examens evalueert.
Enkele van de belangrijkste verschillen in functionele en niet-functionele testen zijn:
- Functioneel testen evalueert “wat”, terwijl niet-functioneel testen specificeert “hoe” een applicatie moet worden getest.
- Functioneel testen wordt gedaan op basis van de eisen van de eindgebruiker, terwijl niet-functioneel testen over het algemeen wordt gespecificeerd door het ontwikkelteam.
- Functionele tests worden altijd uitgevoerd voordat het systeem op de markt komt, maar niet-functionele tests kunnen zelfs na de livegang worden uitgevoerd.
- De reikwijdte van functioneel testen wordt bepaald door de productspecificaties, terwijl de reikwijdte van niet-functioneel testen afhangt van de systeemarchitectuur.
- Functioneel testen omvat de technische functionaliteiten, maar niet-functioneel testen omvat prestaties, betrouwbaarheid, beveiliging, schaalbaarheid en bruikbaarheid.
Samenvatting
Functioneel en niet-functioneel testen zijn twee pijlers van de testfamilie. Beide zijn even cruciaal als het gaat om het voldoen aan de eisen van de eindgebruikers. Terwijl functioneel testen alle gedragsaspecten van de applicatie bekijkt, zorgt niet-functioneel testen voor de juiste prestaties in een reeks gebruiksomstandigheden.