Niet-functioneel testen is het testen van software die wordt uitgevoerd om de niet-functionele aspecten van een softwareapplicatie te testen.
Er zijn veel verschillende soorten niet-functioneel testen, en sommige soorten softwaretesten kunnen tegelijkertijd als functioneel en niet-functioneel worden beschouwd.
Niet-functionele tests zijn noodzakelijk omdat ze essentiële gebruikerscriteria zoals prestaties en bruikbaarheid evalueren en nagaan of de software buiten de basisfunctionaliteit naar verwachting werkt.
In dit artikel verkennen we de definitie en kenmerken van niet-functioneel testen, naast soorten niet-functioneel testen, benaderingen van niet-functioneel testen, en testtools die kunnen helpen uw eigen niet-functionele testprocessen te optimaliseren en te verbeteren.
Wat is niet-functioneel testen?
Niet-functioneel testen is elke vorm van softwaretesten waarbij niet-functionele aspecten van de gebouwde software worden getest.
Voorbeelden van niet-functionele tests zijn tests ter beoordeling van capaciteit, prestaties, bruikbaarheid, herstel en overdraagbaarheid.
Verificatie van de kwaliteit en status van elk van deze niet-functionele criteria is net zo belangrijk als verificatie van de functies van een stuk software, maar deze parameters worden niet getest bij standaard functionele tests.
In wezen betekent niet-functioneel testen het testen van ‘hoe’ softwarefuncties werken in plaats van te testen ‘of’ ze werken.
1. Wanneer moet je niet-functioneel testen?
Niet-functionele tests worden uitgevoerd tijdens de systeemtestfase van het testen van software nadat de eenheidstests en integratietests hebben plaatsgevonden.
Tijdens het testen van het systeem voeren de testers zowel functionele als niet-functionele tests uit, te beginnen met functionele tests.
Zodra testers hebben vastgesteld dat de software functioneert zoals verwacht, voeren zij niet-functionele tests uit om te beoordelen of de software ook aan de niet-functionele parameters voldoet.
Het is meestal nodig om functionele tests uit te voeren vóór niet-functionele tests, omdat het onmogelijk is de betrouwbaarheid of prestaties te testen van functies die helemaal niet werken. Niet-functioneel testen is een van de laatste fasen van het testen van software vóór het testen van de gebruikersacceptatie en de uiteindelijke vrijgave van het product.
2. Wanneer je niet-functioneel testen niet nodig hebt
Het is altijd belangrijk om niet-functionele aspecten van software te testen, tenzij ze al zijn getest en afdoende zijn bevonden.
Zelfs als u al eerder niet-functionele tests op software hebt uitgevoerd, kan het nodig zijn om opnieuw niet-functionele parameters te testen, bijvoorbeeld als er nieuwe functies aan de software zijn toegevoegd of als er wijzigingen in de code zijn aangebracht die de prestaties en betrouwbaarheid kunnen beïnvloeden.
De doelstellingen van niet-functioneel testen
De doelstellingen van niet-functionele tests zijn na te gaan of het product voldoet aan de verwachtingen van de gebruiker en het product te optimaliseren voordat het wordt vrijgegeven.
Het kan ontwikkelaars en testers ook helpen de software beter te begrijpen en deze kennis te gebruiken bij toekomstige optimalisaties.
1. Kwaliteitscontrole
Niet-functionele tests zijn gericht op het testen van factoren die van invloed zijn op de bruikbaarheid, betrouwbaarheid, onderhoudbaarheid, overdraagbaarheid en efficiëntie van het product.
Het testen van deze elementen zorgt ervoor dat het product dat op de markt komt van voldoende hoge kwaliteit is en voldoet aan de verwachtingen van de gebruiker wat betreft prestaties, laadtijden en gebruikerscapaciteit.
2. Risicobeheer
Niet-functioneel testen vermindert ook het risico en de kosten van het op de markt brengen van een product door de kans te maximaliseren dat het team een bevredigend product uitbrengt.
Door de niet-functionele parameters van de software te controleren, kunnen de kosten van het uitbrengen van het product worden verlaagd, omdat de noodzaak van verdere ontwikkeling en softwareveranderingen later wordt verminderd.
3. Optimalisatie
Niet-functionele tests helpen testers en ontwikkelaars om de software optimaal te bouwen en de prestaties tijdens installatie, installatie, uitvoering en gebruik te optimaliseren.
U kunt niet-functionele tests ook gebruiken om de manier waarop u de softwarebouw beheert en bewaakt te optimaliseren.
4. Gegevensverzameling
Met niet-functionele tests kunnen testers metingen en metrieken verzamelen en produceren die door testteams kunnen worden gebruikt voor intern onderzoek en ontwikkeling.
U kunt de gegevens die u uit niet-functionele tests verzamelt, gebruiken om te begrijpen hoe uw product werkt en hoe u het beter kunt optimaliseren voor gebruikers.
5. Kennisvergroting
Niet-functionele tests verbeteren en vergroten de kennis van het testteam over het gedrag van het product en de technologieën die het gebruikt.
Niet alleen helpt dit testteams de software waaraan ze werken beter te begrijpen, maar het kan ook nuttige kennis opleveren die testers helpt toekomstige builds beter te begrijpen.
Wie is betrokken bij niet-functioneel testen?
Niet-functionele tests worden meestal uitgevoerd door testers in de QA-omgeving, maar soms voeren ontwikkelaars niet-functionele tests uit tijdens de ontwikkeling.
Systeemtests worden bijna altijd uitgevoerd door testers, en dit is de testfase waarin de meeste niet-functionele tests plaatsvinden.
Als niet-functionele tests mislukken, sturen de testers de software terug naar de ontwikkelaars om de fouten in de prestaties te corrigeren alvorens opnieuw te testen.
De voordelen van niet-functioneel testen
Het uitvoeren van niet-functionele tests heeft veel voordelen, en niet-functionele tests zijn een essentiële stap in het testen van systemen.
Zonder niet-functionele tests zouden testteams niet kunnen nagaan of de software daadwerkelijk voldoet aan de eisen van de klant of aan de eisen in het softwareontwikkelingsplan.
1. De prestaties van de software verbeteren
Niet-functionele tests kunnen testers en ontwikkelaars helpen de algemene prestaties van softwareapplicaties te verbeteren. Niet-functionele tests wijzen gebieden aan waar de prestaties van de software tekortschieten, bijvoorbeeld wat betreft laadsnelheid of verwerkingscapaciteit, en sporen softwareteams aan wijzigingen aan te brengen om deze gebreken te corrigeren.
Dit zorgt ervoor dat softwareteams alleen software vrijgeven aan het publiek wanneer deze klaar is, en wanneer de prestaties goed genoeg zijn.
2. Software veilig houden
Niet-functionele tests omvatten veiligheidstests, die van cruciaal belang zijn om ervoor te zorgen dat de software veilig is en beschermd tegen bedreigingen en aanvallen van buitenaf.
Dankzij beveiligingstests kunnen testers en ontwikkelaars nagaan of software vertrouwelijke gegevens adequaat beschermt en voldoende beveiligd is tegen hedendaagse cyberaanvallen.
3. De gebruiksvriendelijkheid van de software vergroten
Niet-functionele tests zijn de beste manier om uw software gebruiksvriendelijker te maken, met name door het uitvoeren van bruikbaarheidstests die beoordelen hoe gemakkelijk gebruikers uw software kunnen leren gebruiken en bedienen.
Gebruiksvriendelijkheid is erg belangrijk omdat het bepaalt hoe tevreden gebruikers zijn met uw software en ervoor zorgt dat gebruikers optimaal gebruik kunnen maken van alles wat uw software biedt.
4. Ervoor zorgen dat de software voldoet aan de behoeften van de gebruiker
Ervoor zorgen dat software voldoet aan de behoeften van gebruikers zou een van de topprioriteiten moeten zijn van alle softwareontwikkelings- en testteams. Gebruikers verwachten niet alleen dat de software functioneel is, maar ook dat de software goed presteert, soepel werkt en vertrouwelijke gegevens beveiligt.
Niet-functioneel testen is een van de enige manieren om ervoor te zorgen dat uw software aan deze eisen voldoet.
De uitdagingen van niet-functioneel testen
Het uitvoeren van niet-functionele tests heeft enkele nadelen. Hoewel niet-functioneel testen essentieel is tijdens de systeemtestfase van softwaretesten, kan het proces van niet-functioneel testen een uitdaging vormen voor softwareteams die niet over voldoende middelen en hulpmiddelen beschikken.
1. Herhaling
Niet-functionele tests bij het testen van software moeten worden uitgevoerd telkens wanneer software door ontwikkelaars wordt bijgewerkt of wanneer code wordt gewijzigd. Dit betekent dat niet-functioneel testen zeer repetitief kan zijn, wat niet alleen tijd kost maar ook testers vermoeit.
Vermoeide testers die zeer repetitieve taken uitvoeren lopen ook meer kans om afgeleid te worden en fouten te maken.
2. Kosten
Omdat niet-functioneel testen zo repetitief is, kan het ook vrij kostbaar zijn, vooral voor testteams die vertrouwen op handmatig niet-functioneel testen.
Softwareteams moeten tijd en budget vrijmaken voor frequente niet-functionele tests, en softwareontwikkelaars moeten extra betalen voor deze extra tests.
Wat testen we bij niet-functioneel testen?
Met niet-functionele tests kunnen vele verschillende niet-functionele parameters worden getest, die elk van invloed zijn op de kwaliteit en de bruikbaarheid van het systeem. Elk van deze parameters wordt tijdens het testen van het systeem getoetst aan de hand van in het testplan vastgestelde criteria.
1. Beveiliging
Beveiligingstests zijn een soort niet-functionele tests die meten hoe goed een systeem is beveiligd tegen externe bedreigingen en aanvallen. Het gaat hierbij om opzettelijke schendingen van de beveiliging, datalekken en andere veel voorkomende inbreuken.
Beveiligingstests zijn een belangrijke stap in niet-functionele tests omdat zij eindgebruikers en klanten de zekerheid bieden dat hun gegevens veilig zijn.
2. Betrouwbaarheid
Testers gebruiken niet-functionele tests om de betrouwbaarheid van software te beoordelen en ervoor te zorgen dat de software voortdurend de gespecificeerde functies zonder mankeren kan uitvoeren.
Terwijl functionele tests ervoor zorgen dat software zijn belangrijkste functies uitvoert, testen alleen niet-functionele tests daadwerkelijk de betrouwbaarheid en herhaalbaarheid van deze resultaten.
3. Overleefbaarheid
Overlevingsvermogen beschrijft hoe een softwaresysteem reageert als het niet functioneert, en het testen van het overlevingsvermogen zorgt ervoor dat als er fouten en storingen optreden, het systeem zichzelf kan herstellen.
Bij het testen van de overlevingskansen kan worden nagegaan of de software in staat is gegevens op te slaan om het gegevensverlies bij een plotselinge storing tot een minimum te beperken.
4. Beschikbaarheid
De beschikbaarheid van de software heeft betrekking op de mate waarin de gebruiker tijdens de werking van het systeem op het systeem kan vertrouwen. Dit wordt ook wel stabiliteit genoemd, en het wordt getest door stabiliteitstests.
Stabiliteitstests vertonen enige gelijkenis met betrouwbaarheidstests, omdat wordt nagegaan of het systeem consistent volgens de verwachte normen kan presteren.
5. Bruikbaarheid
Bruikbaarheidstests zijn een ander belangrijk type niet-functionele tests bij het testen van software. Dit type test beoordeelt hoe goed de gebruiker het softwaresysteem kan leren kennen, bedienen en gebruiken door de instructies op het scherm en andere basisgidsen te volgen.
Bruikbaarheidstests zijn belangrijk, want als de software niet goed bruikbaar is, zullen de meeste gebruikers de software gewoon links laten liggen of voor iets anders kiezen.
6. Schaalbaarheid
Bij schaalbaarheidstests wordt getest in hoeverre een softwaretoepassing haar verwerkingscapaciteit kan uitbreiden om aan een toenemende vraag te voldoen.
Als de software bijvoorbeeld is ontworpen om door meerdere gebruikers tegelijk op één netwerk te worden gebruikt, hoe werkt het dan als tien gebruikers tegelijk inloggen? Hebben hogere gebruikersaantallen een significante invloed op de prestaties of de laadtijden?
7. Interoperabiliteit
Interoperabiliteitstests zijn een soort niet-functionele tests die nagaan hoe goed een softwaresysteem interfacet met andere softwaresystemen.
Dit is vooral belangrijk wanneer software wordt ontworpen als onderdeel van een reeks producten die allemaal met elkaar integreren.
8. Efficiëntie
Efficiëntie bij het testen van software heeft betrekking op de mate waarin een softwaresysteem capaciteit, kwantiteit en reactietijd aankan.
Testers kunnen bijvoorbeeld beoordelen hoeveel gebruikers tegelijk op het systeem kunnen inloggen, hoe lang het duurt om gegevens uit de database op te halen, of hoe snel de software basistaken kan uitvoeren.
9. Flexibiliteit
Flexibiliteit meet de mate waarin een softwaresysteem kan werken met verschillende soorten hardware en randapparatuur.
Bijvoorbeeld hoeveel RAM de software nodig heeft of een bepaalde hoeveelheid CPU. Hoe lager de eisen voor de softwaretoepassing, hoe flexibeler de software.
10. Draagbaarheid
Bij het testen van de overdraagbaarheid wordt getest hoe flexibel en gemakkelijk de software kan worden overgezet van de huidige hardware- of softwareomgeving.
Portabiliteit is belangrijk omdat het van invloed is op hoe gemakkelijk eindgebruikers software kunnen beheren en tussen verschillende systemen kunnen verplaatsen.
11. Herbruikbaarheid
Herbruikbaarheidstests zijn een soort niet-functionele tests die testen of delen van het softwaresysteem kunnen worden omgezet voor hergebruik binnen een andere toepassing.
Hoewel het testen op herbruikbaarheid meestal geen invloed heeft op klanten en eindgebruikers, is het een goede weerspiegeling van hoe effectief ontwikkelaars componenten maken die in de toekomst kunnen worden hergebruikt.
De kenmerken van niet-functionele tests
Om te begrijpen wat niet-functionele tests zijn, moeten we de kenmerken van niet-functionele tests begrijpen. Deze kenmerken definiëren niet-functioneel testen bij het testen van software.
1. Meetbaar
Niet-functionele tests zijn altijd kwantitatief en meetbaar, wat betekent dat testers geen subjectieve uitdrukkingen als “mooi” of “goed” gebruiken, maar in plaats daarvan cijfers en feiten om de resultaten van niet-functionele tests te beschrijven.
Bijvoorbeeld, in plaats van laadtijden te beschrijven als “snel” of “langzaam”, moeten niet-functionele tests resulteren in specifieke cijfers die het aantal keren weergeven.
2. Specifiek
Bij het uitvoeren van niet-functionele tests moet het doel van de tests specifiek zijn voor de ontwerpspecificaties van de software.
Als het softwareprojectplan bijvoorbeeld verwijst naar het aantal gebruikers dat tegelijk moet kunnen inloggen, moet dit prioriteit krijgen bij het niet-functioneel testen.
3. Onbekend
Hoewel niet-functionele tests specifiek kunnen worden ontworpen om kenmerken te meten die in projectplannen zijn vastgelegd, zullen deze kenmerken in veel gevallen niet van tevoren worden gespecificeerd.
In dit geval moeten testers gewoon niet-functionele tests uitvoeren om de software te beoordelen op basis van elke parameter en deze later vergelijken met de verwachtingen.
De levenscyclus van niet-functionele tests
Aangezien niet-functioneel testen niet verwijst naar een specifieke fase in de levenscyclus van het testen van software, maar gewoon naar een type test dat gewoonlijk plaatsvindt tijdens de systeemtestfase van het testen van software, kan de levenscyclus van niet-functioneel testen per project sterk verschillen.
In het algemeen volgt het een soortgelijke levenscyclus als andere soorten softwaretests, die begint met het analyseren van de projecteisen en eindigt met de uitvoering van tests en de vervulling van de cyclus.
1. Analyse van softwarevereisten
De eerste fase van de levenscyclus voor niet-functioneel testen is de analyse van de software-eisen. Softwareteams werken aan specifieke criteria bij het bouwen en testen van toepassingen, en deze criteria moeten dicteren welk type tests moet worden uitgevoerd.
2. Testplanning
De volgende fase van de levenscyclus is de testplanning. Tijdens de testplanningsfase stelt de QA lead een gedetailleerd testplan op dat beschrijft wat getest zal worden, wie het testen zal uitvoeren, en welke testbenaderingen, methoden en hulpmiddelen gebruikt zullen worden.
Het testplan moet alle noodzakelijke details bevatten die testers nodig hebben om testgevallen te creëren en uit te voeren.
3. Aanmaken van testcases
Het maken van testcases is de volgende fase van niet-functioneel testen. In dit stadium worden niet-functionele testgevallen ontwikkeld die testers in een later stadium zullen uitvoeren om de niet-functionele vereisten van het systeem te testen.
Testgevallen beschrijven wat wordt getest, hoe het wordt getest, en wat het verwachte resultaat van de test is.
4. Opzetten van de testomgeving
De volgende fase in de levenscyclus van niet-functioneel testen is het opzetten van de testomgeving voordat het testen begint.
De testomgeving is waar alle tests plaatsvinden, en het is de thuisbasis van middelen en hulpmiddelen die u zult gebruiken om niet-functionele tests uit te voeren.
Het testteam bereidt de testomgeving voor op de uitvoering van de test.
5. Uitvoering van de test
Testuitvoering is de volgende fase van de niet-functionele testlevenscyclus. Hierbij worden de eerder gemaakte testgevallen uitgevoerd om verschillende aspecten van softwaretoepassingen te testen, waaronder beveiliging, laadtijden, capaciteit en overdraagbaarheid.
Het testteam voert elke case afzonderlijk uit en toetst het resultaat van elke test aan het verwachte resultaat.
6. Cyclusherhaling
De laatste fase van de niet-functionele testlevenscyclus is cyclusvervulling en herhaling. Nadat alle testgevallen zijn uitgevoerd, controleren de testers welke tests zijn geslaagd en welke niet.
Tests die mislukken geven meestal aan dat er een defect is dat door de ontwikkelaars moet worden verholpen. Zodra de ontwikkelaars de code hebben gepatcht of bewerkt, herhaalt de testcyclus van de software zich opnieuw totdat er geen defecten meer worden gevonden.
Wat verwarring ophelderen:
Niet-functioneel testen vs. functioneel testen
Functioneel testen en niet-functioneel testen zijn twee verschillende maar even belangrijke vormen van softwaretesten die samen worden gebruikt om te beoordelen of een softwareapplicatie voldoet aan de eisen van de gebruikers zoals die in de projectopdracht zijn vastgelegd.
Hoewel het allebei noodzakelijke soorten tests zijn die softwareteams in staat stellen gebreken op te sporen bij het bouwen van software, verschillen functionele en niet-functionele tests volledig van elkaar.
1. Wat is het verschil tussen functioneel en niet-functioneel testen?
Het verschil tussen functioneel en niet-functioneel testen zit hem in wat ze testen. Functionele tests testen de functies van de toepassing en gaan na of ze werken zoals verwacht. Niet-functionele tests testen andere aspecten van de toepassing die van invloed zijn op de tevredenheid van de gebruiker en de kwaliteit van de toepassing.
Functioneel en niet-functioneel testen vinden plaats in verschillende fasen van het testen van software, maar beide soorten testen worden meestal uitgevoerd tijdens de fase van het testen van het systeem.
Zowel functionele als niet-functionele tests kunnen ons helpen te begrijpen hoe goed een toepassing werkt en of zij haar taak naar behoren vervult.
Als u bijvoorbeeld een mobiele app test waarmee gebruikers to-do-lijstjes en boodschappenlijstjes kunnen opslaan, kunnen functionele tests functies testen als het maken van een nieuwe lijst, het opslaan van een lijst en het bewerken van bestaande lijsten.
Niet-functionele tests kunnen beoordelen hoe goed de applicatie werkt op verschillende mobiele apparaten, hoe snel lijsten laden, en hoeveel de app-prestaties worden beïnvloed wanneer andere apps op de achtergrond draaien.
2. Conclusie: niet-functioneel testen vs. functioneel testen
Zowel functionele als niet-functionele tests zijn belangrijke soorten softwaretests die testers en QA-teams kunnen helpen beoordelen of een applicatie aan de huidige eisen voldoet.
Terwijl functionele tests de functies van de software testen, testen niet-functionele tests andere aspecten die de prestaties, de efficiëntie en de veiligheid kunnen beïnvloeden.
Eenheidstesten, integratietesten en API-testen zijn allemaal vormen van functioneel testen. In elk van deze fasen van het testen van software beoordelen testers hoe goed functies en kenmerken afzonderlijk of samen werken en sporen zij bugs en defecten op die verhinderen dat functies werken zoals verwacht.
Beveiligingstesten, bruikbaarheidstesten, portabiliteitstesten en belastingstesten zijn allemaal vormen van niet-functionele testen waarmee testers kunnen beoordelen hoe goed een app zijn functies uitvoert en de behoeften van gebruikers ondersteunt.
Soorten niet-functioneel testen
Er zijn veel verschillende soorten niet-functionele tests, die elk een ander niet-functioneel aspect van de prestaties of efficiëntie van een softwaretoepassing testen.
Elk van deze soorten tests zal verschillende parameters testen, en sommige tests kunnen dezelfde parameters op verschillende manieren testen.
1. Prestatietests
Prestatietests zijn een soort niet-functionele tests die nagaan hoe goed verschillende softwarecomponenten werken. In plaats van de functionaliteit te testen, wat functionele tests doen, kunnen prestatietests reactietijden, knelpunten en storingspunten testen. Prestatietests helpen testers ervoor te zorgen dat de software van hoge kwaliteit is en snel, stabiel en betrouwbaar.
2. Stresstests
Stress tests zijn een soort niet-functionele tests die testen hoe goed de software presteert wanneer deze onder abnormale druk wordt gezet. Dit kan betekenen dat wordt getest hoe de software presteert wanneer iemand veel verschillende functies tegelijk probeert te gebruiken, of terwijl er veel andere toepassingen tegelijkertijd worden uitgevoerd.
Bij stresstests wordt nagegaan bij welke grens de software niet meer goed werkt en wat er gebeurt als het systeem onder stress staat. Zo kunnen testers zien of het systeem zichzelf kan herstellen en of het de gebruikers met de juiste foutmeldingen informeert.
3. Belastingsproeven
Belastingtesten zijn een soort testen die beoordelen hoe goed software zich gedraagt onder zowel normale omstandigheden als bij zwaardere belasting. Het wordt gebruikt om te bepalen hoeveel de software tegelijkertijd kan verwerken zonder dat de prestaties negatief worden beïnvloed.
Loadtests kunnen worden gebruikt om te testen hoe applicaties werken wanneer veel gebruikers ze tegelijk gebruiken of wanneer gebruikers veel gegevens tegelijk proberen te downloaden.
Load testing is belangrijk als u wilt controleren of uw software schaalbaar is.
4. Veiligheidstests
Beveiligingstests evalueren softwaretoepassingen en zoeken naar kwetsbaarheden in de beveiliging van de software. Daartoe behoren potentiële beveiligingsrisico’s die kunnen leiden tot gegevensverlies of inbreuken waarbij vertrouwelijke gegevens worden blootgelegd.
Beveiligingstests zijn belangrijk omdat ze ervoor zorgen dat het product voldoende beschermd is tegen hacken, datalekken en andere externe veiligheidsbedreigingen.
Enkele voorbeelden van beveiligingstests die testers kunnen uitvoeren zijn beveiligingsaudits, ethisch hacken, penetratietests, beveiligingsscans en houdingsbeoordelingen.
5. Upgrade- en installatietests
Upgrade- en installatietests zijn een soort niet-functionele softwaretests die nagaan hoe goed de software werkt op verschillende machines.
Het doel van dit soort tests is ervoor te zorgen dat nieuwe gebruikers de software gemakkelijk op hun machines kunnen installeren en dat bestaande gebruikers de software kunnen upgraden wanneer er nieuwe upgrades worden uitgebracht.
Upgrade- en installatietests zijn belangrijk omdat eindgebruikers uw product gemakkelijk moeten kunnen installeren, op voorwaarde dat ze werken met een machine die ermee compatibel is.
6. Volumetests
Volume testing is een type test dat bestaat om na te gaan wat er gebeurt wanneer grote hoeveelheden gegevens in één keer aan de database worden toegevoegd. Hiermee wordt vastgesteld of de toepassing grote hoeveelheden gegevens aankan en wat er met het systeem gebeurt als dat niet het geval is.
Volume testing is ook bekend als flood testing, en u kunt het gebruiken om gegevensverlies en foutmeldingen te beoordelen die optreden bij het toevoegen van grote hoeveelheden gegevens aan het systeem.
Volume tests zijn de enige manier om ervoor te zorgen dat software de hoeveelheden gegevens aankan die gebruikers ervan verwachten.
7. Terugvorderingstests
Bij hersteltests wordt het softwaresysteem gedwongen te falen om te testen hoe goed het systeem zichzelf herstelt na een crash.
Recovery testing kan testers helpen begrijpen hoe software gegevens herstelt en verlies voorkomt als de hardware tijdens gebruik wordt losgekoppeld, als de software tijdens een gegevensoverdracht wordt losgekoppeld van het netwerk, of als u het systeem onverwacht opnieuw opstart.
Dit soort tests is belangrijk omdat systemen zonder goede herstelprotocollen bij dergelijke ongelukken ernstig gegevensverlies kunnen lijden.
Wat je nodig hebt om te beginnen met niet-functioneel testen
Voordat u begint met niet-functioneel testen, moet u ervoor zorgen dat u de testomgeving hebt voorbereid en de benodigde hulpmiddelen en gegevens hebt verzameld.
1. Testplan
Voordat u begint met niet-functioneel testen, moet u ervoor zorgen dat u een afgerond testplan hebt dat door de juiste mensen is afgetekend.
Je testplan moet alle relevante details bevatten van wat je gaat testen en hoe. Het moet uitleggen wanneer u handmatig gaat testen en wanneer u geautomatiseerd gaat testen, en de rollen en verantwoordelijkheden aangeven van iedereen die bij het testproces betrokken is.
2. Testgevallen
Voordat u niet-functionele tests kunt uitvoeren, moet u testgevallen maken. Elk testgeval schetst een specifiek ding dat je gaat testen, legt uit hoe je het gaat testen, en beschrijft het verwachte resultaat van de test.
Als u bijvoorbeeld loadtests uitvoert, kan een voorbeeldtestcase zijn om te testen hoe de software zich gedraagt wanneer tien gebruikers tegelijkertijd dezelfde module gebruiken.
3. Functionele verificatie
Je kunt softwarecomponenten niet functioneel testen als ze niet functioneel zijn.
Als u bijvoorbeeld wilt testen hoeveel gebruikers tegelijkertijd in de software kunnen inloggen, is het belangrijk om eerst te controleren of individuele gebruikers daadwerkelijk kunnen inloggen.
Voordat u met niet-functionele tests begint, moet u ervoor zorgen dat al uw functionele tests zijn geslaagd en dat uw software functioneert zoals u verwacht.
Dit betekent meestal dat rooktests, saniteitstests, eenheidstests, integratietests en functionele systeemtests al zijn uitgevoerd.
4. Testinstrumenten
Voordat u begint met niet-functioneel testen, verzamelt u alle testhulpmiddelen die u wilt gebruiken om uw tests uit te voeren.
Of u nu automatiseringstools gebruikt om gedeeltelijk sommige van uw tests automatiseren of documentatiehulpmiddelen om u te helpen testrapporten te beheren en op te slaan voor later gebruik, zorg ervoor dat de hulpmiddelen die u wilt gebruiken beschikbaar en gebruiksklaar zijn, en dat iedereen in het testteam weet hoe elk hulpmiddel goed te gebruiken.
5. Testomgeving
Richt de testomgeving in voordat u begint met niet-functioneel testen. Misschien heeft u al een geschikte testomgeving, vooral als u dezelfde omgeving kunt gebruiken voor niet-functionele systeemtests en functionele systeemtests.
Met de ideale testomgeving kunt u elk element dat u nodig hebt op de juiste apparaten testen.
Als u bijvoorbeeld volumeverwerking op smartphoneapparaten test, is het beter om dit te testen op een echt smartphoneapparaat dan te proberen een mobiele omgeving na te bootsen op een desktopcomputer.
Het niet-functionele testproces
Het testen van niet-functionele aspecten van een softwarebouwwerk is een proces in meerdere stappen, waarbij de testomgeving wordt voorbereid, testgevallen worden gemaakt, testgegevens worden verzameld en niet-functionele tests worden uitgevoerd.
Het is mogelijk om het testproces op te splitsen in kleine brokjes om het gemakkelijker te maken voor beginners in niet-functioneel testen.
1. Niet-functionele test gereedheidscontroles
Voordat u kunt beginnen met niet-functioneel testen, is het belangrijk om na te gaan of u klaar bent voor deze testfase.
Dit kan betekenen dat de afsluitingscriteria voor de laatste testfase worden beoordeeld om er zeker van te zijn dat de software deze heeft doorstaan en dat de software alle vereiste functionele tests heeft doorstaan voordat de niet-functionele tests plaatsvinden.
Sommige teams kunnen ingangscriteria voor niet-functioneel testen opstellen, die alle voorwaarden omvatten waaraan moet zijn voldaan voordat het niet-functioneel testen begint.
2. Maak een testplan
U hebt deze stap wellicht al eerder uitgevoerd als u niet-functionele tests uitvoert als onderdeel van systeemtests en uw systeemtestplan volgt. Een testplan schetst alle tests die u moet uitvoeren en hoe u van plan bent ze uit te voeren.
Zonder een duidelijk testplan is het gemakkelijk om de reikwijdte en de doelstellingen van de uit te voeren tests uit het oog te verliezen.
3. Testgevallen creëren
De volgende fase van niet-functioneel testen is het maken van testgevallen die ontworpen zijn om elke niet-functionele parameter van de software te testen.
Elk testgeval moet een testgeval-ID hebben, een testgevalnaam, een beschrijving, en details van het verwachte resultaat van de test, alsmede eventuele pass of fail criteria die vooraf zijn bepaald. Dit helpt testers te begrijpen hoe zij elke test moeten uitvoeren en op welke resultaten zij moeten letten.
4. Testgegevens verzamelen
Voordat u elk testgeval kunt uitvoeren, moet u de testgegevens verzamelen die u voor elk testgeval zult gebruiken.
Dit betekent meestal het verzamelen van code en gegevens van verschillende modules en onderdelen die de functies en gebieden vormen die u gaat testen. Als u de testdekking maximaliseert, moet u veel testgegevens hebben om mee te werken.
5. Maak de testomgeving gereed
De volgende fase van niet-functioneel testen is het gereedmaken van de testomgeving. De testomgeving is een testserver die u zult gebruiken om allerlei soorten softwaretests uit te voeren.
Hiermee kunt u identieke omstandigheden creëren om uw software te testen en uw software instellen met verschillende configuraties voor configuratietests, beveiligingstests en andere soorten niet-functionele tests.
6. Niet-functionele tests uitvoeren
Zodra de testomgeving klaar is, is het tijd om niet-functionele tests uit te voeren. U kunt besluiten tests uit te voeren in volgorde van type, bijvoorbeeld beginnend met prestatietests voordat u overgaat tot beveiligingstests en andere soorten niet-functionele tests.
Noteer de resultaten van elke test in uw testverslag. Als u tests automatiseert, zal uw automatiseringsprogramma ook een gestandaardiseerde manier hebben om de resultaten duidelijk en ondubbelzinnig te rapporteren.
7. Testresultaten rapporteren
Na het uitvoeren van elke testcase compileert u de resultaten van uw niet-functionele tests in één rapport.
Dit verslag moet duidelijk zijn over de resultaten van elke test en ondubbelzinnig aangeven of elke test geslaagd of mislukt is.
Volg een gestandaardiseerde structuur voor je testrapport om er zeker van te zijn dat alle informatie die je moet doorgeven erin staat.
8. Gebreken verhelpen
Zodra de testresultaten binnen zijn, geeft u de software terug aan de ontwikkelaars als de tests zijn mislukt of als u niet-functionele bugs hebt geïdentificeerd die moeten worden opgelost.
Als de software bijvoorbeeld niet een geschikt aantal gebruikers tegelijk aankan of als de prestaties te veel vertragen als er meerdere programma’s tegelijk draaien, moeten deze problemen waarschijnlijk in de code worden opgelost om ervoor te zorgen dat de gebruikers tevreden zijn met het product.
9. Testcyclus herhalen
Zodra de ontwikkelaars de in de eerste niet-functionele testfase gevonden gebreken hebben hersteld, kan de testcyclus opnieuw beginnen.
Ontwikkelaars zullen de wijzigingen die ze maken sanity testen en de nieuwe build teruggeven aan QA testers, die dan het volledige testpakket zullen uitvoeren, beginnend met smoke testing, unit testing, integratie testing en tenslotte systeem testing.
De testcyclus wordt herhaald totdat er op geen enkel punt bugs of defecten optreden, waarna de build de laatste fase van het testen kan ingaan: de gebruikersacceptatietests.
Testgevallen voor niet-functioneel testen
Testgevallen zijn een belangrijk aspect van alle softwaretests, en wanneer u zowel functionele als niet-functionele tests uitvoert, gebruikt u testgevallen om te definiëren wat u gaat testen en hoe u dat gaat doen.
Elk testgeval kan worden gezien als een mini-test, en elk testgeval heeft zijn eigen gedefinieerde outputs en resultaten.
1. Wat zijn testgevallen voor niet-functioneel testen?
Een testgeval is een reeks acties die op een softwarebouwwerk worden uitgevoerd om te testen of het voldoet aan de in het softwareplan gedefinieerde voorwaarden. Elke testcase vertelt testers effectief wat ze moeten testen en hoe, en is ontworpen om een specifieke functie of niet-functionele eigenschap van de softwareapplicatie te testen.
Niet-functionele testcases zijn bijvoorbeeld het testen wat er gebeurt als iemand probeert toegang te krijgen tot beveiligde gegevens binnen het systeem of het testen hoe snel de software laadt bij het opstarten.
2. Hoe ontwerp je niet-functionele testgevallen?
Wanneer u testgevallen ontwerpt voor niet-functionele tests, is het belangrijk om standaard testgevalpraktijken te volgen en tegelijkertijd de doelstellingen van uw niet-functionele tests in gedachten te houden.
Volg de onderstaande stappen om testgevallen voor niet-functioneel testen te schrijven die duidelijk aangeven wat uw testers moeten doen om elke test uit te voeren.
1. Bepaal het gebied dat u wilt bestrijken
Bedenk voor elke testcase welk deel van uw software deze testcase zal bestrijken.
Als u bijvoorbeeld testgevallen schrijft voor het testen van installaties en upgrades, kunt u testgevallen opnemen die beoordelen hoe gemakkelijk de applicatie op verschillende apparaten kan worden geïnstalleerd en hoe lang het duurt om de software te upgraden met een nieuwe patch.
2. Maak een uniek testgeval ID
Elk testgeval moet een uniek testgeval-ID hebben. Dit maakt het gemakkelijk om later de beschrijving en de resultaten van het testgeval terug te vinden en voorkomt verwarring over welk testgeval u bedoelt als twee testgevallen vergelijkbare namen of beschrijvingen hebben.
3. Noem en beschrijf elke test
Terwijl de testcase-ID de test identificeert, zult u ook een naam en een beschrijving willen geven aan elke testcase die u schrijft.
Het moet een eenvoudige naam zijn die samenvat wat u test, terwijl de beschrijving een enkele zin is die daar iets gedetailleerder op ingaat.
De beschrijving moet duidelijk genoeg zijn zodat de testers weten wat ze moeten testen en hoe ze dat moeten doen, en ook aan welke bijzondere voorwaarden de test moet voldoen.
4. Specificeer het verwachte resultaat
Schets voor elke testcase het resultaat dat zou moeten optreden als de software werkt zoals verwacht.
Bij niet-functionele tests, zoals prestatietests en belastingstests, kan dit in veel gevallen betekenen dat de software gewoon normaal blijft werken zonder te vertragen, achter te blijven of te crashen.
In andere gevallen kan het betekenen dat bepaalde foutmeldingen optreden om de gebruiker op de hoogte te stellen van het probleem en een oplossing aan te bevelen.
5. Testtechnieken aanbevelen
Beveel voor elke testcase het soort testtechnieken en niet-functionele testinstrumenten aan die de tester volgens u tijdens het testen zou moeten gebruiken.
Bij niet-functioneel testen kunnen testers zeer verschillende benaderingen gebruiken voor verschillende soorten testen.
Zo kan voor belastingtests en stresstests automatisering nodig zijn omdat het onpraktisch is extreem zwaar verkeer handmatig te simuleren, terwijl andere soorten tests gemakkelijker kunnen worden uitgevoerd zonder specifieke hulpmiddelen of technologieën.
6. Laat elk testgeval beoordelen door vakgenoten
Voordat u tekent voor elk testgeval, laat u elk geval beoordelen door iemand met wie u samenwerkt. Dit kan een andere tester of een QA lead zijn.
Peer-reviewing testcases zorgen ervoor dat ze duidelijk genoeg zijn om te worden gevolgd door een derde tester en geen onduidelijkheden of fouten bevatten die kunnen leiden tot verkeerd testen.
3. Voorbeelden van niet-functionele testgevallen
Als u testgevallen schrijft voor niet-functioneel testen, kunnen ze er ongeveer uitzien als de onderstaande voorbeelden van niet-functioneel testen.
Voorbeeld van schaalbaarheidstests
Testgeval ID: 6671
Naam testcase: Inlogtest voor meerdere gebruikers
Beschrijving: Emuleer 20+ gebruikers die tegelijkertijd inloggen op de software met behulp van automatiseringstools.
Verwachte resultaten: De software zou voor elke gebruiker normaal moeten werken, zodat elke gebruiker in minder dan 5 seconden succesvol kan inloggen.
Voorbeeld van compatibiliteitstests
Testgeval ID: 5214
Naam testcase: Het laden van de applicatie in de Opera-browser
Beschrijving: Laad de toepassing in de Opera webbrowser.
Verwachte resultaten: De applicatie laadt als normaal in de Opera webbrowser met standaard schermresolutie en lay-out.
Handmatige of geautomatiseerde niet-functionele tests?
Bij de keuze tussen verschillende niet-functionele testtechnieken moet u beslissen of u handmatige of geautomatiseerde niet-functionele tests wilt uitvoeren.
Handmatige tests worden uitgevoerd door menselijke testers, wat betekent dat ze meestal meer tijd in beslag nemen, maar ze bieden ook mogelijkheden voor verkennende tests.
Geautomatiseerde niet-functionele tests zijn sneller en in sommige opzichten betrouwbaarder, maar ze vereisen ook meer middelen of hulpmiddelen. Automatisering en hyperautomatisering worden steeds populairder bij het testen, vooral als het gaat om niet-functioneel testen.
Handmatig niet-functioneel testen: Voordelen, uitdagingen en processen
Handmatige niet-functionele tests worden uitsluitend uitgevoerd door testers, die elk afzonderlijk niet-functioneel element onafhankelijk testen.
Bij het handmatig uitvoeren van niet-functionele tests moeten testers informatie over de software verzamelen, individuele testgevallen creëren die overeenkomen met het testplan, en die testgevallen handmatig uitvoeren.
Dit kost veel tijd, maar het betekent ook dat QA-testers de vrijheid hebben om te bepalen wat er wordt getest en hoe.
1. Enkele voordelen van handmatig testen zijn:
Handmatig testen kan goedkoper zijn dan geautomatiseerd testen, omdat het geen specifieke technologieën of technische kennis vereist.
Handmatig testen stelt testers in staat om menselijk inzicht en subjectiviteit te bieden in hoe de software functioneert en of deze naar tevredenheid functioneert.
Handmatige tests kunnen worden gebruikt om systeemtests uit te voeren in scenario’s waar automatisering onmogelijk is.
Handmatig testen stelt testers in staat de visuele aspecten van het systeem te beoordelen, zoals de grafische interface en andere factoren die de bruikbaarheid kunnen beïnvloeden.
Handmatig testen biedt testers een breder perspectief van het systeem als geheel en hoe verschillende modules en componenten samenwerken.
Aan handmatig testen kleven echter ook nadelen.
2. Enkele van de uitdagingen van handmatig testen zijn:
Sommige soorten niet-functionele tests, waaronder belasting- en prestatietests, zijn onpraktisch om handmatig uit te voeren.
Handmatig testen kost aanzienlijk meer tijd dan geautomatiseerd niet-functioneel testen
Handmatige testers kunnen worden afgeleid, hun aandacht verliezen en fouten maken, vooral bij zeer repetitieve testtaken.
Geautomatiseerd niet-functioneel testen: Voordelen, uitdagingen en processen
Geautomatiseerde niet-functionele tests worden uitgevoerd door geautomatiseerde scripts en testtools. Wanneer geautomatiseerde testmethoden worden gebruikt, kunnen testers tests op de achtergrond uitvoeren terwijl ze andere taken uitvoeren, zodra de geautomatiseerde tests zijn gestart.
1. Enkele voordelen van het automatiseren van niet-functionele tests zijn:
1. Bespaar tijd en middelen door minder tijd te besteden aan langdurige, tijdrovende taken
2. Automatisering maakt het mogelijk de testdekking te vergroten door een groter aantal componenten en functies te bestrijken.
3. Het is haalbaarder om vaak geautomatiseerde tests uit te voeren omdat ze minder tijd kosten.
4. Geautomatiseerd testen is ideaal voor tijdrovende testtaken zoals belastingtests, volumetests en stresstests die zeer moeilijk handmatig uit te voeren zijn.
5. De kans op fouten bij geautomatiseerd testen is kleiner.
Er kleven echter ook enkele nadelen aan geautomatiseerd testen, waardoor het niet altijd de juiste aanpak is voor alle soorten niet-functioneel testen.
2. Enkele van de uitdagingen van geautomatiseerd niet-functioneel testen zijn:
1. Geautomatiseerd testen is duurder om op te zetten dan handmatig testen
2. Het opzetten van testautomatisering kan tijd en technische middelen kosten
3. Testautomatisering laat geen ruimte voor verkennende tests
4. Het automatiseren van tests vergt nog steeds tijd voor het maken van testgevallen
Conclusie: Handmatig of geautomatiseerd
niet-functioneel testen?
Bij de meeste soorten softwaretests biedt een combinatie van handmatig en geautomatiseerd testen meestal de beste resultaten. Hierdoor kunnen testteams profiteren van de efficiëntie, betrouwbaarheid en nauwkeurigheid van geautomatiseerd testen en tegelijkertijd verkennende tests uitvoeren waarmee testers software vanuit een subjectiever perspectief kunnen beoordelen.
Bij niet-functioneel testen zijn voor de meeste testteams zowel handmatige als geautomatiseerde tests vrijwel noodzakelijk.
Handmatige tests kunnen het best worden gebruikt om niet-functionele tests uit te voeren, zoals bruikbaarheidstests, terwijl geautomatiseerde tests meestal worden gebruikt om tests uit te voeren die te tijdrovend en te moeilijk zijn om handmatig uit te voeren, zoals stresstests of volumetests.
Niet-functioneel testen is een van de meest voor de hand liggende gebieden om testautomatiseringstechnieken te gebruiken, omdat het een kwantitatieve, meetbare vorm van testen is die niet om subjectieve resultaten vraagt.
Net als bij andere soorten tests worden niet-functionele tests meestal uitgevoerd met een combinatie van handmatige en geautomatiseerde tests.
Voor veel soorten niet-functionele tests is geautomatiseerd testen echter praktisch noodzakelijk, en de parameters en metrieken van niet-functionele tests maken dat automatisering voor dit soort tests geschikter is dan voor functionele tests.
Beste praktijken voor niet-functioneel testen
Wanneer u voor het eerst niet-functionele tests uitvoert, kan het volgen van testbest practices u helpen uw testproces te standaardiseren en de doeltreffendheid van uw tests te optimaliseren.
Best practices dienen als leidraad voor softwaretestteams die hun testprocessen willen verbeteren en zich willen aanpassen aan de industrienormen.
1. Gebruik automatiseringstools
Bij niet-functionele tests is het, meer dan bij andere soorten tests, belangrijk om automatiseringstools te gebruiken om bepaalde soorten tests te automatiseren, met name volumetests, stresstests en belastingstests.
Bij dit soort tests wordt meestal nagegaan hoe goed software werkt onder zware druk van gebruikers, gegevens en verkeer, wat zeer moeilijke omstandigheden kunnen zijn om handmatig na te bootsen.
Het automatiseren van dit soort niet-functionele tests zal niet alleen efficiënter maar ook nauwkeuriger zijn en de testers in staat stellen hogere belastingen en spanningen gemakkelijk na te bootsen.
2. Peer review van alle documentatie
Vraag collega’s binnen uw testteam niet alleen om testgevallen die u maakt te beoordelen, maar ook om bugrapporten, testrapporten, testplannen en andere vormen van formele documentatie die tijdens het testproces worden gemaakt te beoordelen.
Dit vermindert het risico van kleine fouten die ernstige vertragingen in het test- en ontwikkelingsproces kunnen veroorzaken.
3. Meetbare eisen vaststellen
Wanneer u de eisen van uw software definieert voordat het niet-functioneel testen begint, zorg er dan voor dat elke eis objectief en meetbaar is.
Dit maakt het voor testers gemakkelijker om tijdens het testen vast te stellen of de software aan deze eisen voldoet en laat geen ruimte voor interpretatie.
Wat telt als “snel” of “efficiënt”? Gebruik cijfers en kwantitatieve waarden om te definiëren wat u zoekt.
4. Overweeg zorgvuldig de testmetriek
Voordat u beslist welke metrieken u gaat gebruiken om de prestaties van uw software te meten, moet u nagaan wat de gebruikers van de software willen en welke metrieken daadwerkelijk aansluiten bij het softwareplan en de vereisten.
De meeste software moet snel en betrouwbaar zijn, maar naar welke andere maatstaven kijken uw gebruikers? Zijn er softwarespecifieke statistieken die u tijdens het testproces in aanmerking moet nemen?
Soorten output van een niet-functionele test
Wanneer u niet-functionele tests uitvoert, krijgt u verschillende soorten outputs van de tests die u uitvoert.
Deze zijn gewoonlijk heel anders dan de resultaten van functionele tests, die vaak duidelijker zijn, omdat functionele tests gewoon testen of een functie werkt zoals het hoort of niet.
Net als bij functioneel testen moeten testers voor elke testcase duidelijke verwachtingen stellen die het gemakkelijk maken om te bepalen of elke test slaagt of niet.
1. Absolute getallen
Bij het uitvoeren van prestatietests, stresstests en andere vormen van niet-functionele tests, zijn de outputs waar u het vaakst naar kijkt snelheden en andere absolute getallen.
Bij prestatietests wordt nagegaan hoe snel het systeem bepaalde taken kan uitvoeren, en dit wordt gemeten in seconden of milliseconden.
Als u belastingstests uitvoert, kunt u beoordelen hoeveel gegevens de software in één keer kan verwerken zonder te crashen of achter te blijven.
2. Foutmeldingen
Niet-functionele tests gaan ook na hoe het systeem werkt als er fouten optreden, zoals beveiligingsfouten, validatiefouten en configuratiefouten.
Het is belangrijk dat systemen nauwkeurige en duidelijke foutmeldingen weergeven wanneer zich fouten voordoen, zodat gebruikers stappen kunnen ondernemen om het probleem te corrigeren en de software te blijven gebruiken.
Tijdens beveiligingstests moeten ook foutmeldingen voorkomen dat gebruikers de ingebouwde beveiligingsfuncties van de software doorbreken.
3. Crashes
Crashen is een teken van systeemfalen, en geeft meestal aan dat het systeem niet kan presteren op het niveau dat u test en kan betekenen dat de test is geslaagd.
In sommige gevallen kan het systeem crashen en toch de testcase waaraan u werkt doorstaan, bijvoorbeeld als het systeem de vereiste hoeveelheid stress of verkeer doorstaat voordat het crasht.
Bij het uitvoeren van niet-functionele tests moeten testers verwachten dat het systeem regelmatig crasht, vooral wanneer het tot het uiterste wordt gedreven voor stresstests en andere prestatietests.
Voorbeelden van niet-functionele tests
Niet-functionele testvoorbeelden zijn vergelijkbaar met de voorbeelden hierboven voor niet-functionele testgevallen.
U kunt voorbeelden van niet-functionele tests bekijken om beter te begrijpen wat niet-functioneel testen is en wat het test binnen een softwareapplicatie.
1. Voorbeeld van een prestatietest
Als u werkt aan een mobiele toepassing die gebruikers verbindt met een online database, is het belangrijk dat een groot aantal gebruikers tegelijkertijd de gegevens uit deze database kan opvragen en downloaden.
Dit is ook een belangrijk onderdeel van schaalbaarheidstests, vooral als u het aantal gebruikers van de app in de toekomst wilt verhogen.
Vervolgens test u hoe het systeem reageert wanneer bijvoorbeeld 1000 gebruikers tegelijkertijd dezelfde database proberen te benaderen en stelt u eisen aan de snelheid waarmee de applicatie onder deze omstandigheid moet laden.
2. Compatibiliteitstests
Als u een nieuwe toepassing voor documentbeheer test, moet u nagaan of ze werkt op alle apparaten waarvoor ze bestemd is.
Dit betekent dat u test of u de toepassing kunt installeren en laden op alle meest recente versies van Windows, Mac en andere besturingssystemen (zoals Linux) waarmee u de software compatibel wilt hebben.
3. Veiligheidstests
Bij het testen van de beveiliging test u enkele manieren waarop mensen toegang kunnen krijgen tot vertrouwelijke gegevens of de beveiligingsmaatregelen van de software kunnen doorbreken, om te controleren of het systeem zich in die situaties gedraagt zoals u verwacht.
U kunt bijvoorbeeld inloggen als gebruiker en proberen toegang te krijgen tot bestanden waarvoor u geen veiligheidsmachtiging hebt, om er zeker van te zijn dat het systeem u geen toegang geeft tot deze bestanden.
Soorten ontdekte fouten en bugs
door niet-functionele tests
Niet-functionele tests kunnen veel bugs en defecten aan het licht brengen die niet zo gemakkelijk te vinden zijn als die welke bij functionele tests worden vastgesteld. Dat komt omdat niet-functionele tests vaak vereisen dat testers verschillende configuraties, opstellingen en combinaties van omstandigheden controleren om te beoordelen hoe goed het systeem presteert in een groot aantal verschillende omstandigheden.
1. Prestatiegebreken
Prestatiegebreken ontstaan wanneer het systeem functioneert, maar niet zo snel of efficiënt als u verwacht.
U kunt bijvoorbeeld merken dat het systeem onder bepaalde omstandigheden niet snel genoeg laadt of zelfs vastloopt als te veel gebruikers tegelijkertijd inloggen.
Prestatiegebreken weerhouden mensen er niet volledig van uw software te gebruiken, maar ze kunnen uw software wel minder bruikbaar maken en de kans verkleinen dat ze aan de eisen van de gebruiker voldoen.
2. Gebreken in de beveiliging
Beveiligingsfouten zijn fouten die de veiligheid van uw softwaresysteem en de daarin opgeslagen gegevens beïnvloeden.
Veiligheidsgebreken kunnen bijvoorbeeld ontstaan indien gebruikers toegang hebben tot vertrouwelijke gegevens waartoe zij geen toegang mogen hebben, indien bepaalde delen van de toepassing niet correct met een wachtwoord zijn beveiligd of indien de encryptie faalt.
Deze kunnen leiden tot veiligheidsinbreuken, die ernstige gevolgen kunnen hebben voor de reputatie van een software-uitgever.
3. Functionele gebreken
Hoewel niet-functionele tests niet bedoeld zijn om de functies van een softwareapplicatie te testen, kunnen niet-functionele tests in sommige gevallen functionele gebreken in de software aan het licht brengen.
Het doel van betrouwbaarheidstesten is bijvoorbeeld niet om te testen of de app functioneert, maar om te testen of de app betrouwbaar functioneert bij herhaalde pogingen.
Hieruit kan blijken dat sommige functies niet goed functioneren wanneer een actie wordt herhaald, en deze kunnen worden geclassificeerd als functionele fouten.
Gemeenschappelijke niet-functionele testmetrieken
Niet-functionele testmetrieken beschrijven die metrieken waarmee de prestaties en de efficiëntie van het systeem worden gemeten.
Verschillende soorten niet-functionele tests berusten op verschillende maatstaven, en u kunt ervoor kiezen om verschillende maatstaven te gebruiken, afhankelijk van de uiteindelijke doelstellingen van het project.
1. Tijd
Metriek van tijd meet hoe lang het duurt om bepaalde taken uit te voeren of hoe lang gebruikers moeten wachten tot functies geladen zijn.
Enkele voorbeelden van tijdmetingen zijn het aantal transacties of downloads dat een toepassing binnen een bepaald tijdsbestek kan verrichten, de reactietijden van verschillende functies, en de tijd die de toepassing nodig heeft om een bepaalde bewerking te voltooien.
Verschillende soorten tests meten de resultaten in seconden of als een weergave van het aantal bewerkingen per seconde.
2. Ruimte
Ruimte is een andere belangrijke maatstaf bij niet-functionele tests. Ruimtemetingen kunnen testen hoeveel CPU-ruimte het systeem nodig heeft of hoeveel ruimte op de harde schijf de software inneemt zodra deze volledig is geïnstalleerd.
Enkele voorbeelden van ruimtegegevens zijn cachegeheugen, hoofdgeheugen en hulpgeheugen.
Software die een grote hoeveelheid ruimte nodig heeft om goed te draaien, kan geschikt zijn voor een kleiner aantal klanten.
3. Bruikbaarheid
Sommige maatstaven bij niet-functionele tests houden rekening met de bruikbaarheid van het systeem, bijvoorbeeld hoe lang het duurt om gebruikers te leren het systeem goed te gebruiken, hoeveel keuzes gebruikers moeten doorlopen om belangrijke functies uit te voeren, of hoeveel muisklikken er nodig zijn om bepaalde taken uit te voeren.
Niet-functionele tests kunnen elk van deze parameters kwantitatief meten, waarbij lagere cijfers doorgaans een hoger niveau van bruikbaarheid inhouden.
4. Betrouwbaarheid
Een andere belangrijke maatstaf bij niet-functionele tests is betrouwbaarheid. Betrouwbaarheid is de waarschijnlijkheid dat het systeem zich keer op keer op dezelfde manier gedraagt of gedurende een lange periode naar behoren functioneert.
Enkele voorbeelden van metrieken die worden gebruikt om de betrouwbaarheid te meten zijn de gemiddelde tijd tot falen, het faalpercentage, de beschikbaarheid en de waarschijnlijkheid van stilstand.
Elk van deze metrieken helpt testers te verifiëren of het systeem lange tijd kan draaien zonder storingen of crashes.
5. Robuustheid
Robuustheid is de maatstaf voor hoe goed het systeem omgaat met storingen en hoe goed het systeem zichzelf kan herstellen in geval van storing.
Enkele voorbeelden van metrieken die de robuustheid meten zijn de tijd die het systeem nodig heeft om zichzelf te herstellen na een storing, het percentage incidenten dat leidt tot een catastrofale storing, en de kans dat gegevensbestanden beschadigd raken nadat het systeem uitvalt.
Dit zijn belangrijke statistieken omdat gebruikers verwachten dat systemen soms uitvallen zonder dat alle gegevens verloren gaan of bestanden beschadigd raken.
6. Draagbaarheid
De portabiliteit meet hoe gemakkelijk de software kan worden overgezet naar verschillende systemen of verplaatst naar een nieuwe locatie binnen een netwerk.
Enkele voorbeelden van metrieken die de portabiliteit meten zijn het percentage niet-portabele code en het aantal systemen waarop de software kan draaien.
Idealiter is software die op veel verschillende systemen kan draaien draagbaarder en dus handiger voor gebruik in omgevingen waar vaak moet worden overgeschakeld of verhuisd.
Strategieën voor het uitvoeren van niet-functionele tests
Wanneer u begint met niet-functioneel testen, is het belangrijk om deze testfase te benaderen met een strategie in gedachten. QA leads en software test managers moeten nadenken over de risico’s van het testen, de middelen die ze tot hun beschikking hebben en het doel van het testen voordat het niet-functioneel testen begint.
Het ontwikkelen van een strategie kan u helpen om uw niet-functionele tests vanaf het begin te optimaliseren.
1. Rollen en verantwoordelijkheden toewijzen
Voordat u begint met niet-functioneel testen, moet u rollen en verantwoordelijkheden toewijzen aan de belangrijkste leden van het testteam. Dit maakt het gemakkelijker om de werklast van niet-functioneel testen te beheren en ervoor te zorgen dat ervaren testers verantwoordelijk zijn voor het handhaven van de kwaliteit en effectiviteit van de tests die u uitvoert.
Zorg ervoor dat de mensen die u kiest voor deze functies over de nodige kennis en ervaring beschikken om de taken uit te voeren die u van hen verwacht, vooral als die taken technische vaardigheden vereisen.
2. Verzamel relevante testinstrumenten
Verzamel alle technologieën en hulpmiddelen die u wilt gebruiken om niet-functionele tests uit te voeren. Zorg ervoor dat al uw medewerkers weten hoe ze deze effectief moeten gebruiken, en geef waar nodig opleiding om lacunes in hun vaardigheden op te vullen.
Door ervoor te zorgen dat iedereen weet welke testtools moeten worden gebruikt en hoe ze moeten worden gebruikt voordat het niet-functioneel testen begint, wordt het risico verkleind dat tests moeten worden onderbroken of opnieuw moeten worden uitgevoerd omdat men onvoldoende kennis heeft.
3. Prioriteit geven aan testen
Voordat u begint met niet-functioneel testen, maakt u een lijst van alle aspecten van het systeem die u moet testen en prioriteert u ze op basis van urgentie en belang.
U kunt niet-functionele tests prioriteren op basis van het risiconiveau van elk aspect van het systeem dat u test.
Er kunnen bijvoorbeeld basale beveiligingstests plaatsvinden omdat adequate beveiliging in moderne software als uiterst belangrijk wordt beschouwd. Hoe eerder u defecten met een hoog risico opspoort, hoe kleiner de potentiële impact van die defecten op andere aspecten van het systeem kan zijn.
7 beste tools voor niet-functioneel testen
Niet-functionele testtools kunnen het testproces stroomlijnen, het gemakkelijker en kosteneffectiever maken om tests te automatiseren en QA-leiders helpen het test- en documentatieproces te beheren.
Er zijn veel gratis niet-functionele testprogramma’s online beschikbaar, maar ook enkele programma’s waarvoor u een maandelijkse bijdrage kunt betalen.
1. ZAPTEST GRATIS editie
ZAPTEST is een populair software testprogramma waarmee gebruikers snel en eenvoudig zowel functionele als niet-functionele softwaretests kunnen uitvoeren. U kunt ZAPTEST gebruiken om softwaretests te automatiseren en RPA-technologie gebruiken om verschillende functies en omstandigheden in niet-functionele tests na te bootsen.
De ZAPTEST FREE edition is slechts een afgeslankte versie van de enterprise edition, en biedt veel van dezelfde functionaliteiten op een kleinere schaal. U kunt ondersteuning zoeken op het ZAPTEST-forum en prestatietests uitvoeren met een onbeperkt aantal virtuele gebruikers.
2. Appium
Appium is een gratis softwaretestprogramma dat het meest geschikt is voor het testen van mobiele toepassingen op verschillende platforms, waaronder iOS- en Android-toestellen. Appium biedt gebruikers veel flexibiliteit om hun eigen testkaders en -strategieën te bedenken en tegelijkertijd te profiteren van de automatiseringsmogelijkheden die Appium biedt.
3. Loadium
Loadium is een niet-functionele testtool die het best kan worden gebruikt om prestatietests en belastingstests uit te voeren, twee soorten niet-functionele tests die veel gemakkelijker kunnen worden uitgevoerd met behulp van automatiseringstools.
Loadium stelt gebruikers in staat om grootschalige belastingstests uit te voeren en biedt oplossingen op maat, zodat u uw tests kunt afstemmen op uw softwaredoelstellingen.
U kunt Loadium gratis proberen of betalen om de volledige versie van de applicatie te downloaden.
4. Obkio
Obkio is een software test tool die QA leads en test managers helpt bij het prioriteren en categoriseren van issues op basis van hoe ernstig ze zijn. Obkio kan problemen detecteren voordat gebruikers dat doen, biedt gebruikers slimme meldingen en kan helpen detecteren waar het probleem zit.
Obkio is niet alleen voor niet-functioneel testen, maar het is een zeer nuttig gratis testhulpmiddel dat in alle stadia van de testlevenscyclus kan worden ingezet.
5. SonarQube
SonarQube is een open-source security testing tool die automatisch code kan analyseren om bugs en kwetsbaarheden op te sporen. SonarQube is geschreven in Java en kan worden gebruikt voor het analyseren van code in meer dan twintig verschillende programmeertalen. De overzichtelijke interface van het systeem maakt het gemakkelijk om problemen op te sporen die in de toekomst beveiligingsproblemen kunnen veroorzaken.
6. Tsung
Tsung is een andere niet-functionele testtool die ideaal is als u belasting- en stresstests wilt automatiseren, maar niet overweg kunt met de gratis versie van Loadium.
Tsung is een open-source tool waarmee gebruikers grootschalige belastingstests kunnen uitvoeren op meerdere protocollen en servers, waaronder HTTP en SOAP.
Tsung is volledig gratis en kan testers helpen ervoor te zorgen dat de software waaraan ze werken hoge prestaties levert onder uiteenlopende uitdagende omstandigheden.
7. Sikuli
Sikuli is een andere toepassing die robotic process automation gebruikt om het testproces te automatiseren. De applicatie kan alles automatiseren wat op het scherm te zien is. U kunt Sikuli gebruiken om niet-webgebaseerde toepassingen te testen en bugs snel te reproduceren.
Checklist, tips en trucs voor niet-functioneel testen
Voordat u begint met niet-functioneel testen, moet u controleren of u alles hebt wat u nodig hebt om grondige niet-functionele tests uit te voeren in een voorbereide omgeving.
Volg onderstaande checklist voor tips en trucs voordat u begint met niet-functioneel testen.
1. Werken volgens een schema
Of u het nu opneemt in uw testplan of er een apart document voor maakt, structureer uw softwaretests rond een testschema.
Als u meer bugs en defecten vindt dan u verwacht, kunt u soms van het schema afwijken, maar het hebben van een schema om mee te beginnen kan helpen om testers te sturen en te motiveren om efficiënt te werken, vooral bij het uitvoeren van tijdrovende handmatige tests.
2. Identificeer uw testteam
Door verantwoordelijkheden te delegeren en leden van uw testteam officiële rollen en titels te geven, kunt u ervoor zorgen dat het testproces soepel verloopt.
Communiceer duidelijk de rollen en verantwoordelijkheden binnen uw team voordat het testen begint, en wijs verschillende testers de verantwoordelijkheid toe voor verschillende aspecten van niet-functioneel testen, zodat iedereen verantwoordelijk wordt gehouden voor zijn eigen taken.
3. Tools en technologieën selecteren alvorens te testen
Als u pas besluit om met bepaalde hulpmiddelen en technologie te werken nadat u bent begonnen met niet-functioneel testen, kan dit het testproces vertragen en verwarring veroorzaken bij de testers.
Doe in plaats daarvan vooraf onderzoek en beslis of er hulpmiddelen zijn die u wilt gebruiken voordat het testen begint. Dit maakt het gemakkelijk om deze hulpmiddelen in het testplan op te nemen en uw testers te trainen in het gebruik ervan voordat het testen begint.
4. Verkrijg altijd formele goedkeuring voor tests en documentatie
Testen is een kwaliteitsborgingsproces, en de beste manier om de waarde van de tests die u uitvoert te maximaliseren is om ook een basis QA uit te voeren op de tests die u plant en uitvoert.
Introduceer eenvoudige protocollen die vereisen dat testers QA leads en managers vragen om testplannen en testrapporten te beoordelen en af te tekenen voordat ze naar de volgende fase gaan.
Dit vergroot enorm de kans dat testfouten in een vroeg stadium worden ontdekt en hersteld.
7 fouten en valkuilen die u moet vermijden bij het uitvoeren van niet-functionele tests
Als je nieuw bent met niet-functioneel testen, kan het gemakkelijk zijn om een aantal veelgemaakte fouten te maken waar testers en QA-professionals vaak in vervallen.
Niet-functioneel testen is een complexe klus waarbij een softwarebouwwerk vanuit alle hoeken en perspectieven wordt bekeken.
Hieronder volgt een lijst van enkele van de meest voorkomende valkuilen die testers maken bij het uitvoeren van niet-functionele tests.
1. Niet plannen
Als je nieuw bent met niet-functioneel testen, denk je misschien dat je gewoon meteen in de testfase kunt duiken zonder vooraf een grondig testplan te maken.
Sommige testteams stellen soms onvolledige testdocumenten of oppervlakkige samenvattingen van het testplan op, waarin de acties die testers tijdens het niet-functioneel testen moeten ondernemen niet adequaat worden beschreven.
2. Verkeerd beheer van testen
Er kunnen problemen ontstaan als de tests in elk stadium van het testproces verkeerd worden beheerd. Inadequaat management kan betekenen dat testers niet de juiste middelen hebben om grondig te testen of dat testers niet voldoende tijd krijgen om elk aspect van de build te testen.
Testmanagers moeten kunnen leren van de fouten die zij maken en effectievere testplannen ontwikkelen voor de toekomst.
3. Slechte communicatie
Slechte communicatie kan veel problemen veroorzaken tijdens het testproces, met name bij niet-functioneel testen.
Dit kan slechte communicatie binnen het testteam betekenen of slechte communicatie tussen testers, ontwikkelaars en belanghebbenden.
Dit gebeurt vaak wanneer testers testdocumenten niet goed bijhouden of niet regelmatig communiceren met andere afdelingen tijdens het testproces.
4. Ontwikkelaars negeren
Testers en ontwikkelaars werken meestal vrij gescheiden van elkaar, maar testteams die nauw samenwerken met ontwikkelaars kunnen profiteren van extra kennis van hoe de software werkt en hoe verschillende modules op elkaar inwerken.
Door ontwikkelaars bij het testproces te betrekken of op belangrijke momenten feedback van ontwikkelaars te vragen, kunnen testteams efficiëntere en grondigere testplannen opstellen.
5. Doel van het testen
Veel testers denken nog steeds dat het doel van testen is om te controleren of de software werkt of om aan belanghebbenden en investeerders aan te tonen dat de software werkt.
In plaats daarvan moeten testers het testen benaderen met de houding dat het doel van testen het zoeken naar defecten is.
Testers die geen defecten vinden, kunnen alleen tevreden zijn dat de software die zij testen vrij is van bugs als zij ervan overtuigd zijn dat zij overal hebben gekeken waar defecten zouden kunnen worden gevonden.
6. Handmatige vs. automatiseringsfouten
Het is belangrijk om te overwegen of handmatig testen of geautomatiseerd testen beter is voor elk type test dat u uitvoert.
Geautomatiseerde testmethoden zijn uitermate geschikt voor bijna alle vormen van niet-functioneel testen, en testteams die gewend zijn aan functioneel testen kunnen de fout maken te veronderstellen dat ze niet-functionele functies net zo gemakkelijk handmatig kunnen testen.
7. Het gebruik van de verkeerde testinstrumenten
Het is gemakkelijk om de verkeerde testtools en -technologieën te kiezen voordat men begint met niet-functioneel testen, vooral als testteams gewend zijn om handmatig te testen en niet gewend zijn om testtools te gebruiken.
Onderzoek vooraf de niet-functionele testmethoden die u wilt gebruiken en kies softwaretools en automatiseringshulpmiddelen die voldoen aan de specifieke eisen van uw project.
Conclusie
Niet-functioneel testen is een essentiële stap in het testproces waarmee testers kunnen nagaan hoe goed een systeem presteert en in hoeverre het voldoet aan niet-functionele eisen zoals laadtijden, capaciteit en veiligheidswaarborgen.
Er zijn veel verschillende manieren om niet-functionele tests uit te voeren, maar de hedendaagse automatiseringstools maken het gemakkelijker om de testdekking en nauwkeurigheid te maximaliseren zonder de kwaliteit van uw resultaten in gevaar te brengen.
FAQ’s en hulpmiddelen
Als u meer wilt weten over niet-functioneel testen, zijn er online veel FAQ’s en hulpmiddelen beschikbaar.
Bekijk hieronder onze favoriete online bronnen voor niet-functioneel testen of lees de antwoorden op enkele van de meest gestelde vragen over niet-functioneel testen.
1. Beste cursussen over niet-functioneel testen
Er zijn veel cursussen online beschikbaar die u kunnen helpen uw kennis van niet-functionele testmethoden en -benaderingen uit te breiden.
Sommige van deze cursussen zijn gratis, andere bieden tegen betaling een certificaat of kwalificatie aan. Als u een geaccrediteerde cursus wilt volgen, kunt u uw werkgever vragen of hij u wil sponsoren en de kosten van het collegegeld wil dekken.
Enkele van de beste cursussen over niet-functioneel testen zijn:
- TSG: Niet-functionele training 2-daagse cursus
- Udemy: De Complete 2023 Software Testing Bootcamp
- Edx: Software Testing Professional Certificaat
- Educatief: Performance Test Automation 101
2. Wat zijn de top 5 interviewvragen over niet-functioneel testen?
Als je je voorbereidt op een sollicitatiegesprek om te gaan werken in het testen van software, kan je gesprekspartner je vragen stellen over niet-functioneel testen om er zeker van te zijn dat je begrijpt hoe deze essentiële fase van het testen van software werkt. Bereid je sollicitatiegesprek voor door van tevoren effectieve antwoorden op veelvoorkomende sollicitatievragen klaar te hebben.
Hoe kunnen de benaderingen en methoden die u gebruikt bij niet-functioneel testen verschillen van de benaderingen die u gebruikt bij functioneel testen?
Hoe verschilt niet-functioneel testen van functioneel testen?
Welke verschillende soorten niet-functioneel testen bestaan er?
Hoe prioriteer je functionele testen en testgevallen?
In welke fase van het testen van software wordt functioneel testen meestal uitgevoerd?
3. De beste YouTube-tutorials over niet-functioneel testen
Als u liever leert door video’s te bekijken, vindt u YouTube-tutorials over niet-functioneel testen wellicht een nuttige manier om meer te leren over dit type softwaretest.
Hieronder staan enkele van de beste YouTube-tutorials over het testen van software die momenteel beschikbaar zijn.
Wat is niet-functionele softwaretests? Een handleiding voor het testen van software
Software Testen Hulp: Niet-functioneel testen
Niet-functionele testen in software testen
Bezoek W3Schools
Functioneel en niet-functioneel testen
4. Hoe niet-functionele tests te onderhouden
Goed testonderhoud zorgt ervoor dat softwaretests kunnen worden herhaald zonder de kwaliteit van de testresultaten aan te tasten.
Door niet-functionele tests te onderhouden, kunt u ervoor zorgen dat de tests in elke fase van het ontwikkelingsproces adequaat zijn en dat uw tests altijd worden bijgewerkt in overeenstemming met de voortdurend veranderende code.
U kunt niet-functionele tests onderhouden door onze onderstaande tips te volgen.
Duidelijk communiceren binnen het testteam bij het maken van testgevallen en het schrijven van documentatie
Volg altijd de beste praktijken voor testontwerp
Testprotocollen in verschillende stadia van het testproces opnieuw evalueren.
Wijzigingen in je test bijwerken terwijl je bezig bent
Met toekomstige projecten rekening houden wanneer wijzigingen in de huidige tests worden aangebracht
5. Is niet-functioneel testen black box of white box testen?
Niet-functionele tests zijn een soort black box tests, wat betekent dat de testers zich niet bezighouden met de interne werking van het systeem, maar alleen met de externe output.
Dit in tegenstelling tot white box testing, waarbij de interne werking van het systeem wordt getest. Voorbeelden van white box testing zijn unit testing en integratietesten.
Functionele en niet-functionele eisen testen zijn voorbeelden van black box testing. Dit betekent dat testers geen geavanceerde technische vaardigheden of kennis van computerprogrammering nodig hebben om black box tests uit te voeren, noch hoeven zij te leren hoe zij de systemen die zij testen moeten implementeren.