Testing… 1… 2… (deel 3)

Tijd voor een nieuw blog in deze serie. In het vorige deel zoomde ik al even in op wat het nu precies is om een test te schrijven, en heb ik kort uitgelegd waar het woordenboek van een typische tester uit bestaat. Vandaag ga ik laten zien waar ik nu precies mee bezig ben. Benieuwd? Lees gauw verder.

Als het goed is, is alles wat je om je heen ziet vroeg of laat een keertje getest. Het scherm van je computer of telefoon waarop je dit blog leest is bijvoorbeeld gecontroleerd op of het niet te snel doorbrandt als je te lang hetzelfde beeld erop projecteert (om die reden is overigens ook de screensaver ontstaan), de lampen in je woonkamer zijn gecontroleerd op energieverbruik, branduren en duurzaamheid, er zijn tientallen commissies die het eten dat elke avond op je bord ligt tot in den treure onder de loep hebben genomen, enzovoorts. Vaak worden producten ook “gecertificeerd”, wat inhoudt dat getest is dat ze aan een bepaalde kwaliteitsstandaard voldoen. Vaak is dat een voorwaarde waarop een product in een bepaald land verkocht mag worden. Met andere woorden: testen is serious business.

Wat je tegenwoordig steeds vaker ziet is dat producten niet meer tot op het kleinste schroefje en moertje getest worden, maar dat fabrikanten vooral gebruik maken van allerlei standaardcomponenten die op de markt verkrijgbaar zijn. Een telefoonproducent als Samsung gaat bijvoorbeeld niet meer uitgebreid de schermen van zijn telefoons testen, maar koopt een kant-en-klaar scherm in bij leveranciers dat daar al uitgebreid getest is. Wat ze dan zelf alleen nog maar hoeven te testen is of alle componenten goed op elkaar aansluiten, en nog belangrijker: of de software goed werkt.

Software is echt overal. Tot een jaar of twintig geleden draaide software vooral nog op thuiscomputers en servers, tegenwoordig gaat die vlieger niet meer op – van je horloge tot je centrale verwarming: alles bevat tegenwoordig software. Misschien heb je ook wel eens gehoord van het internet of things: dat houdt in dat dingen met elkaar kunnen communiceren. Dus niet alleen je computer en je telefoon: maar ook je wekker en je koffiezetapparaat, zodat je ’s ochtends na het opstaan meteen een bakkie warme pleur hebt klaarstaan. En dat is nog maar het begin: straks hebben we allerlei sensoren in en op ons lichaam die 24 uur per dag onze gemoedstoestand kunnen analyseren. Nog een paar jaar, en dan begint je geluidsinstallatie thuis automatisch Adele af te spelen als je verdrietig thuiskomt. Of Marvin Gaye als je opgewonden bent. Het is maar net wat je wil. Het grappige is dat deze hersenspinsels een jaar of tien geleden werden weggelachen, maar dat er nu al heel serieus naar gekeken wordt. Zo is er in Amsterdam onlangs een concept gelanceerd voor een internet of things van allerlei zaken in het straatbeeld. Zo weten lantarenpalen straks van zichzelf of ze stuk zijn en geven ze dan automatisch een seintje aan de reparatiedienst. Ook weten diezelfde lantarenpalen van elkaar wanneer er verkeer aankomt en zullen ze automatisch uitgaan als er geen auto’s of fietsers in de buurt zijn. Kijk niet raar op als je over een jaar of vijf ’s nachts in je eentje over de snelweg rijdt door een lampengallerij die je de hele route volgt.

Allemaal top, deze ontwikkelingen, maar software heeft één groot probleem: bugs. Fysieke spullen hebben ook problemen – op den duur treedt er slijtage op en na verloop van tijd zijn ze niet meer bruikbaar, maar vaak zijn het materialen die al vele tientallen jaren bestaan en tot op het allerdiepste wetenschappelijke niveau getest zijn. Software heeft één groot voordeel: het slijt niet. Als het nu werkt, dan werkt het over dertig jaar nog precies hetzelfde – het is niet zo dat een eentje een keer wegslijt en een nulletje wordt. De levensduur van software is wel afhankelijk van het apparaat waar het op draait, maar als je de onderdelen goed zou onderhouden, zou software in theorie eeuwig kunnen blijven bestaan. De realiteit is anders. De reden hiervoor is dat het landschap van software voortdurend verandert. Software is maar zelden volledig autonoom: alles staat met alles in verbinding en praat voortdurend met elkaar. Beeld je ter vergelijking eens in dat je in een land woont waar de voertaal elke vijf jaar compleet verandert. Als je niet continu taalcursussen volgt, kun je na een aantal jaar niemand meer verstaan. Met software is het precies zo.

