GUI testadapter met beeldherkenning

Mijn afstudeerproject bij Croonwolter&dros markeerde het begin van mijn carrière in C#. Binnen dit project heb ik een productieklare GUI testadapter op basis van beeldherkenning ontwikkeld, waarmee het testen van SCADA systemen voor grootschalige infrastructuurprojecten robuuster en realistischer is geworden.

GUI testadapter met beeldherkenning
Project info
Start
januari 2019
End
juli 2020
Complexity
7 / 10
Team size
1
Type
QAS
Stack
C# SQL xUnit / NUnit GIT

Over het project

Mijn afstudeerproject bij Croonwolter&dros was mijn eerste echte opdracht in C#, en tegelijk een project waarin direct veel verantwoordelijkheid en technische diepgang samenkwamen. Binnen de organisatie worden grootschalige infrastructuur- en utiliteitsprojecten ontwikkeld, waaronder SCADA-systemen voor bruggen en sluizen.

Deze systemen bevatten complexe grafische gebruikersinterfaces (GUI’s) met tientallen tot honderden animatieobjecten, statusindicatoren en meldingen. Elk project wordt uitvoerig getest om te controleren of het systeem zich onder verschillende omstandigheden correct gedraagt. Een onderdeel van het bestaande testsysteem controleerde de GUI door specifieke pixelkleuren te vergelijken met vooraf ingestelde configuraties.

Deze aanpak werkte, maar was kwetsbaar. Kleine wijzigingen in positie, formaat of kleur van een object zorgden ervoor dat configuraties aangepast moesten worden. Daarnaast kon het testsysteem geen echte gebruikersinteractie nabootsen; knoppen werden intern via tags aangestuurd in plaats van via muis- of toetsenbordinteractie.

De opdracht was om te onderzoeken hoe beeldherkenning kon worden ingezet om dit testsysteem robuuster, flexibeler en realistischer te maken, en om deze oplossing daadwerkelijk te realiseren en te integreren binnen het bestaande testlandschap.


De uitdaging

Het doel was om een GUI-testadapter te ontwikkelen die:

  • Visuele objecten en animaties herkent op basis van beeldherkenning

  • Teksten en meldingen kan detecteren en valideren

  • Minder gevoelig is voor kleine wijzigingen in vorm, positie of kleur

  • Bediencommando’s uitvoert zoals een echte gebruiker (muis- en toetsenbordinteractie)

  • Aansluit op het bestaande testsysteem

  • Toepasbaar is op zowel Windows als Linux

Daarbij moest gebruik worden gemaakt van een open-source beeldherkenningsbibliotheek en moest de oplossing uitbreidbaar, onderhoudbaar en betrouwbaar blijven.

Dit betekende dat ik mij moest verdiepen in:

  • Beeldverwerking en template matching

  • Tekstherkenning (OCR)

  • Detectie van animatiestaten en GUI-objecten

  • Het bepalen van mate van overeenkomst (confidence scoring)

  • Cross-platform toepasbaarheid

  • Integratie binnen een bestaand, bedrijfskritisch testsysteem


Aanpak en realisatie

Het project is uitgevoerd in drie fasen: analyse, proof-of-concept en realisatie.

In de eerste fase heb ik het bestaande testsysteem geanalyseerd, collega’s geïnterviewd en de huidige testmethodiek volledig in kaart gebracht. In de tweede fase heb ik middels een proof-of-concept aangetoond dat beeldherkenning geschikt was om GUI-objecten én teksten betrouwbaar te detecteren, inclusief positie en overeenkomstscore.

In de laatste fase heb ik de oplossing doorontwikkeld tot een volwaardig product dat in productie is genomen. De testadapter is ontwikkeld in C# en uitgebreid met een configuratiescherm waarmee testobjecten sneller en eenvoudiger kunnen worden toegevoegd en beheerd.

De uiteindelijke oplossing kon:

  • Animatieobjecten herkennen en hun toestand bepalen

  • Teksten en meldingen herkennen en valideren

  • De overeenkomst met de verwachte configuratie berekenen

  • Bediencommando’s uitvoeren via gesimuleerde gebruikersinteractie

De oplossing werd onder andere toegepast binnen het project Groot Onderhoud Bruggen en Sluizen (GOBS), waar de GUI van onder meer Urkersluis als testobject diende.


Resultaat

De nieuwe GUI-testadapter heeft het bestaande pixel-gebaseerde testsysteem aanzienlijk robuuster gemaakt. Kleine wijzigingen in GUI-elementen leidden niet langer direct tot falende tests, terwijl animaties én teksten betrouwbaar konden worden herkend en gevalideerd. Gebruikersinteracties konden daarnaast realistischer worden nagebootst.

De oplossing is daadwerkelijk in productie genomen en inzetbaar gemaakt voor bestaande en toekomstige projecten. Hiermee werd een structurele verbetering gerealiseerd binnen het testproces van SCADA-systemen.


Terugblik

Dit project markeert het begin van mijn werk met C#. Het was technisch uitdagend en vroeg om zelfstandig onderzoek, experimenteren en het vertalen van theoretische beeldverwerking naar een praktisch en productierijp systeem.

De afstudeerscriptie is beoordeeld met een 9, wat voor mij een bevestiging was van zowel de technische diepgang als de praktische toepasbaarheid van de oplossing. Na afronding van mijn studie ben ik nog enkele jaren werkzaam gebleven bij Croonwolter&dros, waar ik mijn ontwikkeling als software engineer verder heb voortgezet.

Wat ik in dit project heb geleerd, het analyseren van bestaande systemen, het kritisch bevragen van aannames en het uitwerken van een proof of concept tot een productieoplossing, vormt nog altijd de basis van mijn manier van werken.