Leestijd : 1 minuten

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

Wat is functioneel testen?

Tegenwoordig gebruiken we honderden, zo niet duizenden softwaretoepassingen zonder er bij na te denken. Alles wat we gebruiken, van de koelkast die we gebruiken, de tv’s waar we naar kijken, de auto’s waarin we rijden, de beveiligingssystemen in huis waar we op vertrouwen, de vluchten die we halen, onze online shopping sprees… en natuurlijk onze computers en mobiele telefoons – we nemen al deze dingen vanzelfsprekend. We verwachten dat ze zich precies gedragen zoals 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 aansturen die we gebruiken, precies werken zoals ze zouden moeten. Het is meestal een vorm van Black Box-testen, 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.

Meestal gaat het om het controleren van het volgende:

  • De nauwkeurigheid van de uitvoer van de software
  • De volledigheid van de functies van de software
  • De juistheid van het gedrag van de software
  • De compatibiliteit van de software met andere systemen

Met deze enorme oceaan van functioneel testen die elke dag miljoenen apps evalueert, 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.

Bekijk functionele testvoorbeelden

Wat is niet-functioneel testen?

Non-functional testing

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.

Gerelateerd lezen/kijken:

Keerthi Veerappan

An INFJ personality wielding brevity in speech and writing. Marketer @ Zucisystems.

Deel deze blog, kies uw platform!

Leave A Comment

gerelateerde berichten