google1

google2 Google in 1998 en 2015

Vaak gaan die veranderingen heel geleidelijk: woordje voor woordje. Een prachtig voorbeeld is de voorpagina van Google. Mensen vinden Google zo goed omdat de pagina al sinds de oprichting in 1998 niet veranderd is. Het logo is nauwelijks gewijzigd, de pagina is mooi maagdelijk wit en er zijn nog altijd twee knoppen. Het is herkenbaar en vertrouwd. Maar is dat wel zo? Niets is minder waar – Google heeft in de loop der jaren letterlijk tienduizenden wijzigingen doorgevoerd in zijn startpagina. En die zijn vrijwel allemaal onzichtbaar, totdat je de oude pagina uit 1998 er nog eens bij pakt. Ineens blijkt er toch wel heel veel veranderd te zijn: zo vult Google je zinnetjes tegenwoordig automatisch aan, geeft het voorbeelden van zoekresultaten, en kan het resultaten onderverdelen in plaatjes, muziek, nieuws, video, etc. Dan heb ik het nog niet eens gehad over wijzigingen in het zoekalgoritme: Google is tegenwoordig zo intelligent dat alles je bijvoorbeeld zoekt op “nummers van Adele” je een automatisch overzicht krijgt van al haar werk. Het is dankzij Google dat je tegenwoordig plaatjes krijgt van “geile vrouwen in Werkendam” omdat ze precies weten waar je woont. Maar misschien ligt dat wel aan de websites die ik bezoek.

Terug naar het internet of things. Zoals ik hierboven al schreef zijn er tegenwoordig dus miljoenen objecten in onze nabijheid die volledig zonder menselijke hulp kunnen functioneren. Ook ik ben bezig met het testen van zo’n object. En dan heb ik het niet over zomaar een horloge, lantarenpaal of verkeerslicht. Wat ik mag doen is voor veel testers in de wereld de ultieme natte droom. Ik heb namelijk de eer om te mogen spelen met onderstaande machine:Maeslantkering%20-%20Foto%201280x640_tcm21-19633

That’s right: de Maeslantkering. Door Amerikaanse ingenieurs benoemd tot één van de zeven moderne wereldwonderen van de civiele techniek. De grootste robot op aarde. Wat hij dan wel precies doet? Het is het laatste puzzelstukje van het grootste dat Nederland ooit op technisch gebied gepresteerd heeft: de Deltawerken. De Maeslantkering is een zogenaamde stormvloedkering die ons land beschermt tegen opgestuwd zeewater tijdens noordwesterstormen. Hij ligt in de Nieuwe Waterweg ter hoogte van Hoek van Holland en is zelfs vanuit de ruimte zichtbaar. Dat is ook niet gek als je beseft dat hij uit twee grote draaiarmen bestaat die allebei even groot zijn als de Eiffeltoren. Dat is geen grapje: op de foto lijken ze misschien niet zo groot, maar als je erbij staat piep je wel anders.

In feite is de werking van de kering heel simpel: als er een keer een grote storm plaatsvindt, dan gaat de kering dicht om het water tegen te houden. Zodra de storm voorbij is, gaat hij weer open. Hij doet dat met de eerder genoemde holle draaiarmen die ook wel “kerende wand” worden genoemd: aan het begin van deze storm varen ze uit uit het dok waar ze normaal inliggen, en zodra ze volledig op de rivier zijn, gaan er kleppen open waardoor het water naar binnen stroomt. De kerende wand zinkt daardoor naar de bodem van de rivier (17 meter onder NAP) waar hij terecht komt op een soort drempel van basalt. De rivier is dan volledig afgesloten en het water wordt teruggeduwd richting zee. Na afloop gaan er pompen aan om de kerende wand weer leeg te krijgen, waardoor deze weer opdrijft. Hij kan dan weer invaren en de rivier is weer beschikbaar voor scheepvaart.

