"Aan de kop zet je testdata klaar, je start de verwerking en na de verwerking controleer je de uitvoer van het proces"
Het testen van streaming data verwerking
Bij streaming data verwerking is er zoals gezegd niet één moment en proces van verwerking, omdat data niet verzameld wordt, maar verwerkt op het moment van ontstaan. In bovenstaand voorbeeld van het transactiesysteem bij een bank spaart het systeem bij streaming verwerking de transacties niet op tot het einde van de boekingsdag, maar verstuurt deze meteen op het moment van ontstaan voor verwerking naar het datawarehouse. Elke keer worden individuele transacties dus verstuurd en verwerkt, geaggregeerd met de bestaande data en opgeslagen. Over het algemeen zijn deze verwerkingsprocessen minder complex, omdat geen grote hoeveelheden data met elkaar gecombineerd, geïntegreerd en geaggregeerd worden. Het systeem verwerkt transactie voor transactie en dat is daarmee overzichtelijker. Nadeel is dat deze processen geen kop en geen staart hebben, omdat verwerking op het moment van het ontstaan van de data al start. Met andere woorden, de kraan staat continu open. Dit vergt dan ook een andere testaanpak. Je kunt testdata de pijplijn in stoppen, maar er is geen start en einde van het verwerkingsproces waar je een signaal van ontvangt dat de data verwerkt is. Dit start- en eindpunt ontbreekt omdat het verwerkingsproces, in tegenstelling tot batchverwerking, dus continu draait. Je hebt daardoor geen goede ankerpunten om je testen op in te richten. Wanneer kun je de controle van de verwerking beginnen? De complexiteit bij de testaanpak ligt daarmee op een ander vlak dan bij batchverwerking. Waar bij batchverwerking de uitdagingen in de testaanpak liggen in het testen van verschillende tijdslijnen of historische opslag van de gegevens, liggen deze uitdagingen voor het testen van een streaming data onder andere in de timing. Een oplossing hiervoor is het inbouwen van wachttijden in je testautomatisering, maar iedereen met enige ervaring in testautomatisering, bijvoorbeeld bij het testen van webpagina’s, weet dat dat eigenlijk een doodzonde is. Een andere mogelijkheid is je testautomatisering afhankelijk te maken van de status van het proces. Zo zijn er bij streaming processen wachtrijen (als er veel wordt aangeboden, moet de data geparkeerd worden als het verwerken niet meteen kan plaatsvinden) die je kunt uitvragen. Zijn alle wachtrijen leeg, dan zou alle data verwerkt moeten zijn en kun je je eindstatus van het proces controleren. Dit kun je inbouwen in je testscript, maar je zou ook testbaarheid in je systeem kunnen inbouwen, door afhankelijk van de omgeving waarop het proces draait (testomgeving of productieomgeving) eventueel een testscript te starten bij het event dat de wachtrij leeg raakt.
De tester en streaming data
Een testspecialist kan in een batch georiënteerde wereld prima uit de voeten met de voor hem of haar bekende werkwijze. Deze is namelijk niet anders dan het testen van een ander informatiesysteem. Het gaat dan om testdata klaarzetten, actie uitvoeren en controles uitvoeren. In een landschap met streaming data moet de tester echter uit een ander vaatje tappen. Door constante verwerking is onder andere timing een issue. De bekende valkuilen van testautomatisering komen hierbij om de hoek kijken.
In onze volgende blog gaan we verder inzoomen op een andere dimensie voor testers in een data logistieke wereld: gestructureerde en ongestructureerde data.