Veel organisaties zijn zich bewust van de noodzaak om applicaties te testen voordat ze live gaan. Naast de functionele test bestaan er echter veel verschillende vormen van testen die regelmatig verward worden en die gedeeltelijk overlappen. Wat houden deze testen in en welke moet je kiezen om je software veilig in productie te brengen?
Het belang van performancetesten
De meeste bedrijven erkennen het belang van het controleren van de technische en functionele kwaliteit van een applicatie. Toch worden load- en performancetesten niet altijd uitgevoerd. Dat terwijl het verifiëren van niet-functionele vereisten, zoals de belastbaarheid en reactietijden, minstens zo belangrijk zijn als de functionele vereisten. Door te werken met ‘gestandaardiseerde’ omgevingen, standaardinstellingen of door verkeerde aannames te doen in de implementatiefase, ontstaan problemen en beperkingen die alleen met performancetesten kunnen worden aangetoond. Het is daarom noodzakelijk om niet alleen de functionele, maar ook de niet-functionele eisen te testen.
Creëer de juiste omgeving
Bij het testen van een applicatie is het – uiteraard – van belang om de juiste test op de juiste manier uit te voeren om resultaten te krijgen die daadwerkelijk de toekomstige situatie weergeven. In de meeste gevallen worden toepassingen echter gemaakt en getest in een omgeving die niet overeenkomt met de productie-omgeving. Er wordt immers een ontwikkelomgeving gecreëerd die de meest ideale situatie nabootst. In een productieomgeving kunnen conventies echter anders geïmplementeerd zijn. Ook kan de omgeving gebaseerd zijn op andere standaarden dan waarvoor de toepassing is ontworpen. Deze verschillen leiden vaak tot onverwacht gedrag, zowel op functioneel als niet-functioneel niveau . Dus nog voordat je kan bepalen welke performancetest je nodig hebt, moet je ervoor zorgen dat de testomgeving de werkelijke productieomgeving representeert.
End-to-end testen, integratietesten en systeemtesten
Na de ontwikkelfase worden alle betrokken softwarecomponenten met elkaar verbonden en als geheel getest met behulp van een integratietest. Tijdens de systeemtest die volgt, worden infrastructurele elementen toegevoegd: hardware, clustering, etc. In sommige gevallen is het nuttig om een end-to-end test (ook wel ketentest genoemd) uit te voeren om er zeker van te zijn dat de informatie op de juiste manier door meerdere applicaties heen stroomt.
Afhankelijk van de complexiteit en de risico’s moet een selectie van deze verschillende testen worden uitgevoerd. Hoe complexer het systeem is, hoe meer verschillende typen testen er nodig zijn om de kwaliteit van het geheel te kunnen garanderen. Als geen detailtesten worden uitgevoerd maar slechts één end-to-end test, dan is de kans groot dat alle functionele- en technische problemen tegelijk aan het licht komen en het testproces frustreren.
Loadtesten, stresstesten en performancetesten
De loadtest, de stresstest en de performancetest worden vaak door elkaar gehaald, maar ze vertegenwoordigen verschillende dingen.
- Bij een performancetest wordt de snelheid van de software gemeten: de reactietijden zoals deze door gebruikers of andere systemen worden ervaren. Denk aan de laadtijd van (web)pagina’s, gebruikersacties of batchprocessen. Een performancetest levert meestal een set reactietijden op, gemeten op een selectie van meest gebruikte of meest kritische acties. Ook een functionele test waarbij responstijden gemeten worden, gebaseerd op de activiteit van een enkele gebruiker, valt al in de categorie “performancetest”. Dit soort testen geeft vaak al een eerste beeld van de prestaties.
- Een test wordt een loadtest genoemd wanneer de responstijden worden gemeten terwijl een bepaalde belasting wordt uitgeoefend. Deze belasting kan bestaan uit kunstmatig gegenereerde (web)verzoeken of een batch gegevens die ingevoerd wordt in het systeem. Bij het genereren van verkeer is het belangrijk dat de werkelijke productiebelasting zo goed mogelijk wordt nagebootst. De verzoeken die tijdens een loadtest worden gedaan moeten gebaseerd zijn op metingen en schattingen van de huidige of verwachte productiesituatie. Deze voorbereiding zal resulteren in een set parameters waarmee de loadtest wordt geconfigureerd en testgegevens worden samengesteld.
- Een stresstest is in feite een normale loadtest, geïntensiveerd met een bepaalde factor. De belasting van de loadtest wordt geleidelijk verhoogd totdat het systeem verzadigd raakt en een grens bereikt. Deze test zal aantonen wat de maximale capaciteit van het systeem is.
Wat te kiezen?
Er zijn veel soorten tests om uit te kiezen en ze overlappen in sommige gevallen ook nog eens. Welke tests nodig zijn, hangt af van de risico’s die gelden voor specifieke toepassingen en situaties. Hoe complexer de situatie is, hoe meer risico’s gecumuleerd en getest moeten worden voordat een applicatie wordt ingezet in een productieomgeving. Een kleine configuratiefout kan ernstige beperkingen en downtime veroorzaken op de eerste productiedag. Bereid je dus goed voor met de juiste testen voor de applicatie live gaat.