Technisch is het een vernuftig staaltje vakwerk: aan het eind van iedere draaiarm zit een soort “kogelgewricht” dat functioneert als een schouder. De kogels zijn ballen van massief staal die tien meter in doorsnee zijn en 850 ton wegen. Omdat ze enorme krachten moeten doorstaan zijn ze dusdanig zwaar dat de fabrikant – Skoda – ze niet in vrachtwagens gepropt kreeg. Ze zijn daarom via een rivierschip aangevoerd. Ook de andere onderdelen zijn van enorme proporties: de krachten die de kerende wanden tijdens een zware storm te verduren krijgen lopen in de vele miljoenen Newton. Da’s net iets meer dan bij een potje armpje drukken.

Een interessante vraag is natuurlijk: hoe test je zo’n ding? Bij een standaard computerprogramma is het eenvoudig: een tester start het op en gaat er alles aan doen om het te laten crashen door testjes te verzinnen voor scenario’s die in de praktijk niet of nauwelijks voorkomen. Als het programma dan een keer vastloopt schrijft hij het op, start hij het programma opnieuw en gaat hij verder. Bij de Maeslantkering is dat iets lastiger. Het is namelijk onmogelijk om zelf even achter de knoppen plaats te nemen en gewoon maar wat te gaan spelen. De reden hiervoor is simpel: de haven van Rotterdam. Vrijwel al het scheepvaartverkeer gaat via de Nieuwe Waterweg, en als je het voor elkaar krijgt dat de kering wel afzinkt maar vervolgens niet meer opdrijft, is de voormalig grootste wereldhaven volledig onbereikbaar. Kostenpost: miljarden euro’s per dag. Slik. Toch is dat minder erg dan wanneer de kering helemaal niet uitvaart: in dat geval loopt een groot deel van Rotterdam en omgeving onder water. De kosten zijn dan nog veel hoger, om maar niet te spreken over de mensenlevens die ermee in gevaar komen.

Het testen in de praktijk is dus niet zo eenvoudig. Maar goed, als dat niet mag, hoe weten we dan of dat ding überhaupt wel werkt? Daarvoor is er elk jaar een zogenaamde functioneringssluiting: op een zaterdag in september (data die al jaren van tevoren zijn vastgelegd) wordt het volledige keringsproces in 24 uur doorlopen om te kijken of alles het nog wel doet. Buiten deze jaarlijkse test kun je dus op geen enkel moment met het ding in de praktijk aan de slag. Vergelijk het maar met dat je één keer per jaar een computerprogramma mag opstarten, een uurtje lang alle standaarddingetjes mag uitproberen, en het dan weer af moet sluiten. Niet echt een goede testbasis dus.

maeslantkering-9[5]

Een bijkomend nadeel van deze functioneringssluiting is dat de sluiting altijd in september plaats moet vinden, omdat het stormseizoen daarna begint. Tijdens het stormseizoen mag er niks qua onderhoud aan de kering gebeuren, omdat deze altijd stand-by moet zijn voor het geval er een storm aankomt (op dit moment is die kans ongeveer eens in de 50 jaar). Meestal is het tijdens die functioneringssluiting windstil en een aangename 20 graden – niet echt representatief voor een stormsituatie dus. Sterker nog: de kering is sinds de openstelling in 1996 nog niet één keer in een échte storm getest. Wel is de kering een keertje dichtgegaan tijdens een redelijk zware storm in 2007, maar toen hebben de beheerders “een handje geholpen” door de waterstand kunstmatig te verhogen zodat het peil hoog genoeg was voor een sluiting. Het is dus helemaal niet zeker of het allemaal wel goed zal gaan.

De oplossing voor dit testprobleem is om gebruik te maken van simulatoren. Je maakt dan gebruik van hulpsoftware die allerlei zaken uit de omgeving nabootst: waterstanden, krachten van de zee en de rivier, enzovoorts. Ook kan die precies uitrekenen hoe snel de kerende wand zich vult of leegt op basis van de capaciteit van pompen en kleppen en de waterkracht. Zoals je misschien begrijpt zijn deze modellen enorm lastig te maken: het is wiskunde en natuurkunde op het niveau van Einstein. Geloof me, ik heb ooit een aantal modellen op papier gezien en die leken op krabbeltekeningen die een kind van vijf zou maken. De grote vraag is dan ook: hoe testen we of onze simulatie goed is? Enorm lastige vraagstukken waar we als testteam dagelijks mee worstelen.

Inmiddels zit ik voor vandaag alweer bijna aan de 2000 woorden, dus het is wel even genoeg geweest. Het project staat momenteel nog in de startblokken, maar ik beloof om zeker een update te geven als we weer wat verder zijn!

Testing… 1… 2… (deel 3)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *