Wat is het verschil tussen functioneel en niet-functioneel testen?
Functioneel testen controleert of software doet wat het hoort te doen. Niet-functioneel testen onderzoekt hoe goed de software dat doet. Het verschil zit hem in het object van onderzoek: functionaliteit versus kwaliteitskenmerken zoals snelheid, beveiliging en bruikbaarheid. Beide testvormen zijn onmisbaar voor een goed softwareproduct. In dit artikel beantwoorden we de belangrijkste vragen over dit onderscheid, zodat je als software tester precies weet waar je mee te maken hebt.
Welke aspecten van software dekt functioneel testen?
Functioneel testen dekt alle aspecten van software die verband houden met de vereiste functionaliteit. Het gaat om de vraag: werkt de software zoals de gebruiker en de opdrachtgever verwachten? Elke feature, invoerverwerking en uitvoer wordt getoetst aan de functionele specificaties. De testgevallen zijn direct afgeleid van de eisen en gebruikersverhalen.
Concreet vallen de volgende zaken onder functioneel testen:
- Gebruikersinteracties: werkt een inlogformulier correct, worden invoerwaarden goed verwerkt?
- Bedrijfslogica: voert het systeem berekeningen en regels correct uit?
- Database-integriteit: worden gegevens juist opgeslagen, opgehaald en bijgewerkt?
- API-gedrag: reageren interfaces op de verwachte manier op verzoeken?
- Foutafhandeling: toont de applicatie de juiste foutmeldingen bij verkeerde invoer?
Functionele tests zijn doorgaans gebaseerd op de requirements en worden geschreven vanuit het perspectief van de eindgebruiker. Ze beschrijven een scenario, definiëren de verwachte uitkomst en vergelijken die met het werkelijke resultaat.
Wat valt er onder niet-functioneel testen?
Niet-functioneel testen onderzoekt de kwaliteitskenmerken van software die los staan van de specifieke functionaliteit. Het antwoord op de vraag “doet het systeem het?” staat hier niet centraal, maar “doet het systeem het goed genoeg?” De testresultaten bepalen of de software voldoet aan normen voor prestatie, betrouwbaarheid en gebruiksgemak.
Veelvoorkomende categorieën van niet-functioneel testen zijn:
- Prestatietesten: hoe snel reageert de applicatie onder normale en piekbelasting?
- Belastingstesten: hoeveel gelijktijdige gebruikers kan het systeem aan?
- Beveiligingstesten: is de applicatie bestand tegen aanvallen en datalekken?
- Bruikbaarheidstesten: kunnen gebruikers de software intuïtief bedienen?
- Compatibiliteitstesten: werkt de applicatie correct op verschillende browsers, besturingssystemen en apparaten?
- Betrouwbaarheidstesten: blijft het systeem stabiel over langere tijd?
Niet-functionele eisen worden vaak pas laat in het ontwikkelproces opgesteld, maar ze zijn minstens zo belangrijk als functionele eisen. Een applicatie die technisch correct werkt maar traag of onveilig is, voldoet uiteindelijk niet aan de verwachtingen van gebruikers en stakeholders.
Wat is het verschil tussen functioneel en niet-functioneel testen in de praktijk?
In de praktijk verschilt functioneel testen van niet-functioneel testen op drie kernpunten: het wat wordt getest, de meetmethode en de bron van de testcriteria. Functionele tests zijn binair van aard: een functie werkt of werkt niet. Niet-functionele tests meten gradaties, zoals responstijden of foutenpercentages, en vergelijken die met vooraf vastgestelde drempelwaarden.
Functioneel testen: gedragsgebaseerd
Functionele tests volgen een vast patroon: gegeven een bepaalde invoer en toestand, verwacht de tester een specifieke uitvoer. De test slaagt als de uitvoer overeenkomt met de specificatie. Dit maakt functionele tests relatief eenvoudig te automatiseren en te reproduceren. Ze zijn nauw verbonden met gebruikersverhalen en acceptatiecriteria.
Niet-functioneel testen: kwaliteitsgebaseerd
Niet-functionele tests zijn complexer omdat de normen subjectief of contextafhankelijk kunnen zijn. Wat als “snel genoeg” geldt, verschilt per applicatietype. Een software tester moet bij niet-functioneel testen samenwerken met architecten, security-specialisten en product owners om realistische normen op te stellen. De testuitvoering vereist vaak gespecialiseerde tools en omgevingen die de productieomgeving nabootsen.
Wanneer voer je functionele en niet-functionele tests uit?
Functionele tests voer je uit gedurende de gehele ontwikkelcyclus, vanaf het moment dat de eerste functionaliteit beschikbaar is. Niet-functionele tests vinden doorgaans later in het proces plaats, wanneer een stabiele versie van de software beschikbaar is. In moderne agile trajecten worden beide testtypen echter steeds vaker parallel uitgevoerd.
Een praktisch overzicht van de timing:
- Unit- en integratietests (vroeg): functionele tests op component- en integratieniveau starten direct na de eerste ontwikkeliteratie.
- Systeemtests (midden): zowel functionele als eerste niet-functionele tests worden uitgevoerd op het complete systeem.
- Acceptatietests (laat): functionele tests vanuit gebruikersperspectief, gecombineerd met prestatietests onder realistische omstandigheden.
- Regressietests (continu): geautomatiseerde functionele tests draaien bij elke nieuwe release om bestaande functionaliteit te beschermen.
Het is een veelgemaakte fout om niet-functionele tests te laat in te plannen. Prestatieknelpunten of beveiligingslekken die pas vlak voor de livegang worden ontdekt, zijn kostbaar om op te lossen. Vroeg testen bespaart tijd en geld.
Welke tools worden gebruikt voor functioneel en niet-functioneel testen?
Voor functioneel testen zijn tools als Selenium, Cypress en Playwright populair voor het automatiseren van browsergebaseerde tests. Voor niet-functioneel testen worden andere categorieën tools ingezet, afhankelijk van het type kwaliteitskenmerk dat gemeten wordt.
Tools voor functioneel testen
- Selenium: open-source framework voor geautomatiseerde webbrowsertests
- Cypress: modern JavaScript-testframework gericht op end-to-end tests
- Postman: veelgebruikt voor het testen van API-functionaliteit
- TestComplete: commercieel platform voor functionele UI-automatisering
Tools voor niet-functioneel testen
- JMeter: open-source tool voor belasting- en prestatietests
- Gatling: prestatietestframework gericht op hoge doorvoersnelheden
- OWASP ZAP: beveiligingstool voor het detecteren van kwetsbaarheden
- BrowserStack: cloudplatform voor compatibiliteitstests op verschillende apparaten en browsers
De keuze voor een specifieke tool hangt af van de technologiestack, het budget en de gewenste mate van automatisering. Veel teams combineren meerdere tools binnen één testpipeline.
Welke certificeringen sluiten aan bij software testen?
Voor software testers zijn er erkende certificeringen die zowel functioneel als niet-functioneel testen behandelen. De meest gerenommeerde zijn afkomstig van ISTQB en TMAP, twee organisaties die wereldwijd erkende kwalificaties aanbieden voor testprofessionals op alle niveaus.
Relevante certificeringen op een rij:
- ISTQB Foundation Level: de instapkwalificatie voor software testers, behandelt fundamentele testconcepten inclusief het onderscheid tussen functioneel en niet-functioneel testen
- ISTQB Advanced Level Test Analyst: verdieping op het gebied van testanalyse en testontwerp
- ISTQB Advanced Level Technical Test Analyst: gericht op technische aspecten zoals prestatietesten en beveiligingstesten
- TMAP: een methodiek die breed wordt toegepast in Nederland en België en aansluit bij agile en traditionele projectomgevingen
Bij het kiezen van een certificering is het verstandig om te kijken naar je huidige ervaringsniveau, de verwachtingen van werkgevers in jouw sector en de mate waarin de certificering internationaal erkend wordt. Bekijk ons volledige trainingsaanbod voor een overzicht van beschikbare cursussen op dit gebied.
Hoe Startel helpt bij het leren van software testen
Wil je als software tester een stevige basis leggen of je kennis van functioneel en niet-functioneel testen verdiepen? Wij bieden gerichte trainingen en certificeringsvoorbereidingen die aansluiten bij jouw niveau en leerstijl. Ons aanbod omvat:
- Klassikale en live online trainingen voor ISTQB en TMAP certificeringen
- Zelfstudiepakketten voor flexibel leren in eigen tempo
- Maatwerktrajecten voor teams en organisaties die hun testpraktijk willen professionaliseren
- Examenafname via onze geautoriseerde testcentra voor Pearson VUE, Kryterion en Exin
Of je nu net begint als software tester of al jaren ervaring hebt, wij helpen je verder. Neem gerust contact met ons op voor persoonlijk advies over de opleiding die het beste bij jou past.
