Testen doe je meer dan eens op een dag, daar weet John van der Molen, onze testengineer, alles van. Het begint al bij de kinderen als ze naar school gaan. Je checkt visueel of hun kleren een beetje goed zitten en of hun haren gekamd zijn. Je checkt verbaal of ze hun tanden hebben gepoetst en naar het toilet zijn geweest. Er zijn ook dingen die je niet checkt, of niet elke keer checkt. Je kunt nu eenmaal niet altijd alles controleren, en bovendien: je moet je kinderen ook een keer loslaten. Het controleren van software is ook geen eenmalige inspanning. Je moet voortdurend zorgen dat je de kwaliteit van je systeem kunt waarborgen. In deze blog vertelt John over ons testproces.
Voortdurend in beweging
Of het nu gaat om het herstellen van fouten, om onderhoud en het doorvoeren van verbeteringen vanuit de ontwikkelaar, wetswijzigingen die om veranderingen vragen of om wensen van de klant, een goede applicatie ontwikkelt voortdurend. Zo werkt dat natuurlijk ook bij ons. Wij werken in iteraties van een week, en elke dinsdag demonstreren wij de wijzigingen, die kort daarop actief – kunnen – worden. Al die wijzigingen moeten goed getest worden. Hoe doen we dat?
1 Regressietesten
Allereerst moet bij elke wijziging getest worden of de software nog steeds doet wat het deed voor we iets aanpasten. De functionaliteiten die we niet hebben veranderd, moeten natuurlijk nog steeds hetzelfde werken. Dat testen we uitgebreid, deels handmatig, deels geautomatiseerd. Daar hebben we een aantal methodes voor.
- Automatische testen via de gebruikersinterface
Met onze testtool maken we scripts die het gedrag van een gebruiker nabootst. Denk aan het aanmelden van een student of het inschrijven voor een tentamen. Na elke wijziging laten we de tool al die scripts doorlopen. Als we dat handmatig zouden doen zou dat niet alleen veel te veel tijd kosten, het is ook foutgevoelig. Wij mensen doen dingen toch altijd weer net even anders, een tool werkt heel consequent steeds weer dezelfde reeks handelingen af.
- Unittesten
Daarnaast maken ontwikkelaars unittests, de technische testen. Als een ontwikkelaar een stuk code aanpast, bijv. om te zorgen dat er ergens een knop bijkomt, maakt hij of zij daar direct een unittest bij. Dat is een test die niet via de userinterface verloopt, maar direct in de code plaatsvindt. Zo wordt gekeken of de afzonderlijke stukjes code nog naar behoren werken.
- Handmatige regressietesten
Niet alles is in geautomatiseerde testen te vatten. Sommige dingen zijn sneller en makkelijker met de hand te testen. Denk bijvoorbeeld aan het kleurgebruik binnen een applicatie, of andere uiterlijkheden. Die zijn moeilijk door een tool te beoordelen, daar is toch echt het beoordelingsvermogen van een mens voor nodig.
2 Functionele testen
Naast het testen of de ongewijzigde onderdelen van een applicatie nog juist functioneren, wil je natuurlijk ook de nieuwe functionaliteiten testen. Omdat die nieuw zijn, kun je die niet aan een automatische test onderwerpen. Hiervoor is een handmatige test nodig. Eerst test ik de nieuwe functionaliteit. Ik bekijk de wereld uiteraard door een Progress-bril, dus het is belangrijk dat vervolgens een aantal gebruikers de nieuwe functionaliteit testen. Is de functionaliteit eenmaal geaccepteerd, dan wordt het testen daarvan natuurlijk onderdeel van de regressietest.
3 Datatesten
Dat de functionaliteiten van een applicatie goed moeten werken, ligt voor de hand. Maar ook de data in de applicatie moeten kloppen. Ook dat testen we met scriptjes. Je kunt immers niet altijd afdwingen dat een gebruiker de gevraagde data ook juist invoert. Door ’s nachts een testscript te draaien, kunnen we eventuele fouten opsporen. Die leveren we aan de klant terug zodat ze de fouten kunnen corrigeren.
Test goed en fout
Wat bij alle testen belangrijk is, is dat er een goed- en een foutsituatie wordt getest. Het ligt natuurlijk voor de hand om te testen of iets goed werkt door ermee te doen wat je ermee behoort te doen. Maar mensen maken ook fouten. Daarom is het belangrijk te controleren of iets ook nog functioneert als je er iets ‘fouts’ in probeert te stoppen. Wat gebeurt er als je in een numeriek veld letters probeert in te vullen? Wat doet het systeem als je een getal invoert dat hoger is dan geoorloofd? Ook in die gevallen moet de applicatie naar behoren blijven functioneren.
Testen is keuzes maken
Wat test je wel, hoe zwaar test je het en wat test je niet? Testen is keuzes maken. Je kunt immers niet alles testen. Wij testen risicogedreven, hoe hoger het risico hoe meer en zwaarder we testen.
Meer weten?
Wil je ook graag met ons aan de slag of mogen we in 10 minuten ons systeem aan je uitleggen? Bel of mail ons: 050 - 205 35 30 | info@progressonderwijs.nl.
Jan Batteram