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.
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.