Het was niet zómaar een game waar onze opdrachtgever ons voor wilde inschakelen. Deze game zou als actie slechts kort online staan en de verwachting was dat de traffic flink hoog zou worden vanwege het mooie prijzenaanbod. Twee weken lang, 24 uur per dag zou de game gespeeld worden - de factor TIJD speelde een belangrijke rol in het succes van de game.
![Header Image][header]
Een flink aantal redenen dus waarom downtime een absolute no-go was. Uitval van de game of haperingen in het spel mochten niet voorkomen. Kortom: een goede stresstest was onmisbaar in het development process.
Slimme test
Wat deze stresstest bijzonder uitdagend maakte, was dat de test rekening moest houden met de staat van het spel. Vaak is het zo dat een stresstest bestaat uit het meerdere malen tegelijk afspelen van een vooraf opgenomen serie aan url’s met eventuele GET
of POST
variabelen. Doordat bij dit spel alles constant in beweging is, zijn de variabelen die meegestuurd moeten worden ook steeds anders. De inhoud van deze variabelen is niet vantevoren bekend. De stresstest moest daarom ‘slim’ zijn: enige kunstmatige intelligentie was nodig, zodat de test kon anticiperen op de staat van het spel.
Deadlock voorkomen
Het bouwen van een ‘bot’ leek hier de beste oplossing. Een script dat uitgebreide kennis heeft van de game, beslissingen kan nemen en naar aanleiding daarvan bepaalde url’s kan aanroepen. Het aantal actieve bots voerden we rustig op om te zien of er iets mis zou gaan en zo ja: bij hoeveel bots.
Na deze bugfix konden we de test makkelijk opvoeren tot 500 bots
Na een aantal tests bleek dat bij ongeveer 50 simultane bots er op sommige momenten in de database een deadlock (vastloper) optrad. Een deadlock is natuurlijk iets dat je absoluut wilt voorkomen in een live-omgeving. Door gericht te testen konden we dit probleem vrij snel pinpointen en de verantwoordelijke transactie aanpassen. Na deze bugfix voerden we de test vol vertrouwen op tot 500 bots: de game bleef draaien als een zonnetje.
Het ontwikkelen van deze stresstests was geen al te ingewikkelde klus. Het kostte wel wat tijd, maar dat was het meer dan waard. De inzet van de ‘testbots’ heeft ons (en de opdrachtgever) veel hoofdpijn en stress bespaard in de periode dat de game online stond. Bij soortgelijke projecten in de toekomst gaan we deze vorm van stress test dan ook zeker vaker toepassen.